Professional Documents
Culture Documents
Tầng Vận chuyển
Tầng Vận chuyển
CHỨC NĂNG - 1
03/2011
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
Physical
application
application
transport
transport
network
network
data
data link
link 2
physical
physical
NỘI DUNG
03/2011
Giới thiệu
Nguyên tắc truyền dữ liệu đáng tin cậy
3
NHẮC LẠI
03/2011
source
message M application
switch
destination Hn Ht M network
M application Hl Hn Ht M link Hn Ht M
Ht M transport physical
Hn Ht M network
link router
4
physical
TẦNG VẬN CHUYỂN -1
03/2011
BM MMT&VT - KHOA CNTT - ĐH KHTN TP.HCM
P2 P3
M M
5
TẦNG VẬN CHUYỂN -2
03/2011
Thực thi ở end-system
Bên gởi: thực hiện Dồn kênh
03/2011
Hỗ trợ
Truyền dữ liệu đáng tin cậy
7
DỒN KÊNH – PHÂN KÊNH - 1
03/2011
Dồn kênh (Multiplexing):
Thực hiện tại bên gởi
8
DỒN KÊNH – PHÂN KÊNH - 2
03/2011
32 bits
application
data
(message)
9
DỒN KÊNH – PHÂN KÊNH - 3
03/2011
BM MMT&VT - KHOA CNTT - ĐH KHTN TP.HCM
P2 P1
P1
6428 5775
SP: 6428
DP: 5775
SP: 5775
server Client
DP: 6428
IP: B IP:A
10
NỘI DUNG
03/2011
Giới thiệu
Nguyên tắc truyền dữ liệu đáng tin cậy
11
03/2011 BM MMT&VT - KHOA CNTT - ĐH KHTN TP.HCM
12
Làm sao để truyền
đáng tin cậy???
BÀI TOÁN
NGUYÊN LÝ TRUYỀN DỮ LIỆU ĐÁNG TIN CẬY
03/2011
application
Đặ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
13
NỘI DUNG
03/2011
Nghi thức truyền dữ liệu đáng tin cậy
RDT 1.0
Pipeline
Go-back-N
Gởi lại có chọn
14
GIẢI QUYẾT LỖI BIT
03/2011
Bên gởi
Gởi kèm theo thông tin kiểm tra lỗi
15
GIẢI QUYẾT MẤT GÓI
03/2011
Bên nhận
Gởi tín hiệu báo
16
GIAO THỨC RDT
03/2011
RDT = Reliable Data Transfer
Nguyên tắc: dừng và chờ
03/2011
Cho phép gởi nhiều gói tin khi chưa nhận ACK
03/2011
Giả thiết: kênh truyền bên dưới tuyệt đối
Không lỗi bit
03/2011
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
20
RDT2.0 FSM - 2
03/2011
rdt_send(data)
snkpkt = make_pkt(data, checksum) receiver
03/2011
Giải quyết:
Bên gửi gửi lại gói tin khi nhận ACK/NAK sai
22
RDT2.1 BÊN GỬI XỬ LÍ LỖI ACK/NAK
03/2011
rdt_send(data)
sndpkt = make_pkt(0, data, checksum)
03/2011
rdt_rcv(rcvpkt) && notcorrupt(rcvpkt)
&& has_seq0(rcvpkt)
03/2011
Bên gửi Bên nhận
03/2011
Cơ chế:
Checksum: kiểm tra có lỗi xảy ra không?
26
RDT2.2 KHÔNG SỬ DỤNG NAK
03/2011
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
27
RDT2.2: BÊN GỬI VÀ BÊN NHẬN
03/2011
rdt_send(data)
sndpkt = make_pkt(0, data, checksum)
03/2011
Giả thiết: Giải pháp:
Lỗi bit • bên gửi đợi một khoảng
03/2011
rdt_rcv(rcvpkt) &&
rdt_send(data) ( corrupt(rcvpkt) ||
isACK(rcvpkt,1) )
sndpkt = make_pkt(0, data, checksum)
udt_send(sndpkt)
03/2011
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
34
NGHI THỨC PIPELINE - 1
03/2011
Pipelining: bên gửi cho phép gửi nhiều gói tin khi chưa
được báo nhận (ACK)
03/2011
BM MMT&VT - KHOA CNTT - ĐH KHTN TP.HCM
Tăng hiệu quả sử
dụng lên 3 lần
36
GO-BACK-N – 1
03/2011
Số thứ tự: k-bit
03/2011
Bên gởi:
Sử dụng buffer (“window”) để lưu các gói tin đã gởi nhưng
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
38
03/2011 BM MMT&VT - KHOA CNTT - ĐH KHTN TP.HCM
39
GO-BACK-N – VÍ DỤ - 3
GỬI LẠI CÓ CHỌN - 1
03/2011
Bên nhận:
Báo nhận riêng lẻ từng gói tin nhận đúng
40
GỬI LẠI CÓ CHỌN - 2
03/2011
Bắt đầu bên gửi Thứ tự kế tiếp
Đã ACK Chưa dùng
Sai thứ tự
Có thể nhận đc
nhưng đã ACK
03/2011
Vd:
Số thứ tự:0,1,2,3
43
NỘI DUNG
03/2011
Giới thiệu
Nguyên tắc truyền dữ liệu đáng tin cậy
44
TCP
03/2011
Giới thiệu
Nguyên tắc hoạt động
45
TCP – GIỚI THIỆU - 1
03/2011
TCP = Transport Control Protocol
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
03/2011
TCP = Transport Control Protocol
Pipeline
Kiểm soát luồng
03/2011
32 bits
URG: urgent data
source port # dest port #
48
TCP – ĐỊNH NGHĨA CÁC TRƯỜNG - 1
03/2011
Source & destination port
Port của nơi gởi và nơi nhận
49
TCP – ĐỊNH NGHĨA CÁC TRƯỜNG - 2
03/2011
Checksum
Checksum TCP header
50
TCP – VÍ DỤ
03/2011
Host A Host B
host ACKs
ACK: số thứ tự của
receipt
byte chờ nhận tiếp theo of echoed
‘C’
03/2011
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
52
TCP – BÊN GỞI
03/2011
Nhận dữ liệu từ tầng ứng dụng
Tạo các segment
53
TCP – BÊN NHẬN
03/2011
Nhận gói tin đúng thứ tự
Chấp nhận
54
TCP – VÍ DỤ
03/2011
Host A Host B Host A Host B
X
loss
Sendbase
= 100
Seq=92 timeout
SendBase
= 120
SendBase
= 120 premature timeout
time time
55
lost ACK scenario
TCP – THIẾT LẬP KẾT NỐI
03/2011
Thựchiện thao tác bắt tay 3 lần (Three way
SYN_RCVD state
ESTABLISHED state
56
TCP – ĐÓNG KẾT NỐI
03/2011
Thực hiện thao tác bắt tay 2 lần
close
close
timed wait
closed
57
TCP – QUẢN LÝ KẾT NỐI
03/2011
BM MMT&VT - KHOA CNTT - ĐH KHTN TP.HCM
TCP client lifecycle
58
03/2011 BM MMT&VT - KHOA CNTT - ĐH KHTN TP.HCM
59
TCP client lifecycle
TCP – QUẢN LÝ KẾT NỐI
03/2011 BM MMT&VT - KHOA CNTT - ĐH KHTN TP.HCM
60
TCP client lifecycle
TCP – QUẢN LÝ KẾT NỐI
TCP - ĐIỀU KHIỂN LUỒNG - 1
03/2011
Nguyên nhân:
61
TCP - ĐIỀU KHIỂN LUỒNG - 2
03/2011
Bộ đệm
Gửi Nhận bên nhận
Ứng dụng
2K
Ứng dụng
gửi 2K
Full
Bên gửi
bị khóa
1K 2K
62
KIỂM SOÁT TẮT NGHẼN - 1
03/2011
Vấn đề: 1 node có thể nhận dữ liệu từ nhiều nguồn
Buffer: giới hạn
63
KIỂM SOÁT TẮT NGHẼN - 2
03/2011
Giải quyết trong TCP: Host A Host B
RTT
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
Congestion Avoidance
64
NỘI DUNG
03/2011
Giới thiệu
Nguyên tắc truyền dữ liệu đáng tin cậy
65
UDP - 1
03/2011
UDP: User Datagram Protocol [rfc768]
Dịch vụ “nỗ lực” để truyền nhanh
66
UDP - 2
03/2011
32 bits
Application
data
(message)
67
UDP - 3
03/2011
Application M
Application
Transport
…..
Mất segment?
68
UDP - 4
03/2011
Tại sao lại sử dụng UDP?
Không thiết lập kết nối
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
69
UDP - 5
03/2011
Thường sử dụng cho các ứng dụng multimedia
Chịu lỗi
70
TÀI LIỆU THAM KHẢO
03/2011
Bài giảng của J.F Kurose and K.W. Ross về
Computer Networking: A Top Down Approach