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 đủ
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:
- bai_giang_mang_may_tinh_chuong_5_tang_giao_van_bui_trong_tun.pdf