Professional Documents
Culture Documents
TỔNG QUAN
❒ Các nguyên lý của ❒ Giao thức truyền tải UDP
dịch vụ lớp truyền tải:
❍ Ghép/tách kênh
(multiplexing/demulti
plexing)
❍ Truyền số liệu tin cậy
❍ Điều khiển luồng (flow
control)
❍ Kiểm soát nghẽn
(congestion control)
1
NỘI DUNG
❒ Các dịch vụ lớp truyền
tải
❒ Ghép/tách kênh
(Multiplexing và
demultiplexing)
❒ Giao thức truyền tải
không kết nối UDP
❒ Các nguyên lý truyền số
liệu tin cậy
Network Tim đường va chuyên tiêp goi tin giữa cac nut
(IP, ICMP...) mang
Data Link Truyên data qua môt liên kêt giữa hai điêm nôi
(Ethernet, ADSL...) trực tiêp
Physical Truyên va nhân cac tin hiêu mang thông tin
bit trên đường truyên vât ly
2
Giao thức và dịch vụ truyền tải
application
transport
❒ Thực hiện giao tiếp logic giữa network
data link
các quá trình ứng dụng chạy physical
Tr
trên các host khác nhau
uy
ề
n
tả
❒ Các giao thức truyền tải chạy
it
ừ
đầ
trên các đầu cuối
u
cu
ối
❍ Bên truyền: chia data
đế
n
thành các phân đoạn
đầ
u
cu
(segment) và chuyển xuống
ối
lớp mạng. application
transport
❍ Bên nhận: tái lập các network
data link
segment thành data và physical
physical network
ề n
data link
Điều khiển luồng
tả
❍ physical
it
ừ
❍
u
cu
❒
iđ
data link
ến
physicalnetwork
thứ tự, không tin cậy
đầ
data link
u
physical
cu
(UDP) network
ối
data link
application
physical
❒ Các dịch vụ không được network
data link
transport
network
physical data link
hỗ trợ: physical
3
Ly do co hai chê đô truyên tai
❒ Cac ứng dung la đa dang: co loai cân đô
chinh xac cao, co loai cân nhanh (thời gian
thực)
❒ TCP: cho cac ứng dung nhay cam với lôi
(data services) vi du email, truyên file
❒ UDP: cho cac ứng dung châp nhân lôi nhưng
nhay cam với trê như VoIP, Video streaming
NỘI DUNG
❒ Các dịch vụ lớp truyền tải
❒ Ghép/tách kênh (Multiplexing và
demultiplexing)
❒ Giao thức truyền tải không kết nối UDP
❒ Các nguyên lý truyền số liệu tin cậy
4
Ghép/tách kênh
Ghép tại host tryền: Tách tại host thu:
= socket = process
application P3 P1
P1 application P2 P4 application
host 2 host 3
host 1 Chương 3-Lớp truyền tải 3-9
5
Tách kênh không kết nối
❒ Khi host nhận UDP
❒ Tạo socket với các chỉ số
segment:
port :
DatagramSocket mySocket1 = new ❍ Kiểm tra chỉ số port đích
DatagramSocket(12534); ❍ Chuyển UDP segment đến
DatagramSocket mySocket2 = new socket ứng với port này
DatagramSocket(12535);
❒ Một UDP socket được nhận
dạng bởi hai thành tố:
(địa chỉ IP đích, địa chỉ port đích)
P2 P1
P1
P3
6
Tách kênh hướng kết nối
❒ Một TCP socket được ❒ Server có thể có đồng
nhận dạng bởi bốn yếu thời nhiều TCP socket:
tố: ❍ Mỗi socket được nhận dạng
❍ source IP address bởi một bộ gồm bốn yếu tố
❍ source port number ❒ Web server có các
❍ dest IP address socket khác nhau cho mỗi
❍ dest port number kết nối với client
❒ Host nhận gói dùng tất ❍ HTTP không liên tục sẽ có
cả bốn yếu tố để chuyển các socket khác nhau cho
mỗi request
segment đến đúng
socket
P1 P4 P5 P6 P2 P1P3
SP: 5775
DP: 80
S-IP: B
D-IP:C
7
Tách kênh hướng kết nối
Threaded Web Server
P1 P4 P2 P1P3
SP: 5775
DP: 80
S-IP: B
D-IP:C
NỘI DUNG
❒ Các dịch vụ lớp truyền tải
❒ Ghép/tách kênh (Multiplexing và
demultiplexing)
❒ Giao thức truyền tải không kết nối UDP
❒ Các nguyên lý truyền số liệu tin cậy
8
UDP (User Datagram Protocol)
❒ Là giao thức truyền tải
Internet chỉ chứa tính năng Lý do đưa ra UDP?
thiết yếu.
❒ Giảm trễ: không thiết lập
❒ Được đặc tả trong RFC 768 kết nối
❒ Thuộc dịch vụ “best effort” , ❒ Đơn giản: không có trạng
các UDP segment có thể: thái kết nối tại các host
❍ Bị mất ❒ Kích thước header nhỏ
❍ Chuyển phát không đúng thứ ❒ Không phải kiểm soát nghẽn
tự
❒ Không kết nối (connectionless):
❍ Không có "bắt tay" giữa
UDP truyền và UDP nhận
❍ Mỗi UDP segment được kiểm
soát một cách độc lập với
các segment khác
Chương 3-Lớp truyền tải 3-17
UDP
❒ Thường được dùng cho các
ứng dụng streaming 32 bits
multimedia source port # dest port #
Chiều dài của
❍ Chịu thất thoát UDP segment, length checksum
❍ rate sensitive gồm header
9
UDP checksum
Mục đích: phát hiện lỗi
Ví dụ tính Checksum
❒ Lưu ý
❍ Khi cộng, số nhớ từ bit có ý nghĩa lớn nhất được
cộng vào kết quả
❒ Ví dụ: cộng hai số nguyên 16-bit
1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0
1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1
sum 1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 0
checksum 1 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1
10
NỘI DUNG
❒ Các dịch vụ lớp truyền tải
❒ Ghép/tách kênh (Multiplexing và
demultiplexing)
❒ Giao thức truyền tải không kết nối UDP
❒ Các nguyên lý truyền số liệu tin cậy
11
Truyền số liệu tin cậy (2)
rdt_send(): được gọi từ lớp trên. deliver_data(): được gọi bởi
Số liệu được chuyển qua để chuyển đến rdt để chuyển data lên lớp trên
máy thu
Host Host
truyền nhận
udt_send(): được gọi bởi rdt, rdt_rcv(): được gọi khi gói đến
để truyền gói qua kênh không tin
cậy đến máy thu
rdt: reliable data transfer protocol Chương 3-Lớp truyền tải 3-23
udt: unreliable data transfer protocol
12
Rdt1.0: truyền tin cậy qua một kênh tin cậy
❒ Kênh truyền bên dưới hoàn toàn tin cậy
❍ Không có lỗi
❍ Không mất gói
❒ Sơ đồ trạng thái tách biệt cho truyền và nhận:
❍ Máy truyền gửi data xuống kênh
❍ Máy thu đọc data từ kênh bên dưới
13
rdt2.0: đặc tả sơ đồ trạng thái
rdt_send(data)
snkpkt = make_pkt(data, checksum) Máy thu
udt_send(sndpkt)
rdt_rcv(rcvpkt) &&
isNAK(rcvpkt)
Đợi gọi Đợi ACK rdt_rcv(rcvpkt) &&
từ trên hay NAK udt_send(sndpkt) corrupt(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) &&
notcorrupt(rcvpkt)
extract(rcvpkt,data)
deliver_data(data)
udt_send(ACK)
14
rdt2.0: Hoạt động có lỗi
rdt_send(data)
snkpkt = make_pkt(data, checksum)
udt_send(sndpkt)
rdt_rcv(rcvpkt) &&
isNAK(rcvpkt)
Đợi gọi Đợi ACK rdt_rcv(rcvpkt) &&
từ trên hay NAK udt_send(sndpkt) corrupt(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) &&
notcorrupt(rcvpkt)
extract(rcvpkt,data)
deliver_data(data)
udt_send(ACK)
15
rdt2.1: máy truyền, kiểm soát mất
ACK/NAK
rdt_send(data)
sndpkt = make_pkt(0, data, checksum)
udt_send(sndpkt)
rdt_rcv(rcvpkt) &&
( corrupt(rcvpkt) ||
Đợi gọi 0 Đợi ACK
hay NAK 0
isNAK(rcvpkt) )
từ trên
udt_send(sndpkt)
rdt_rcv(rcvpkt)
&& notcorrupt(rcvpkt) rdt_rcv(rcvpkt)
&& isACK(rcvpkt) && notcorrupt(rcvpkt)
&& isACK(rcvpkt)
Λ
Λ
Đợi ACK Đợi gọi 1
hay NAK 1 từ trên
rdt_rcv(rcvpkt) &&
( corrupt(rcvpkt) ||
isNAK(rcvpkt) ) rdt_send(data)
extract(rcvpkt,data)
deliver_data(data)
sndpkt = make_pkt(ACK, chksum)
udt_send(sndpkt)
16
rdt2.2: NAK-free protocol
17
rdt3.0: các kênh lỗi và mất gói
Giả sử: kênh bên dưới Giải pháp: máy truyền đợi
cũng có thể mất gói ACK một khoảng thời
(data hay ACK) gian hợp lý
❍ checksum, seq. #, ACKs, ❒ Truyền lại nếu không thấy ACK
truyền lại là hữu ích trong thời gian đợi
nhưng không đủ ❒ Nếu gói hay ACK bị trễ:
❍ Truyền lại sẽ bị trùng,
nhưng có số tuần tự để
kiểm soát
❍ Máy thu phải chỉ ra số tuần
tự của gói đang báo nhận
ACK
❒ Yêu cầu bộ định thời đếm lui
18
rdt3.0 Hoạt động
Không mất
Mất gói
19
rdt3.0: hoạt động ARQ không liên
tục (Idle ARQ hay stop-and-wait)
sender receiver
Truyền bit đầu của gói, t = 0
Truyền bit sau cùng của gói,
t=L/R
L/R .008
U = = = 0.00027
sender 30.008
RTT + L / R microsec
20
Kỹ thuật Pipelining
Nhằm gia tăng hiệu quả sử dụng đường truyền (utilization)
sender receiver
Truyền bit đầu của gói, t = 0
Truyền bit sau cùng của gói,
t=L/R
3*L/R .024
U = = = 0.0008
sender 30.008
RTT + L / R microsecon
Chương 3-Lớp truyền tải 3-41
21
Go-Back-N
Máy truyền:
❒ Số tuần tự k-bit (seq #) trong header của gói
❒ “cửa sổ”có kích thước N, số gói truyền liên tiếp chưa có báo nhận
Gói có số tuần tự
Gói chờ báo nhận
kế tiếp Còn trống
Đã báo nhận
chưa dùng
22
Sơ đồ trạng thái của máy nhận Go-Back-N
default
udt_send(sndpkt)
rdt_rcv(rcvpkt)
&& notcurrupt(rcvpkt)
Λ && hasseqnum(rcvpkt,expectedseqnum)
expectedseqnum=1 Đợi extract(rcvpkt,data)
sndpkt = deliver_data(data)
make_pkt(expectedseqnum,ACK,chksum) sndpkt = make_pkt(expectedseqnum,ACK,chksum)
udt_send(sndpkt)
expectedseqnum++
23
Selective Repeat
❒ Máy thu báo nhận cho từng gói mà nó nhận tốt
❍ Đệm gói khi cần (chờ đúng thứ tự để giao cho giao thức
cao hơn)
❒ Máy truyền chỉ gửi lại gói không nhận được ACK
❍ Bộ định thời cho mỗi gói truyền chưa có báo nhận
❒ Cửa sổ truyền
❍ Kích thước N, N chỉ số tuần tự liên tục được gán cho các
gói để truyền đi
❍ Giới hạn số gói được truyền liên tục
Ngoài trật tự
nhưng đã Bộ đệm trống
báo nhận còn chứa thêm
Cần nhưng Khe trống
chưa thấy
Cửa sồ nhận
24
Selective repeat
Máy truyền Máy thu
data từ trên : Gói n trong khoảng của sổ
❒ Nếu tuần tự kế sẵn sàng, thu
truyền gói (cửa sổ còn chỗ) ❒ Gửi ACK(n)
timeout(n): ❒ Không đúng trật tự: đệm lại
❒ Truyền lại gói n, khởi động ❒ Đúng trật tự: chuyển giao
lại bộ định thời cho lớp trên, cửa sổ hướng
đến chỉ số gói kế tiếp
ACK(n) trong khoảng tuần tự
trong cửa sổ: Gói n chờ nhận đến
❒ Loại chỉ số tuần tự n khỏi ❒ Gửi ACK(n)
danh sách đợi
❒ Tăng biên dưới của cửa sổ
lên 1
25
Ví dụ
❒ seq #’s: 0, 1, 2, 3
❒ window size=3
❒ Quan hệ giữa chỉ số
tuần tự và kích thước
cửa sổ
HẾT CHƯƠNG 3
26