Bài giảng Mạng máy tính - Chương III.3: Tầng vận chuyển

tầng vận chuyển - 2

Thực thi ở end-system

 Bên gởi: thực hiện Dồn kênh

 Nhận dữ liệu từ tầng ứng dụng (từ các socket)

 Phân đoạn thông điệp ở tầng ứng dụng thành các segment

 Dán nhãn dữ liệu: đóng gói theo giao thức tại tầng Transport

 Chuyển các segment xuống tầng mạng (network layer)

 Bên nhận: thực hiện Phân kênh

 Nhận các segment từ tầng mạng

 Phân rã các segment thành thông điệp tầng ứng dụng

 Chuyển thông điệp lên tầng ứng dụng (đến socket tương

ứng)

pdf 69 trang yennguyen 2740
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Mạng máy tính - Chương III.3: Tầng vận chuyển", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Bài giảng Mạng máy tính - Chương III.3: Tầng vận chuyển

Bài giảng Mạng máy tính - Chương III.3: Tầng vận chuyển
Chương 03 
Tầng vận chuyển 
MẠNG MÁY TÍNH 
Tháng 09/2011 
Chức năng - 1 
Cung cấp kênh truyền dữ liệu ở 
mức logic giữa 2 tiến trình trên 2 
máy 
Application 
Presentation 
Session 
Data link 
Physical 
Network 
Transport 
network 
data link 
physical 
network 
data link 
physical 
network 
data link 
physical 
network 
data link 
physical 
network 
data link 
physical 
application 
transport 
network 
data link 
physical 
application 
transport 
network 
data link 
physical 
li ti 
tr rt 
t r 
t li 
i l 
pplic tion 
transport 
net ork 
data link 
physical 2 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh 
Nội dung 
Giới thiệu 
Nguyên tắc truyền dữ liệu đáng tin cậy 
Giao thức TCP 
Giao thức UDP 
3 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh 
Nhắc lại 
source 
application 
transport 
network 
link 
physical 
Ht Hn M 
segment Ht 
packet 
destination 
application 
transport 
network 
link 
physical 
Ht Hn M 
Ht M 
M 
network 
link 
physical 
link 
physical 
Ht Hn Hl M 
Ht Hn M 
Ht Hn M 
Ht Hn Hl M 
router 
switch 
message M 
M 
frame 
4 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh 
tầng vận chuyển - 1 
application 
transport 
network 
M 
P4 
application 
transport 
network 
H n segment 
application 
transport 
network 
P1 
M 
M M 
P2 P3 
D D 
M 
Ht D Ht 
H n segment 
D Ht D 
Process nhận? 
Gởi đến Process? 
Ht 
5 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh 
tầng vận chuyển - 2 
Thực thi ở end-system 
Bên gởi: thực hiện Dồn kênh 
 Nhận dữ liệu từ tầng ứng dụng (từ các socket) 
 Phân đoạn thông điệp ở tầng ứng dụng thành các segment 
 Dán nhãn dữ liệu: đóng gói theo giao thức tại tầng Transport 
 Chuyển các segment xuống tầng mạng (network layer) 
Bên nhận: thực hiện Phân kênh 
 Nhận các segment từ tầng mạng 
 Phân rã các segment thành thông điệp tầng ứng dụng 
 Chuyển thông điệp lên tầng ứng dụng (đến socket tương 
ứng) 
6 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh 
tầng vận chuyển - 3 
Hỗ trợ 
 Truyền dữ liệu đáng tin cậy 
• Điều khiển luồng 
• Điều khiển tắt nghẽn 
• Thiết lập và duy trì kết nối 
 Truyền dữ liệu không đáng tin cậy 
• Nổ lực gởi dữ liệu hiệu quả nhất 
Không hỗ trợ 
 Đảm bảo thời gian trễ 
 Đảm bảo băng thông 
7 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh 
Dồn kênh – Phân kênh - 1 
Dồn kênh (Multiplexing): 
 Thực hiện tại bên gởi 
 Thu thập dữ liệu từ các socket 
 dán nhãn dữ liệu với 1 header 
Phân kênh (Demultiplexing): 
 Thực hiện tại bên nhận 
 phân phối các segment nhận được cho socket tương ứng 
Khi đóng gói dữ liệu ở tầng transport, header sẽ 
thêm vào: 
 Source port 
 Destination port 
8 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh 
Dồn kênh – Phân kênh - 2 
source port # dest port # 
32 bits 
application 
data 
(message) 
other header fields 
Cấu trúc của một segment 
9 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh 
P1 P1 
5775 
P2 
6428 
Dồn kênh – Phân kênh - 3 
Client 
IP:A 
server 
IP: B 
SP: 6428 
DP: 5775 
SP: 5775 
DP: 6428 
10 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh 
Nội dung 
Giới thiệu 
Giao thức UDP 
Nguyên tắc truyền dữ liệu đáng tin cậy 
Giao thức TCP 
11 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh 
UDP - 1 
UDP: User Datagram Protocol [rfc768] 
 Dịch vụ “nỗ lực” để truyền nhanh 
 Gói tin UDP có thể: 
• Mất 
• Không đúng thứ tự 
 Không kết nối: 
• Không có handshaking giữa bên gửi và nhận 
• Mỗi gói tin UDP được xử lý độc lập 
• Không có trạng thái kết nối 
12 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh 
UDP - 2 
source port # dest port # 
32 bits 
Application 
data 
(message) 
UDP segment format 
length checksum 
Chiều dài gói tin 
(tính cả header) 
13 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh 
UDP - 3 
Application 
Transport 
.. 
Application 
Transport 
.. 
M 
U1 U2 U3 
U 
Các segment đến 
không đúng thứ tự??? 
Mất segment? 
14 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh 
UDP - 4 
Tại sao lại sử dụng UDP? 
 Không thiết lập kết nối 
 Đơn giản: 
• không quản lý trạng thái nối kết 
• Không kiểm soát luồng 
 Header nhỏ 
 Nhanh 
Truyền thông tin cậy qua UDP 
 Tầng application phát hiện và phục hồi lỗi 
15 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh 
UDP - 5 
Thường sử dụng cho các ứng dụng multimedia 
 Chịu lỗi 
 Yêu cầu tốc độ 
Một số ứng dụng sử dụng UDP 
 DNS 
 SNMP 
 TFTP 
  
16 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh 
Nội dung 
Giới thiệu 
Nguyên tắc truyền dữ liệu đáng tin cậy 
Giao thức TCP 
Giao thức UDP 
17 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh 
Bài toán 
Làm sao để truyền 
đáng tin cậy??? 
18 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh 
Nguyên lý truyền dữ liệu đáng tin cậy 
Đặc tính của đường truyền không tin cậy quyết định độ 
phức tạp của nghi thức truyền tin cậy 
Bên gửi Bên nhận 
Đường truyền tin cậy 
tr
a
n
s
p
o
rt
Nghi thức 
truyền tin cậy 
Nghi thức 
truyền tin cậy 
Đường truyền không tin cậy 
a. Cung cấp dvụ b. Triển khai dvụ 
a
p
p
lic
a
ti
o
n
19 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh 
Nội dung 
Nghi thức truyền dữ liệu đáng tin cậy 
 RDT 1.0 
 RDT 2.0, RDT 2.1, RDT 2.2 
 RDT 3.0 
Pipeline 
 Go-back-N 
 Gởi lại có chọn 
20 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh 
Giải quyết lỗi bit 
Bên gởi 
 Gởi kèm theo thông tin kiểm tra lỗi 
 Sử dụng các phương pháp kiểm tra lỗi 
• Checksum, parity checkbit, CRC,.. 
Bên nhận 
 Kiểm tra có xảy ra lỗi bit? 
 Hành động khi xảy ra lỗi bit? 
• Báo về bên gởi 
21 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh 
Giải quyết mất gói 
Bên nhận 
 Gởi tín hiệu báo 
• Gởi gói tin báo hiệu ACK, NAK 
Bên gởi 
 Định nghĩa trường hợp mất gói 
 Chờ nhận tín hiệu báo 
 Hành động khi phát hiện mất gói 
22 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh 
Giao thức RDT 
RDT = Reliable Data Transfer 
Nguyên tắc: dừng và chờ 
 Bên gởi 
• Gởi gói tin kèm theo thông tin kiểm tra lỗi 
• Dừng và chờ đến khi nào gói tin vừa gởi đến được bên nhận an 
toàn: nhận được gói tin ACK 
• Gởi lại khi có lỗi xảy ra: lỗi bit, mất gói 
 Bên nhận: 
• Kiểm tra lỗi, trùng lắp dữ liệu 
• Gởi gói tin phản hồi 
Phiên bản: 
 RDT 1.0 
 RDT 2.0, RDT 2.1, RDT 2.2 
 RDT 3.0 
23 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh 
Nguyên lý pipe line 
Cho phép gởi nhiều gói tin khi chưa nhận ACK 
Sử dụng buffer để lưu các gói tin 
 Bên gởi: lưu gói tin đã gởi nhưng chưa ack 
 Bên nhận: lưu gói tin đã nhận đúng nhưng chưa đúng thứ tự 
Giải quyết mất gói 
 Go back N 
 Selective Repeat (gởi lại có chọn) 
24 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh 
Rdt1.0 : đường truyền lý tưởng 
 Giả thiết: kênh truyền bên dưới tuyệt đối 
 Không lỗi bit 
 Không mất gói tin 
 FSM (finite state machine) cho bên gửi và nhận 
 Bên gửi chuyển dữ liệu xuống kênh bên dưới 
 Bên nhận đọc dữ liệu từ kênh truyền bên dưới 
Wait for 
call from 
above 
packet = 
make_pkt(data) 
udt_send(packet) 
rdt_send(data) 
extract (packet,data) 
deliver_data(data) 
Wait for 
call from 
below 
rdt_rcv(packet) 
sender receiver 
25 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh 
Rdt2.0 kênh truyền có lỗi bit - 1 
Giả thiết: kênh truyền có thể xảy ra lỗi bit 
 Sử dụng các cơ chế kiểm tra lỗi 
• checksum 
Làm sao để khắc phục khi nhận ra lỗi? 
 Acknowledgement(ACKs): bên nhận báo cho bên gửi đã 
nhận được dữ liệu 
 Nagetive acknowledgement(NAKs): bên nhận báo gói tin 
bị lỗi 
 Bên gửi sẽ gửi lại gói tin khi nhận NAK 
So với rdt1.0, rdt2.0: 
 Nhận dạng lỗi 
 Cơ chế phản hồi: ACK, NAK 
26 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh 
Rdt2.0 FSM - 2 
Wait for 
call from 
above 
extract(rcvpkt,data) 
deliver_data(data) 
udt_send(ACK) 
rdt_rcv(rcvpkt) && 
 notcorrupt(rcvpkt) 
rdt_rcv(rcvpkt) && isACK(rcvpkt) 
udt_send(sndpkt) 
rdt_rcv(rcvpkt) && 
 isNAK(rcvpkt) 
udt_send(NAK) 
rdt_rcv(rcvpkt) && 
 corrupt(rcvpkt) 
Wait for 
ACK or 
NAK 
Wait for 
call from 
below sender 
receiver snkpkt = make_pkt(data, checksum) 
udt_send(sndpkt) 
rdt_send(data) 
L 
ACK/NAK sai??? 
27 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh 
Rdt2.0 - 3 
 Giải quyết: 
 Bên gửi gửi lại gói tin khi nhận ACK/NAK sai 
 Bên gửi đánh số thứ tự cho mỗi gói tin 
 Bên nhận sẽ loại bỏ gói tin trùng. 
 Dừng và đợi 
 Bên gửi gửi một gói tin và chờ phản hồi từ bên nhận 
28 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh 
Rdt2.1 bên gửi xử lí lỗi ACK/NAK 
Wait for 
call 0 from 
above 
sndpkt = make_pkt(0, data, checksum) 
udt_send(sndpkt) 
rdt_send(data) 
Wait for 
ACK or 
NAK 0 udt_send(sndpkt) 
rdt_rcv(rcvpkt) && 
( corrupt(rcvpkt) || 
isNAK(rcvpkt) ) 
sndpkt = make_pkt(1, data, checksum) 
udt_send(sndpkt) 
rdt_send(data) 
rdt_rcv(rcvpkt) 
&& notcorrupt(rcvpkt) 
&& isACK(rcvpkt) 
udt_send(sndpkt) 
rdt_rcv(rcvpkt) && 
( corrupt(rcvpkt) || 
isNAK(rcvpkt) ) 
rdt_rcv(rcvpkt) 
&& notcorrupt(rcvpkt) 
&& isACK(rcvpkt) 
Wait for 
 call 1 from 
above 
Wait for 
ACK or 
NAK 1 
L 
L 
29 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh 
Rdt2.1 bên nhận xử lí lỗi ACK/NAK 
Wait for 
0 from 
below 
sndpkt = make_pkt(NAK, chksum) 
udt_send(sndpkt) 
rdt_rcv(rcvpkt) && 
 not corrupt(rcvpkt) && 
 has_seq0(rcvpkt) 
rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) 
 && has_seq1(rcvpkt) 
extract(rcvpkt,data) 
deliver_data(data) 
sndpkt = make_pkt(ACK, chksum) 
udt_send(sndpkt) 
Wait for 
1 from 
below 
rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) 
 && has_seq0(rcvpkt) 
extract(rcvpkt,data) 
deliver_data(data) 
sndpkt = make_pkt(ACK, chksum) 
udt_send(sndpkt) 
rdt_rcv(rcvpkt) && (corrupt(rcvpkt) 
sndpkt = make_pkt(ACK, chksum) 
udt_send(sndpkt) 
rdt_rcv(rcvpkt) && 
 not corrupt(rcvpkt) && 
 has_seq1(rcvpkt) 
rdt_rcv(rcvpkt) && (corrupt(rcvpkt) 
sndpkt = make_pkt(ACK, chksum) 
udt_send(sndpkt) 
sndpkt = make_pkt(NAK, chksum) 
udt_send(sndpkt) 
30 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh 
Rdt2.1 thảo luận 
Bên gửi 
Thêm số thứ tự vào gói 
tin 
 0 và 1??? 
Phải kiểm tra: ACK/NAK 
sai không 
Phải nhớ gói tin hiện thời 
có thứ tự 0 hay 1 
Bên nhận 
• Phải kiểm tra nếu 
nhận trùng 
– So sánh trạng thái 
đang chờ (0 hay 1) với 
trạng thái gói tin nhận 
được 
• Bên nhận không biết 
ACK/NAK cuối cùng 
có chuyển tới bên gửi 
an toàn không? 
31 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh 
Cơ chế truyền đáng tin cậy - RDT 
Cơ chế: 
 Checksum: kiểm tra có lỗi xảy ra không? 
 ACK: bên nhận nhận đúng gói tin 
 NAK: bên nhận nhận sai gói tin 
 Sequence Number (1 bit = 0 hoặc 1) 
32 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh 
Rdt2.2 không sử dụng NAK 
 Hoạt động giống rdt2.1, nhưng không dùng NAK 
 Bên nhận gửi ACK cho gói tin không lỗi nhận được cuối 
cùng. 
 Bên nhận phải thêm số thứ tự vào gói tin ACK 
 Bên gửi nhận trùng gói tin ACK xem như gói tin NAK 
 gửi lại gói vừa gởi vì gói này chưa nhận được ACK 
33 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh 
Rdt2.2: bên gửi và bên nhận 
Wait for call 
0 from 
above 
sndpkt = make_pkt(0, data, checksum) 
udt_send(sndpkt) 
rdt_send(data) 
udt_send(sndpkt) 
rdt_rcv(rcvpkt) && 
( corrupt(rcvpkt) || 
 isACK(rcvpkt,1) ) 
rdt_rcv(rcvpkt) 
&& notcorrupt(rcvpkt) 
&& isACK(rcvpkt,0) 
Wait for 
ACK 
0 
sender FSM 
fragment 
Wait for 
1 from 
below 
rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) 
 && has_seq1(rcvpkt) 
extract(rcvpkt,data) 
deliver_data(data) 
sndpkt = make_pkt(ACK1, chksum) 
udt_send(sndpkt) 
rdt_rcv(rcvpkt) && 
 (corrupt(rcvpkt) || 
has_seq0(rcvpkt) ) 
sndpkt = make_pkt(ACK0, 
chksum) 
udt_send(sndpkt) 
receiver FSM 
fragment 
L 
34 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh 
Rdt3.0 kênh truyền có lỗi và mất - 1 
 Giả thiết: 
 Lỗi bit 
 mất gói 
 Checksum, số thứ tự, ACKs, 
truyền lại vẫn chưa đủ 
 Xử lý? 
Giải pháp: 
• bên gửi đợi một khoảng thời 
gian hợp lí cho ACK 
• Gửi lại nếu không nhận đc 
ACK trong khoảng thời gian 
này 
• Nếu gói tin (hay ACK) bị trễ 
(không mất) 
– Gửi lại có thể trùng, phải đánh 
số thứ tự 
– Bên nhận phải xác định thứ tự 
của gói tin đã ACK 
• Yêu cầu đếm thời gian 
35 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh 
Rdt3.0 bên gửi - 2 
sndpkt = make_pkt(0, data, checksum) 
udt_send(sndpkt) 
start_timer 
rdt_send(data) 
Wait 
for 
ACK0 
rdt_rcv(rcvpkt) && 
( corrupt(rcvpkt) || 
isACK(rcvpkt,1) ) 
Wait for 
call 1 from 
above 
sndpkt = make_pkt(1, data, checksum) 
udt_send(sndpkt) 
start_timer 
rdt_send(data) 
rdt_rcv(rcvpkt) 
&& notcorrupt(rcvpkt) 
&& isACK(rcvpkt,0) 
rdt_rcv(rcvpkt) && 
( corrupt(rcvpkt) || 
isACK(rcvpkt,0) ) 
rdt_rcv(rcvpkt) 
&& notcorrupt(rcvpkt) 
&& isACK(rcvpkt,1) 
stop_timer 
stop_timer 
udt_send(sndpkt) 
start_timer 
timeout 
udt_send(sndpkt) 
start_timer 
timeout 
Wait for 
call 0from 
above 
Wait 
for 
ACK1 
L 
rdt_rcv(rcvpkt) 
L 
L 
36 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh 
Rdt3.0 - 3 
37 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh 
Rdt3.0 - 4 
38 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh 
Rdt3.0 dừng và đợi - 5 
39 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh 
Rdt3.0 – Hiệu quả - 6 
 Rdt3.0 làm việc, nhưng không hiệu quả 
 Vd:băng thông 1Gbps, 15ms end2end delay, gói tin 8Kb 
• Usender : tỉ lệ thời gian bên gửi gửi gói tin 
• Nghi thức đã hạn chế việc sử dụng tài nguyên mạng 
40 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh 
Nghi thức pipeline - 1 
 Pipelining: bên gửi cho phép gửi nhiều gói tin khi chưa 
được báo nhận (ACK) 
 Gói tin: sắp theo thứ tự tăng dần 
 Dùng bộ đệm ở bên gửi hoặc/và bên nhận: “Sliding window” 
• Có hai giải pháp chính của nghi thức pipeline: 
– go-Back-N 
– gửi lại có chọn. 
41 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh 
Nghi thức pipeline - 2 
Tăng hiệu quả sử 
dụng lên 3 lần 
42 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh 
Go-Back-N – 1 
Số thứ tự: k-bit 
“window” = N số gói tin được gởi liên tục 
không ACK 
• ACK(seq#): nhận đúng đến seq# 
43 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh 
Go-Back-N: bên nhận - 2 
 Bên gởi: 
 Sử dụng buffer (“window”) để lưu các gói tin đã gởi nhưng chưa 
nhận được ACK 
 Gởi nếu gói tin có thể đưa vào “window” 
 Thiết lập đồng hồ cho gói tin cũ nhất (gói tin ở đầu “window”) 
 Timeout: gửi lại tất cả các gói tin chưa ACK trong window 
 Bên nhận: 
 Chỉ gửi ACK cho gói tin đã nhận đúng với số thứ tự cao nhất 
• Có thể phát sinh trùng ACK 
 Chỉ cần nhớ số thứ tự đang đợi 
 Gói tin không theo thứ tự: 
• Loại bỏ: không có bộ đệm 
• Gửi lại ACK với số thứ tự lớn nhất 
44 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh 
Go-Back-N – ví dụ - 3 
45 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh 
Gửi lại có chọn - 1 
Bên nhận: 
 Báo nhận riêng lẻ từng gói tin nhận đúng 
• ACK(seq#): đã nhận đúng gói tin seq# 
 dùng bộ đệm để lưu các gói tin không đúng thứ tự 
 Nhận 1 gói tin không đúng thứ tự 
• Đưa vào bộ đệm nếu còn chỗ 
• Hủy gói tin 
 Bên gởi: 
 Có đồng hồ cho mỗi gói tin chưa nhận đc ACK 
 Time out: chỉ gửi những gói tin không nhận được ACK 
46 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh 
Gửi lại có chọn - 2 
Bắt đầu bên gửi Thứ tự kế tiếp 
Bắt đầu bên nhận 
Thứ tự bên gửi 
Thứ tự bên nhận 
Đã ACK 
Gửi, chưa ACK 
Chưa dùng 
không dùng đc 
Sai thứ tự 
nhưng đã ACK 
Đang đợi, chưa 
nhận đc 
Có thể nhận đc 
không dùng đc 
47 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh 
Gửi lại có chọn - 4 
48 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh 
Gửi lại có chọn - 5 
 Vd: 
 Số thứ tự:0,1,2,3 
 Window size: 3 
Mối quan hệ giữa số thứ 
tự và window size??? 
49 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh 
Nội dung 
Giới thiệu 
Nguyên tắc truyền dữ liệu đáng tin cậy 
Giao thức TCP 
Giao thức UDP 
50 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh 
TCP 
Giới thiệu 
Nguyên tắc hoạt động 
Quản lý kết nối 
Điều khiển luồng 
Điều khiển tắt nghẽn 
51 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh 
TCP – giới thiệu - 1 
TCP = Transport Control Protocol 
 rfc: 793,1122,1323,2018,2581 
 Point – to – point 
• 1 người gởi và 1 người nhận 
 Full-duplex 
• Dữ liệu truyền 2 chiều trên cùng kết nối 
• MSS: maximum segment size 
 Hướng kết nối 
• Handshaking trước khi gửi dữ liệu 
52 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh 
TCP - giới thiệu - 2 
 TCP = Transport Control Protocol 
 TCP cung cấp kết nối theo kiểu dòng (stream-of-bytes) 
• Không có ranh giới giữa các gói tin 
• Sử dụng buffer gởi và nhận 
 Tin cậy, theo thứ tự 
 Pipeline 
 Kiểm soát luồng 
 Kiểm soát tắt nghẽn 
socket
door
TCP 
send buffer
TCP 
receive buffer
socket
door
segment
application
writes data
application
reads data
53 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh 
TCP – cấu trúc gói tin 
source port # dest port # 
32 bits 
application 
data 
(variable length) 
sequence number 
acknowledgement number 
rcvr window size 
ptr urgent data checksum 
F S R P A U 
head 
len 
not 
used 
Options (variable length) 
URG: urgent data 
(generally not used) 
ACK: ACK # 
valid 
PSH: push data now 
(generally not used) 
RST, SYN, FIN: 
connection estab 
(setup, teardown 
commands) 
# bytes 
rcvr willing 
to accept 
54 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh 
TCP – định nghĩa các trường - 1 
Source & destination port 
 Port của nơi gởi và nơi nhận 
Sequence number 
 Số thứ tự của byte đầu tiên trong phần data của gói tin 
Acknowledgment number 
 Số thứ tự của byte đang mong chờ nhận tiếp theo 
Window size 
 Thông báo có thể nhận bao nhiêu byte sau byte cuối 
cùng được xác nhận đã nhận 
55 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh 
TCP – định nghĩa các trường - 2 
 Checksum 
 Checksum TCP header 
 Urgent pointer 
 Chỉ đến dữ liệu khẩn trong trường dữ liệu 
 Cờ: 
 URG = trường urgent pointer valid 
 ACK = trường Acknowledge number valid 
 PSH = dữ liệu cần phân phối ngay 
 RST = chỉ định nối kết cần thiết lập lại (reset) 
 SYN = sử dụng để thiết lập kết nối 
 FIN = sử dụng để đóng kết nối 
56 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh 
TCP – ví dụ 
Host A Host B 
User 
types 
‘C’ 
host ACKs 
receipt 
of echoed 
‘C’ 
host ACKs 
receipt of 
‘C’, echoes 
back ‘C’ 
simple telnet scenario 
Seq: số thứ tự của byte 
đầu tiên trong vùng data 
ACK: số thứ tự của byte 
chờ nhận tiếp theo 
57 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh 
TCP – TRUYỀN DỮ LIỆU ĐÁNG TIN CẬY 
Nguyên tắc: dùng pipeline 
 Bên gỏi đính kèm thông tin kiểm tra lỗi trong mỗi gói tin 
 Sử dụng ACK để báo nhận 
 Thiết lập thời gian timeout khi cho gói tin ở đầu buffer 
 Gởi lại toàn bộ dữ liệu trong buffer khi hết time out 
58 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh 
TCP – bên gởi 
Nhận dữ liệu từ tầng ứng dụng 
 Tạo các segment 
 Bật đồng hồ (nếu chưa bật) 
 Thiết lập thời gian chờ, timeout 
Nhận gói tin ACK 
 Nếu trước đó chưa nhận: trượt “cửa sổ” 
 Thiết lập lại thời gian của đồng hồ 
Hết time out 
 Gởi lại dữ liệu còn trong buffer 
 Reset đồng hồ 
59 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh 
TCP – bên nhận 
Nhận gói tin đúng thứ tự 
 Chấp nhận 
 Gởi ACK về cho bên gởi 
Nhận gói tin không đúng thứ tự 
 Phát hiện “khoảng trống dữ liệu (GAP)” 
 Gởi ACK trùng 
60 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh 
TCP – ví dụ 
Host A 
time 
premature timeout 
Host B 
Se
q
=9
2
 t
im
eo
u
t 
Host A 
loss 
ti
m
eo
u
t 
lost ACK scenario 
Host B 
X 
time 
Se
q
=9
2 
ti
m
eo
u
t 
SendBase 
= 120 
SendBase 
= 120 
Sendbase 
= 100 
61 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh 
TCP – thiết lập kết nối 
Thực hiện thao tác bắt tay 3 lần (Three way 
handshake) 
Máy A Máy B 
SYN_RCVD state 
ESTABLISHED state 
62 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh 
TCP – đóng kết nối 
Thực hiện thao tác bắt tay 2 lần 
client server 
close 
close 
closed 
ti
m
e
d
 w
ai
t 
63 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh 
TCP – quản lý kết nối 
TCP client 
lifecycle 
TCP server 
lifecycle 
64 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh 
TCP - Điều khiển luồng - 1 
Nguyên nhân: 
 Bên gởi làm tràn bộ đệm của bên nhận khi gởi quá 
nhiều dữ liệu hoặc gởi quá nhanh 
Sử dụng trường “window size” 
 Window size: lượng DL có thể đưa vào buffer 
65 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh 
TCP - Điều khiển luồng - 2 
Ứng dụng 
gửi 2K 
Bên gửi 
bị khóa 
Bên gửi có thể 
gửi đến 2K 
Empty 
2K 
Full 
2K 
2K 1K 
0 4K 
Bộ đệm 
 bên nhận Nhận Gửi 
Ứng dụng 
gửi 2K 
66 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh 
Kiểm soát tắt nghẽn - 1 
 Vấn đề: 1 node có thể nhận dữ liệu từ nhiều nguồn 
 Buffer: giới hạn 
 gói tin: đến ồ ạt 
 xử lý không kịp tắt nghẽn 
 Hiện tượng: 
 Mất gói 
 Delay cao 
 Sử dụng đường truyền không hiệu quả 
unlimited shared 
output link buffers 
Host A 
lin : original data 
Host B 
lout 
67 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh 
Kiểm soát tắt nghẽn - 2 
Giải quyết trong TCP: 
 Bên gởi: 
• Thiết lập tốc độ gởi dựa 
trên phản hồi từ bên 
nhận 
– Nhận ACK 
– Mất gói 
– Độ trễ gói tin 
 Tốc độ gởi: có 2 pha 
– Slow-Start 
– Congestion Avoidance 
Host A 
R
T
T 
Host B 
time 
68 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh 
Tài liệu tham khảo 
Bài giảng của J.F Kurose and K.W. Ross về 
Computer Networking: A Top Down Approach 
69 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh 

File đính kèm:

  • pdfbai_giang_mang_may_tinh_chuong_iii_3_tang_van_chuyen.pdf