Bài giảng Mạng máy tính - Chương 5: Tầng giao vận - Bùi Trọng Tùng

Chương 5.  
Tầng giao vận  
1
1
1. Tổng quan về tầng giao vận  
Nhắc lại kiến trúc phân tầng  
Hướng liên kết vs. Không liên kết  
UDP & TCP  
2
1
2
Nhắc lại về kiến trúc phân tầng  
Hỗ trợ các ứng dụng trên mạng  
Application  
(HTTP, Mail, …)  
Transport  
Điều khiển truyền dữ liệu giữa các tiến trình  
(UDP, TCP)  
Network  
(IP, ICMP…)  
Datalink  
của tầng ứng dụng  
Chọn đường và chuyển tiếp gói tin giữa  
các máy, các mạng  
Hỗ trợ việc truyền thông cho các thành  
phần kế tiếp trên cùng 1 mạng  
(Ethernet, ADSL…)  
Physical  
Truyền và nhận dòng bit trên đường  
truyền vật lý  
(bits…)  
3
3
Tổng quan về tầng giao vận (1)  
application  
Cung cấp phương tiện truyền  
transport  
network  
data link  
physical  
giữa các ứng dụng cuối  
Bên gửi:  
Nhận dữ liệu từ ứng dụng  
Đặt dữ liệu vào các gói tin và  
chuyển cho tầng mạng  
Nếu dữ liệu quá lớn, nó sẽ được  
chia làm nhiều phần và đặt vào  
nhiều đoạn tin khác nhau  
appcation  
transport  
network  
data link  
physical  
Bên nhận:  
Nhận các đoạn tin từ tầng mạng  
Tập hợp dữ liệu và chuyển lên  
cho ứng dụng  
4
2
4
Tổng quan về tầng giao vận (2)  
application  
Được cài đặt trên các hệ  
transport  
network  
data lin
physica
thống cuối  
network  
netwo
data link  
physical  
data link  
physical  
Không cài đặt trên các  
routers, switches…  
work  
dnk  
ph
Hai dạng dịch vụ giao vận  
network  
data link  
physical  
Tin cậy, hướng liên kết, e.g  
TCP  
network  
data link  
physical  
network  
data link  
physical  
Không tin cậy, không liên kết,  
e.g. UDP  
appication  
transport  
network  
data link  
physical  
network  
data link  
physical  
Đơn vị truyền: datagram  
(UDP), segment (TCP)  
5
5
Tại sao lại cần 2 loại dịch vụ?  
Các yêu cầu đến từ tầng ứng dụng là đa dạng  
Các ứng dụng cần dịch vụ với 100% độ tin cậy như  
mail, web…  
Sử dụng dịch vụ của TCP  
Các ứng dụng cần chuyển dữ liệu nhanh, có khả  
năng chịu lỗi, e.g. VoIP, Video Streaming  
Sử dụng dịch vụ của UDP  
6
3
6
Ứng dụng và dịch vụ giao vận  
Giao thức  
ứng dụng  
Giao thức  
giao vận  
Ứng dụng  
SMTP  
Telnet  
HTTP  
e-mail  
remote terminal access  
Web  
TCP  
TCP  
TCP  
FTP  
file transfer  
TCP  
giao thức riêng  
(e.g. RealNetworks)  
giao thức riêng  
(e.g., Vonage,Dialpad)  
streaming multimedia  
TCP or UDP  
Internet telephony  
thường là UDP  
7
7
Dồn kênh/phân kênh - Mux/Demux  
Gửi: Dồn kênh  
Nhận: Phân kênh  
Sử dụng thông tin trên tiêu  
đề gói tin để gửi dữ liệu tới  
đúng socket  
application  
P1  
P2  
application  
socket  
application  
P4  
P3  
tranport  
process  
network  
link  
transport  
transport  
network  
link  
network  
link  
physical  
physical  
physcal  
8
4
8
Mux/Demux hoạt động ntn?  
32 bits  
source IP address  
Nút mạng nhận gói tin với các  
địa chỉ:  
destination IP address  
Địa chỉ IP nguồn  
(other header fields)  
source port # dest port #  
other header fields  
Địa chỉ IP đích  
Số hiệu cổng nguồn  
Số hiệu cổng đích  
Địa chỉ IP và số hiệu cổng  
được sử dụng để xác định  
socket nhận dữ liệu  
segment of  
application data  
(payload)  
9
9
2.UDP (User Datagram Protocol)  
Tổng quan  
Khuôn dạng gói tin  
10  
5
10  
Đặc điểm chung  
Giao thức hướng không kết nối (connectionless)  
Không sử dụng báo nhận:  
Phía nguồn gửi dữ liệu nhanh nhất, nhiều nhất có thể  
Truyền tin “best-effort”: chỉ gửi 1 lần, không phát lại  
Vì sao cần UDP?  
Không cần thiết lập liên kết (giảm độ trễ)  
Đơn giản: Không cần lưu lại trạng thái liên kết ở bên gửi và  
bên nhận  
Phần đầu đoạn tin nhỏ  
UDP có những chức năng cơ bản gì?  
Dồn kênh/phân kênh  
Phát hiện lỗi bit bằng checksum  
11  
11  
Khuôn dạng bức tin  
(datagram)  
32 bits  
UDP sử dụng đơn vị  
source port # dest port #  
dữ liệu gọi là –  
datagram (bức tin)  
checksum  
length  
Độ dài toàn  
bộ bức tin  
tính theo byte  
Application  
data  
(message)  
Khuôn dạng đơn vị  
dữ liệu của UDP  
12  
6
12  
mux/demux trên ứng dụng UDP  
Mỗi tiến trình chỉ cần sử dụng một socket duy nhất  
để trao đổi dữ liệu với các tiến trình khác  
Host B  
Host C  
Host A  
application  
application  
application  
P1  
P2  
P3  
transport  
transport  
transport  
network  
link  
network  
link  
network  
link  
physical  
physical  
physical  
source port: 6428  
dest port: 9157  
source port: 6428  
dest port: 5775  
source port: 5775  
dest port: 6428  
source port: 9157  
dest port: 6428  
13  
13  
Các vấn đề của UDP  
Không có kiểm soát tắc nghẽn  
Làm Internet bị quá tải  
Không bảo đảm được độ tin cậy  
Các ứng dụng phải cài đặt cơ chế tự kiểm soát độ  
tin cậy  
Việc phát triển ứng dụng sẽ phức tạp hơn  
14  
7
14  
3. TCP (Transmission  
Control Protocol)  
15  
15  
3.1.Khái niệm về truyền thông  
tin cậy  
16  
8
16  
Kênh có lỗi bit, không bị mất  
tin  
Phát hiện lỗi?  
Checksum  
Làm thế nào để báo cho bên gửi?  
ACK (acknowledgements): gói tin được nhận  
thành công  
NAK (negative acknowledgements): gói tin bị lỗi  
Phản ứng của bên gửi?  
Truyền lại nếu là NAK  
17  
17  
Hoạt động  
stop-and-wait  
Sender  
Receiver  
send pkt  
pkt is OK  
send ACK  
rcv ACK  
send next  
packet  
pkt is corrupted  
send NAK  
rcv NAK  
resend pkt  
Time  
Time  
18  
9
18  
Lỗi ACK/NAK  
Sender  
Receiver  
Cần truyền lại  
Xử lý việc lặp gói  
send pkt0  
tin ntn?  
pkt0 is OK  
Thêm Seq.#  
send ACK  
rcv ACK  
send pkt1  
pkt1 is OK  
send ACK  
rcv sth corrupted!  
resend pkt1  
rcv pkt1  
duplicate,  
discard it  
Time  
Time  
19  
19  
Giải pháp không dùng NAK  
Sender  
Receiver  
send pkt0  
pkt0 is OK  
send ACK0  
rcv ACK0  
send pkt1  
Gói tin nhận  
được lỗi  
gửi lại ACK  
trước đó  
pkt1 is OK  
Nhận được  
rcv ACK1  
ACK với Seq#  
không đổi   
gửi lại gói tin  
pkt2 is corrupted  
rcv ACK1  
Time  
Time  
20  
10  
20  
Kênh có lỗi bit và mất gói tin  
Dữ liệu và ACK có thể bị mất  
Nếu không nhận được ACK?  
Truyền lại như thế nào?  
Timeout!  
Thời gian chờ là bao lâu?  
Ít nhất là 1 RTT (Round Trip Time)  
Mỗi gói tin gửi đi cần 1 timer  
Nếu gói tin vẫn đến đích và ACK bị mất?  
Dùng số hiệu gói tin  
21  
21  
Minh họa  
receiver  
sender  
receiver  
sender  
send pkt0  
send pkt0  
pkt0  
pkt0  
rcv pkt0  
rcv pkt0  
send ack0  
send ack0  
ack0  
pkt1  
ack0  
pkt1  
rcv ack0  
send pkt1  
rcv ack0  
send pkt1  
X
rcv pkt1  
send ack1  
loss  
ack1  
pkt2  
rcv ack1  
send pkt2  
timeout  
rcv pkt2  
pkt1  
resend pkt1  
ack2  
send ack2  
rcv pkt1  
ack1  
pkt2  
send ack1  
rcv ack1  
send pkt2  
rcv pkt2  
(a) Không có mất gói tin  
ack2  
send ack2  
(b) mất gói tin gửi đi  
22  
11  
22  
Hiểu nhầm đây là ack cho  
gói tin pkt1 gửi lại trước đó  
Minh họa  
receiver  
sender  
receiver  
sender  
send pkt0  
pkt0  
rcv pkt0  
send pkt0  
pkt0  
send ack0  
ack0  
pkt1  
rcv pkt0  
rcv ack0  
send ack0  
ack0  
pkt1  
send pkt1  
rcv ack0  
send pkt1  
rcv pkt1  
send ack1  
rcv pkt1  
send ack1  
ack1  
ack1  
X
timeout  
loss  
pkt1  
pkt2  
resend pkt1  
rcv pkt1  
timeout  
send pkt2  
send pkt2  
pkt1  
(detect duplicate)  
send ack1  
resend pkt1  
rcv pkt1  
(detect duplicate)  
send ack1  
ack1  
ack2  
pkt2  
ack1  
pkt2  
rcv pkt2  
rcv ack1  
send pkt2  
send ack2  
rcv pkt2  
rcv pkt2  
ack2  
(detect duplicate)  
send ack2  
ack2  
send ack2  
Hiểu nhầm đây là  
ack báo lỗi pkt2  
(d) timeout sớm/ACK tới trễ  
(c) mất ACK báo nhận  
23  
23  
Hiệu năng của stop-and-wait  
sender  
bit đầu tiên được gửi đi t = 0  
bit cuối cùng được gửi đi t = L / R  
receiver  
bit đầu tiên tới đích  
RTT  
bit cuối cùng tới đích  
Nhận được ACK, gửi gói tiếp theo  
t = RTT + L / R  
time  
time  
L:  
R:  
Kích thước gói tin  
Băng thông  
ꢉ/ꢊ  
ꢀꢁꢂꢃꢄꢂꢅꢆꢇꢈꢁ =  
ꢊꢋꢋ + ꢉ/ꢊ  
RTT: Round trip time  
24  
12  
24  
Pipeline  
Gửi liên tục một lượng hữu hạn các gói tin mà  
không cần chờ ACK  
. Số thứ tự các gói tin phải tăng dần  
. Dữ liệu gửi đi chờ sẵn ở bộ đệm gửi  
. Dữ liệu tới đích chờ ở bộ đệm nhận  
25  
25  
Hiệu năng của pipeline  
sender  
receiver  
bit đầu tiên được gửi đi 0  
bit cuối cùng được gửi đi L / R  
RTT  
các gói tin tới  
đích  
Nhận được ACK, gửi gói tiếp theo  
RTT + L / R  
time  
time  
L:  
R:  
Kích thước gói tin  
Băng thông  
ꢇ ∗ ꢉ/ꢊ  
ꢀꢁꢂꢃꢄꢂꢅꢆꢇꢈꢁ =  
RTT: Round trip time  
n: Số gói tin gửi liên tục  
ꢊꢋꢋ + ꢉ/ꢊ  
26  
13  
26  
Go-back-N  
Cửa sổ gửi  
kích thước Swnd  
#Seq  
đã gửi,  
đã nhận ACK  
đang gửi  
chưa gửi  
đã gửi,  
chưa nhận  
ACK  
Bên gửi  
Bên nhận  
• Chỉ gửi gói tin trong cửa sổ. • Gửi ACK cho gói tin pkt đã  
i
i
Chỉ dùng 1 bộ đếm (timer) cho  
gói tin đầu tiên trong cửa sổ  
nhận được theo thứ tự  
• Gói tin đến không theo thứ  
tự: hủy gói tin và gửi lại  
ACK của gói tin gần nhất  
còn đúng thứ tự  
• Nếu nhận được ACK , dịch  
i
cửa sổ sang vị trí (i+1). Đặt lại  
timer  
• Nếu timeout cho gói tin pkt gửi  
i
lại tất cả gói tin trong cửa sổ  
27  
27  
Go-back-N  
sender window (N=4)  
sender  
receiver  
0 1 2 3 4 5 6 7 8  
0 1 2 3 4 5 6 7 8  
0 1 2 3 4 5 6 7 8  
0 1 2 3 4 5 6 7 8  
send pkt0  
send pkt1  
send pkt2  
send pkt3  
(wait)  
receive pkt0, send ack0  
receive pkt1, send ack1  
loss  
X
receive pkt3, discard,  
(re)send ack1  
0 1 2 3 4 5 6 7 8  
0 1 2 3 4 5 6 7 8  
rcv ack0, send pkt4  
rcv ack1, send pkt5  
receive pkt4, discard,  
(re)send ack1  
receive pkt5, discard,  
(re)send ack1  
ignore duplicate ACK  
pkt 2 timeout  
send pkt2  
send pkt3  
send pkt4  
send pkt5  
0 1 2 3 4 5 6 7 8  
0 1 2 3 4 5 6 7 8  
0 1 2 3 4 5 6 7 8  
0 1 2 3 4 5 6 7 8  
rcv pkt2, deliver, send ack2  
rcv pkt3, deliver, send ack3  
rcv pkt4, deliver, send ack4  
rcv pkt5, deliver, send ack5  
28  
14  
28  
Selective Repeat  
Cửa sổ gửi  
kích thước Swnd  
#Seq  
đã gửi,  
đã nhận ACK  
đang gửi  
chưa gửi  
đã gửi,  
chưa nhận  
ACK  
Cửa sổ nhận  
kích thước Rwnd  
đã nhận,  
chưa đúng  
thứ tự  
đã nhận đúng  
thứ tự  
#Seq  
chưa nhận  
Gửi: chỉ gửi gói tin trong cửa sổ gửi  
Nhận: chỉ nhận gói tin trong cửa sổ nhận  
Sử dụng bộ đệm để lưu tạm thời các gói tin tới chưa đúng thứ tự  
29  
29  
Selective Repeat  
Bên gửi  
Bên nhận  
Chỉ gửi gói tin trong cửa  
sổ gửi  
Chỉ nhận gói tin trong cửa  
sổ nhận  
Dùng 1 timer cho mỗi gói  
tin trong cửa sổ  
Nhận pkt :  
i
Gửi lại ACK  
i
Không đúng thứ tự: đưa  
vào bộ đệm  
Nếu timeout cho gói tin  
pkt chỉ gửi lại pkt  
i
i
Đúng thứ tự: chuyển cho  
tầng ứng dụng cùng với các  
gói tin trong bộ đệm đã trở  
thành đúng thứ tự sau khi  
Nhận được ACK :  
i
Đánh dấu pkt đã có ACK  
i
Nếu i là giá trị nhỏ nhất  
trong các gói tin chưa nhận  
ACK, dịch cửa sổ sang vị trí  
gói tin tiếp theo chưa nhận  
ACK  
nhận pkt  
i
30  
15  
30  
Selective Repeat  
Điều gì xảy ra nếu kích  
thước cửa số lớn hơn  
½ giá trị Seq# lớn nhất?  
sender  
sender window (N=4)  
receiver  
0 1 2 3 4 5 6 7 8  
0 1 2 3 4 5 6 7 8  
0 1 2 3 4 5 6 7 8  
0 1 2 3 4 5 6 7 8  
send pkt0  
send pkt1  
send pkt2  
send pkt3  
(wait)  
receive pkt0, send ack0  
receive pkt1, send ack1  
loss  
X
receive pkt3, buffer,  
send ack3  
0 1 2 3 4 5 6 7 8  
rcv ack0, send pkt4  
rcv ack1, send pkt5  
0 1 2 3 4 5 6 7 8  
receive pkt4, buffer,  
send ack4  
receive pkt5, buffer,  
send ack5  
record ack3 arrived  
pkt 2 timeout  
send pkt2  
0 1 2 3 4 5 6 7 8  
0 1 2 3 4 5 6 7 8  
0 1 2 3 4 5 6 7 8  
0 1 2 3 4 5 6 7 8  
record ack4 arrived  
rcv pkt2; deliver pkt2,  
pkt3, pkt4, pkt5; send ack2  
record ack5 arrived  
Điều gì xảy ra nếu ack2 tới bên gửi  
31  
31  
Kích thước cửa sổ quá lớn  
sender  
receiver  
pkt0  
pkt1  
pkt2  
0 1 2 3 0 1 2  
0 1 2 3 0 1 2  
0 1 2 3 0 1 2  
Giả sử Seq# = {0, 1 , 2  
,3}  
0 1 2 3 0 1 2  
0 1 2 3 0 1 2  
0 1 2 3 0 1 2  
Kích thước cửa sổ: 3  
pkt3  
0 1 2 3 0 1 2  
0 1 2 3 0 1 2  
X
Phía nhận không phân  
biệt được 2 trường hợp  
pkt0  
will accept packet  
with seq number 0  
(a) pkt0 là gói tin mới  
sender  
Trong trường hợp b, gói  
tin pkt0 gửi lại được bên  
nhận coi như gói tin mới,  
đưa vào bộ đệm chờ xử  
lý  
receiver  
pkt0  
pkt1  
pkt2  
X
0 1 2 3 0 1 2  
0 1 2 3 0 1 2  
0 1 2 3 0 1 2  
0 1 2 3 0 1 2  
0 1 2 3 0 1 2  
0 1 2 3 0 1 2  
X
timeout  
X
retransmit pkt0  
pkt0  
0 1 2 3 0 1 2  
will accept packet  
with seq number 0  
(b) pkt0 là gói tin bị lặp  
32  
16  
32  
3.2. Hoạt động của TCP  
Cấu trúc đoạn tin TCP  
Quản lý liên kết  
Kiểm soát luồng  
Kiểm soát tắc nghẽn  
33  
33  
Tổng quan về TCP  
Giao thức hướng liên kết  
Bắt tay ba bước  
Giao thức truyền dữ liệu theo dòng byte (byte  
stream), tin cậy  
Sử dụng vùng đệm  
Truyền theo kiểu pipeline  
Tăng hiệu quả  
Kiểm soát luồng  
Bên gửi không làm quá tải bên nhận  
Kiểm soát tắc nghẽn  
Việc truyền dữ liệu không nên làm tắc nghẽn mạng  
34  
17  
34  
Khuôn dạng đoạn tin - TCP segment  
32 bits  
URG: Dữ liệu khẩn  
- Dùng để truyền dữ  
liệu tin cậy  
- Tính theo bytes  
source port #  
sequence number  
acknowledgement number  
dest port #  
ACK: ACK #  
head not  
UAP  
RSF Receive window  
Urg data pointer  
PSH: Chuyển dữ liệu  
ngay  
len used  
-Số lượng bytes  
có thế nhận  
checksum  
- Điều khiển luồng  
RST, SYN, FIN:  
Ký hiệu cho các  
gói tin đặc biệt  
Options (variable length)  
application  
data  
(variable length)  
35  
35  
mux/demux trên ứng dụng TCP  
Sử dụng socket khác nhau để trao đổi với các tiến  
trình khác nhau  
multi-thread server  
application  
application  
application  
P4  
P3  
P1  
P2  
transport  
transport  
transport  
network  
link  
network  
link  
network  
link  
physical  
physical  
physical  
server:IP  
address B  
client: IP  
address C  
source IP,port: B,80  
dest IP,port: A,9157  
client: IP  
address A  
source IP,port: C,5775  
dest IP,port: B,80  
source IP,port: A,9157  
dest IP, port: B,80  
source IP,port: C,9157  
dest IP,port: B,80  
36  
18  
36  
Thông số của liên kết TCP  
Mỗi một liên kết TCP giữa hai tiến trình được  
xác định bởi bộ 4 thông số (4-tuple):  
Địa chỉ IP nguồn  
Tầng mạng  
Địa chỉ IP đích  
Số hiệu cổng nguồn  
Tầng giao vận  
Số hiệu cổng đích  
37  
37  
TCP cung cấp dịch vụ tin cậy ntn?  
Kiểm soát lỗi dữ liệu: checksum  
Kiểm soát mất gói tin: phát lại khi có time-out  
Kiểm soát dữ liệu đã được nhận chưa:  
Seq. #  
Cơ chế báo nhận  
Ack  
Chu trình làm việc của TCP:  
Thiết lập liên kết  
Bắt tay ba bước  
Truyền/nhận dữ liệu: có thể thực hiện đồng  
thời(duplex) trên liên kết  
Đóng liên kết  
38  
19  
38  
Thiết lập liên kết TCP :  
Giao thức bắt tay 3 bước  
Bước 1: A gửi SYN cho B  
A
chỉ ra giá trị khởi tạo seq # của  
A
B
không có dữ liệu  
Bước 2: B nhận SYN, trả lời  
bằng SYN/ACK  
B khởi tạo vùng đệm  
esta-  
blished  
chỉ ra giá trị khởi tạo seq. # của  
B
esta-  
Bước 3: A nhận SYNACK, trả  
lời ACK, có thể kèm theo dữ  
liệu  
blished  
Tại sao không dùng giao thức bắt tay 2 bước  
39  
39  
Cơ chế báo nhận trong TCP  
Gói tin gửi đi ở phía gửi  
source port #  
dest port #  
sequence numbers:  
sequence number  
acknowledgement number  
rwnd  
.Thứ tự byte đầu tiên  
trên payload của gói tin  
(segment)  
checksum  
urg pointer  
Kích thước cửa sổ  
N
Chuỗi Seq# ở phía gửi  
đã gửi  
đã nhận  
ACK  
đã gửi  
chưa  
gửi  
đang  
gửi  
chưa nhận  
ACK  
acknowledgements:  
.Thứ tự của byte muốn  
nhận  
Gói tin báo nhận  
source port #  
dest port #  
sequence number  
acknowledgement number  
A
rwnd  
checksum  
urg pointer  
40  
20  
40  
Tải về để xem bản đầy đủ
pdf 35 trang Thùy Anh 26/04/2022 7500
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 5: Tầng giao vận - Bùi Trọng Tùng", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdfbai_giang_mang_may_tinh_chuong_5_tang_giao_van_bui_trong_tun.pdf