3.2 Multiplexing và demultiplexing... UDP: User Datagram Protocol [RFC 768]... chờ ACK hoặc NAKchờ gọi từ lớp dưới rdt_senddata Λ... chờ ACK hoặc NAKchờ gọi từ lớp dưới rdt_senddata Λ...
Trang 2❍ UDP: v n chuy n không k t ậ ể ế
n i (connectionless)ố
❍ TCP: v n chuy n h ng k t ậ ể ướ ế
n i (connection-oriented)ố
❍ đi u khi n t c ngh nề ể ắ ẽ TCP
Trang 3Ch ng 3: N i dung trình bày ươ ộ
Trang 43.1 Các d ch v l p Transport ị ụ ớ
Trang 5Các d ch v và giao th c ị ụ ứ
Transport
❒ cung c p ấ truy n thông logic ề
ch y trên các host khác nhauạ
application
transport
network data link physical
network data link physical
network data link physical
network data link physical
network data link physical network
data link physical
log ica
l en d-e
nd t ran
Trang 6❒ các host = các gia đình
❒ giao th c transport = ứ Ann và Bill
❒ giao th c l p network = ứ ớ
d ch v b u đi n ị ụ ư ệ
Trang 7Các giao th c l p transport trên ứ ớ
❒ không tin c y, truy n ậ ề
không theo th t : UDP ứ ự
application
transport
network data link physical
network data link physical
network data link physical
network data link physical
network data link physical network
data link physical
log ica
l en d-e
nd t ran
Trang 83.2 Multiplexing và
demultiplexing
Trang 9link physical
application transport network link physical
Multiplexing t i host g i:ạ ử
Trang 10❒ host dùng đ a ch IP & s port ị ỉ ố
đ đi u h ng đo n đ n ể ề ướ ạ ế
socket thích h pợ
32 bits
d li u ng d ngữ ệ ứ ụ(thông đi p)ệcác header fields khác
d ng th c đo n TCP/UDPạ ứ ạ
Trang 11❒ Khi host nh n đo n UDP: ậ ạ
❍ ki m tra port đích trong ể
đo nạ
❍ đi u h ng đo n UDP đ n ề ướ ạ ếsocket nào phù h p v i s ợ ớ ốport đó
❒ IP datagrams v i đ a ch ớ ị ỉ
IP ngu n và/ho c s port ồ ặ ố khác nhau có th đ c ể ượ
đi u h ng đ n cùng ề ướ ế socket
Trang 12serverIP: C
SP: 6428 DP: 9157
SP: 9157 DP: 6428
SP: 6428 DP: 5775
SP: 5775 DP: 6428
SP cung c p “đ a ch tr v ”ấ ị ỉ ở ề
Trang 13k t n i t client ế ố ừ
❍ k t n i HTTP không b n ế ố ề
v ng s có socket khác ữ ẽnhau cho m i yêu c uỗ ầ
Trang 14serverIP: C
SP: 9157 DP: 80
SP: 9157 DP: 80
D-IP:C
S-IP: A D-IP:C
S-IP: B
SP: 5775 DP: 80 D-IP:C S-IP: B
Trang 15serverIP: C
SP: 9157 DP: 80
SP: 9157 DP: 80
D-IP:C
S-IP: A D-IP:C
S-IP: B
SP: 5775 DP: 80 D-IP:C S-IP: B
Trang 163.3 V n chuy n không k t n i: ậ ể ế ố
UDP
Trang 17UDP: User Datagram Protocol [RFC 768]
Trang 18❒ truy n tin c y trên UDP: ề ậ
thêm kh năng này t i l p ả ạ ớ
header
Trang 19❒ đ t giá tr checksum vào ặ ị
tr ng UDP checksum ườ
bên nh n: ậ
❒ tính toán checksum c a đo n ủ ạ
đã nh nậ
❒ ki m tra giá tr trên có b ng ể ị ằ
v i giá tr trong tr ng ớ ị ườchecksum:
❍ NO – có l i x y raỗ ả
❍ YES – không có l i ỗ
❍ Nh ng có th còn l i khác ư ể ỗ
M c tiêu: ụ ki m tra các “l i” (các bit c đã b t lên) ể ỗ ờ ậ
trong các đo n đã truy n ạ ề
Trang 213.4 Các nguyên lý c a vi c ủ ệ
Trang 22Các nguyên lý truy n d li u tin ề ữ ệ
c y ậ
❒ quan tr ng trong các l p application, transport, link ọ ớ
❒ là danh sách 10 v n đ quan tr ng nh t c a m ngấ ề ọ ấ ủ ạ
❒ các đ c thù c a kênh truy n không tin c y s xác đ nh s ph c ặ ủ ề ậ ẽ ị ự ứ
t p c a giao th c truy n d li u data transfer protocol (rdt) ạ ủ ứ ề ữ ệ
Trang 23Các nguyên lý truy n d li u tin ề ữ ệ
c y ậ
❒ quan tr ng trong các l p application, transport, link ọ ớ
❒ là danh sách 10 v n đ quan tr ng nh t c a m ngấ ề ọ ấ ủ ạ
Trang 24Các nguyên lý truy n d li u tin ề ữ ệ
c y ậ
❒ quan tr ng trong các l p application, transport, link ọ ớ
❒ là danh sách 10 v n đ quan tr ng nh t c a m ngấ ề ọ ấ ủ ạ
❒ các đ c thù c a kênh truy n không tin c y s xác đ nh s ặ ủ ề ậ ẽ ị ự
ph c t p c a giao th c truy n d li u data transfer protocol ứ ạ ủ ứ ề ữ ệ
Trang 26Truy n d li u tin c y ề ữ ệ ậ
S : ẽ
❒ ch xem xét truy n d li u theo 1 h ng duy ỉ ề ữ ệ ướ
nh t ấ
❍ nh ng đi u khi n lu ng thông tin s theo c 2 chi u!ư ề ể ồ ẽ ả ề
❒ dùng máy tr ng thái h u h n (finite state ạ ữ ạ
machines-FSM) đ xác đ nh bên g i, bên nh n ể ị ử ậ
Trang 27Rdt1.0: truy n d li u tin c y trên 1 kênh truy n tin ề ữ ệ ậ ề
c y ậ
❒ kênh u tiên tin c y hoàn toàn ư ậ
❍ không có các l iỗ
❍ không m t mát các góiấ
❒ các FSM phân bi t cho bên g i, bên nh n: ệ ử ậ
❍ bên g i g i d li u vào kênh u tiênử ử ữ ệ ư
❍ bên nh n nh n d li u t kênh u tiênậ ậ ữ ệ ừ ư
chờ gọi
từ lớp dưới
rdt_rcv(packet)
Trang 28❍ bên g i g i l i gói nào đ c xác nh n là NAKử ử ạ ượ ậ
❒ các cơ chế mới trong rdt2.0 (sau rdt1.0):
❍ ki m tra l iể ỗ
❍ nh n ph n h i: các thông đi p đi u khi n (ACK,NAK) bên ậ ả ồ ệ ề ể
nh n ậ bên g iử
Trang 29chờ ACK hoặc NAK
chờ gọi từ lớp dưới
bên g i ử
bên nh n ậ
rdt_send(data)
Λ
Trang 30chờ ACK hoặc NAK
chờ gọi từ lớp dưới rdt_send(data)
Λ
Trang 31chờ ACK hoặc NAK
chờ gọi từ lớp dưới rdt_send(data)
Λ
Trang 32bên g i g i 1 gói, ử ửsau đó d ng l i ch ph n h iừ ạ ờ ả ồ
từ bên nhận
d ng và chừ ờ
Trang 33Λ Λ
Trang 34rdt2.1: bên g i qu n lý các ACK/NAK b ử ả ị
chờ
0 từ dưới
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)
chờ
1 từ dưới
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)
Trang 35❍ tr ng thái ch rõ có hay ạ ỉkhông mong ch s th ờ ố ứ
Trang 37rdt2.2: g i, nh n các m nh ử ậ ả
Chờ cho gọi 0 từ trên
sndpkt = make_pkt(0, data, checksum) udt_send(sndpkt)
g i phân m nhử ả
FSM
Chờ cho gọi
0 từ dưới
rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && has_seq1(rcvpkt)
Trang 38❒ truy n l i n u không nh n ề ạ ế ậACK trong kho ng th i gian ả ờnày
❒ n u gói (ho c ACK) ch tr ế ặ ỉ ễ(không m t):ấ
Trang 39rdt3.0 g i ử
sndpkt = make_pkt(0, data, checksum) udt_send(sndpkt)
start_timer rdt_send(data)
Chờ cho ACK 0
rdt_rcv(rcvpkt) &&
( corrupt(rcvpkt) ||
isACK(rcvpkt,1) )
Chờ cho gọi 1
udt_send(sndpkt) start_timer
từ trên
Chờ cho ACK 1
Λ rdt_rcv(rcvpkt) Λ
Λ
Trang 40hành đ ng c a rdt3.0 ộ ủ
Trang 41hành đ ng c a rdt3.0 ộ ủ
Trang 42L (đ dài gói tính b ng bits)ộ ằ
R (t c đ truy n, bps)ố ộ ề =
❍ gói 1KB m i 30 msec -> 33kB/s trên đ ng truy n 1 Gbpsỗ ườ ề
❍ giao th c network h n ch vi c dùng các tài nguyên v t lý!ứ ạ ế ệ ậ
Trang 43rdt3.0: ho t đ ng d ng-và-ch ạ ộ ừ ờ
gói đầu tiên đã truyền, t = 0
RTT
gói cuối cùng đã truyền, t = L / R
gói đầu tiên đã đến gói cuối cùng đã đến, gửi ACK
ACK đến, gửi gói kế tiếp,
t = RTT + L / R
30.008 = 0.00027 microsec
L / R RTT + L / R =
Trang 44Các giao th c Pipelined ứ
Pipelining: bên g i cho phép g i nhi u gói đ ng th i, ử ử ề ồ ờ
không c n ch báo nh n đ c ầ ờ ậ ượ
❍ nhóm các s th t ph i tăng d nố ứ ự ả ầ
❍ ph i có b nh đ m t i n i g i và/ho c n i nh nả ộ ớ ệ ạ ơ ử ặ ơ ậ
❒ hai d ng ph bi n c a các giao th c pipelined: ạ ổ ế ủ ứ
go-Back-N, L p có l a ch n ặ ự ọ
Trang 45Đ kh d ng tăng lênộ ả ụ
g p 3 l n!ấ ầ
Trang 46Bên g i: ử
❒ k-bit s th t trong header c a góiố ứ ự ủ
❒ “c a s ” tăng lên đ n N, cho phép g i các gói liên t c không c n ử ổ ế ử ụ ầACK
❒ ACK(n): ACKs t t c các gói đ n, ch a s th t n – “ACK tích lũy”ấ ả ế ứ ố ứ ự
❍ có th nh n các ACK trùng l p (xem bên nh n)ể ậ ặ ậ
❒ đ nh thì cho m i gói trên đ ng truy nị ỗ ườ ề
❒ timeout(n): g i l i gói n và t t c các gói có s th t cao h n ử ạ ấ ả ố ứ ự ơ
trong c a sử ổ
Trang 47GBN: bên g i m r ng FSM ử ở ộ
chờ start_timerudt_send(sndpkt[base])
udt_send(sndpkt[base+1])
… udt_send(sndpkt[nextseqnum-1]) timeout
rdt_send(data)
if (nextseqnum < base+N) { sndpkt[nextseqnum] = make_pkt(nextseqnum,data,chksum) udt_send(sndpkt[nextseqnum])
if (base == nextseqnum) start_timer
nextseqnum++
} else refuse_data(data)
base = getacknum(rcvpkt)+1
rdt_rcv(rcvpkt) &&
notcorrupt(rcvpkt)
base=1 nextseqnum=1
rdt_rcv(rcvpkt)
&& corrupt(rcvpkt)
Λ
Trang 48deliver_data(data) sndpkt = make_pkt(expectedseqnum,ACK,chksum) udt_send(sndpkt)
Trang 49GBN
ho t đ ng ạ ộ
Trang 50L p có l a ch n ặ ự ọ
❒ bên nh n thông báo đã nh n đúng t t c t ng gói ậ ậ ấ ả ừ
m t ộ
❍ đ m (buffer) các gói n u c n thi tệ ế ầ ế
❒ bên g i ch g i l i các gói nào không nh n đ c ử ỉ ử ạ ậ ượ
Trang 51L p có l a ch n: các c a s g i, nh n ặ ự ọ ử ổ ử ậ
Trang 52th t ), d ch chuy n c a s ứ ự ị ể ử ổ
đ n gói ch a nh n k ti pế ư ậ ế ếgói n trong [rcvbase-N,rcvbase- 1]
❒ ACK(n)
ng c l i: ượ ạ
❒ l điờ
Nh n ậ
Trang 53Ho t đ ng c a l p có l a ch n ạ ộ ủ ặ ự ọ
Trang 553.5 V n chuy n h ng k t n i: ậ ể ướ ế ố
TCP
Trang 56TCP: T ng quan ổ RFCs: 793, 1122, 1323, 2018, 2581
❒ d li u full duplex: ữ ệ
❍ lu ng d li u đi 2 chi u ồ ữ ệ ề trong cùng m t k t n i ộ ế ố
❍ MSS: maximum segment size – kích th c đo n t i ướ ạ ố đa
❒ h ng k t n i: ướ ế ố
❍ b t tay (trao đ i các ắ ổ thông đi p đi u khi n) ệ ề ể
tr ng thái bên g i, bên ạ ử
nh n tr c khi trao đ i ậ ướ ổ
d li u ữ ệ
❒ đi u khi n lu ng: ề ể ồ
❍ bên g i s không l n át ử ẽ ấ bên nh n ậ
Trang 57TCP: c u trúc đo n ấ ạ
port # ngu nồ port # đích
32 bits
d li u ng d ngữ ệ ứ ụ(đ dài thay đ i)ộ ổ
s th tố ứ ự
s ACKố
c a s nh n ử ổ ậ con tr URG ỏ checksum
F S R P A U
head len usednot
Tùy ch n (đ dài thay đ i)ọ ộ ổ
URG: d li u kh n c p ữ ệ ẩ ấ
(th ng không dùng) ườ
ACK: ACK #
h p l ợ ệ PSH: push data now
nh n ậ
đ m b i s byte ế ở ố
c a d li u ủ ữ ệ
Internet checksum (gi ng UDP) ố
Trang 58‘C’, ph n h i ả ồ
ng c l i ‘C’ ượ ạ
time tình hu ng telnet đ n gi n ố ơ ả
Trang 59TCP Round Trip Time vàTimeout
❒ SampleRTT: th i gian đ c đo t ờ ượ ừkhi truy n đo n đ n khi báo nh n ề ạ ế ậACK
Trang 60TCP Round Trip Time và Timeout
❒ giá tr đ c tr ng: ị ặ ư α = 0.125