Giao thức tầng giao vận transport layer 5 Tạo phương thức truyền thông logic giữa các ứng Transport Protocols TCP Transmission Control Protocol reliable transport protocol tin cậy UDP
Trang 1Chương 3.
Giao thức tầng giao vận (transport layer)
Trần Quang Hải Bằng Faculty of Information Technology University of Communication and Transport (Unit 2) Office location: Administration building, Block D3, Room 6 Office phone: 38962018
Cell phone: N/A Email: tqhbang@utc2.edu.vn
Trang 2Chương 3 Giao thức tầng giao vận (transport layer) 3
06/02- 24/03/2012
Ch3 The Transport Layer
1 Transport Layer Services & Principles.
2 Multiplexing/Demultiplexing.
3 Connectionless Transport (UDP).
4 Principles of Reliable Data Transfer (RDT).
5 Connection-oriented Transport (TCP).
6 Congestion Control.
7 Sử dụng TCP hay UDP
Transport Layer Services & Principles
thông logic (logical
tại các trạm cuối (end system).
application transport network data link physical
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 e
nd -e nd
tr an sp
or t
Trang 3Chương 3 Giao thức tầng giao vận (transport layer) 5
Tạo phương thức truyền
thông logic giữa các ứng
Transport Protocols
TCP (Transmission Control Protocol)
reliable transport protocol (tin cậy)
UDP (User Datagram Protocol)
unreliable transport protocol.
Trang 4Chương 3 Giao thức tầng giao vận (transport layer) 7
06/02- 24/03/2012
Ch3 The Transport Layer
1 Transport Layer Services & Principles.
2 Multiplexing/Demultiplexing.
3 Connectionless Transport (UDP).
4 Principles of Reliable Data Transfer (RDT).
M P2
application transport network
Trang 5Chương 3 Giao thức tầng giao vận (transport layer) 9
06/02- 24/03/2012
Dồn và chia kênh thế nào?
source port number: ứng
TCP/UDP segment format
Mux/demux: Ví dụ
host A source port: x dest port: 23 server B
source port:23 dest port: x
port use: simple telnet app
Web client host A
Web server B
Web client host C
Source IP: C Dest IP: B source port: x dest port: 80
Source IP: C Dest IP: B source port: y dest port: 80
port use: Web server
Source IP: A Dest IP: B source port: x dest port: 80
Trang 6Chương 3 Giao thức tầng giao vận (transport layer) 11
06/02- 24/03/2012
Ch3 The Transport Layer
1 Transport Layer Services & Principles.
2 Multiplexing/Demultiplexing.
3 Connectionless Transport (UDP).
4 Principles of Reliable Data Transfer (RDT).
5 Connection-oriented Transport (TCP).
6 Congestion Control.
7 Sử dụng TCP hay UDP
Connectionless Transport (UDP).
chỉ cần những thủ tục cơ bản nhất.
thông tin điều khiển cũng chỉ cần cơ bản nhất.
luôn “cố gắng hết sức” để giảm thiểu.
Không có cơ chế bắt tay (handshaking): thiết lập truyền dữ liệu kết thúc.
Không nắm giữ trạng thái.
Các segments được xử lý độc lập với nhau.
Trang 7Chương 3 Giao thức tầng giao vận (transport layer) 13
tra lỗi (phục vụ cho
cơ chế nhận biết lỗi
– error detection)
source port # dest port #
32 bits
Application data (message)
UDP segment format
length checksum
Length, in bytes of UDP segment, including header
UDP segment - example
Receiver’s MAC address
Sender’s MAC address
Type of upper layer’s protocol
( 0x0800 = IP )
Trang 8Chương 3 Giao thức tầng giao vận (transport layer) 15
Trang 9Chương 3 Giao thức tầng giao vận (transport layer) 17
06/02- 24/03/2012
UDP segment – example (cnt.)
Data of applicaton layer
UDP checksum
Mã kiểm tra phục vụ cho cơ chế nhận biết lỗi.
Sender:
số nguyên đó.
Receiver:
Trang 10Chương 3 Giao thức tầng giao vận (transport layer) 19
06/02- 24/03/2012
UDP checksum: example
với checksum: Kết quả là 1111 1111 1111 1111 thì không
có lỗi, nếu khác là có lỗi.
Ch3 The Transport Layer
1 Transport Layer Services & Principles.
2 Multiplexing/Demultiplexing.
3 Connectionless Transport (UDP).
4 Principles of Reliable Data Transfer (RDT).
5 Connection-oriented Transport (TCP).
6 Congestion Control.
7 Sử dụng TCP hay UDP
Trang 11Chương 3 Giao thức tầng giao vận (transport layer) 21
06/02- 24/03/2012
Principles of Reliable Data Transfer (RDT)
10 list of important networking topics).
RDT
send
side
receive side
rdt_send(): called from above,
(e.g., by app.) Passed data to
deliver to receiver upper layer
udt_send(): called by rdt,
to transfer packet over
unreliable channel to receiver
rdt_rcv(): called when packet arrives on rcv-side of channel
deliver_data(): called by
rdt to deliver data to upper
Trang 12Chương 3 Giao thức tầng giao vận (transport layer) 23
“state” next state
uniquely determined
by next event
event actions
RDT1.0: reliable data transfer over reliable channel
Tầng dưới:
Sender gửi dữ liệu xuống tầng dưới.
Receiver nhận dữ liệu gửi từ tầng dưới lên.
Wait for call from below
rdt_rcv(packet)
Trang 13Chương 3 Giao thức tầng giao vận (transport layer) 25
06/02- 24/03/2012
RDT2.0: channel with bit errors
UDP checksum có khả năng phát hiện lỗi bit.
acknowledgements (ACKs): receiver thông báo đã nhận gói dữ
liệu tốt (không có lỗi).
negative acknowledgements (NAKs): receiver thông báo gói dữ
liệu nhận được có lỗi.
Nếu nhận được NAK, sender cần gửi lại gói tin bị lỗi.
human scenarios using ACKs, NAKs? (telephone talking!)
Wait for call from below
sender
receiver
rdt_send(data)
Λ
Trang 14Chương 3 Giao thức tầng giao vận (transport layer) 27
Wait for call from below
Wait for call from below rdt_send(data)
Λ
Trang 15Chương 3 Giao thức tầng giao vận (transport layer) 29
06/02- 24/03/2012
RDT2.0: problems
Sender không biết kết quả gửi gói tin thế nào.
Cũng chẳng thể gửi lại gói tin vì có thể gây hiện tượng lặp gói tin.
Sender truyền lại nếu như ACK/NAK bị lỗi.
Kiểm soát lặp gói tin (duplicate handling)
Thêm vào gói tin trường số thứ tự (sequence number).
Căn cứ vào số thứ tự gói tin, receiver bỏ qua những gói tin bị lặp.
Sender sẽ không gửi gói tin tiếp theo nếu như chưa chắc chắn receiver nhận được gói trước đó (stop and wait protocol).
RDT2.1: sender, handles garbled ACK/NAKs
Wait for call 0 from above
sndpkt = make_pkt(0, data, checksum) udt_send(sndpkt)
rdt_send(data)
Wait for ACK or
Wait for ACK or NAK 1
Λ Λ
Trang 16Chương 3 Giao thức tầng giao vận (transport layer) 31
06/02- 24/03/2012
RDT2.1: receiver, handles garbled ACK/NAKs
Wait for
0 from below
sndpkt = make_pkt(NAK, 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)
sndpkt = make_pkt(0, data, checksum) udt_send(sndpkt)
sender FSM fragment
Wait for
0 from below rdt_rcv(rcvpkt) && notcorrupt(rcvpkt)
&& has_seq1(rcvpkt) extract(rcvpkt,data) deliver_data(data)
Λ
Trang 17Chương 3 Giao thức tầng giao vận (transport layer) 33
gian nhất định nào đó mà không thấy (cần countdown timer).
truyền lại sẽ gây ra hiện tượng lặp gói tin.
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)
udt_send(sndpkt) start_timer timeout
Wait for ACK1
Λ rdt_rcv(rcvpkt)
Λ Λ
Λ
Trang 18Chương 3 Giao thức tầng giao vận (transport layer) 35
06/02- 24/03/2012
RDT3.0 in action
RDT3.0 in action (cont)
Trang 19Chương 3 Giao thức tầng giao vận (transport layer) 37
06/02- 24/03/2012
Hiệu suất của RDT3.0
Giả sử có đường truyền giữa 2 host với các thông số sau:
Bandwidth: 1 Gbps (109bits per second)
Propagation delay: 15 ms
Size of packet: 1KB
109 b/sec = 8 microsec
U sender: utilization – fraction of time sender busy sending
1KB trong 30msec -> 33KB/sec effective throught put over 1 Gbps link
network protocol limits use of physical resources!
U sender =
.008 30.008 = 0.00027 microsec
L / R RTT + L / R =
L (packet length in bits)
R (transmission rate, bps) = T
RDT3.0 stop-and-wait operation
first packet bit transmitted, t = 0
RTT
first packet bit arrives
ACK arrives, send next
packet, t = RTT + L / R
U sender =
.008 30.008 = 0.00027 microsec
L / R RTT + L / R =
last packet bit transmitted, t = L / R
last packet bit arrives, send ACK
Trang 20Chương 3 Giao thức tầng giao vận (transport layer) 39
06/02- 24/03/2012
Tăng hiệu suất đường truyền - Pipelined protocols
Pipelining: Gửi liên tục nhiều packets rồi đợi ACK
Số thứ tự gói tin (sequence numbers) tăng đều và duy nhất
Sử dụng bộ nhớ đệm tại Sender và Receiver
go-Back-N
Selective repeat
Tăng hiệu suất đường truyền - Pipelined protocols
first packet bit transmitted, t = 0
RTT
last bit transmitted, t = L / R
first packet bit arrives last packet bit arrives, send ACK
ACK arrives, send next
packet, t = RTT + L / R
last bit of 2ndpacket arrives, send ACK last bit of 3rdpacket arrives, send ACK
U sender =
.024 30.008 = 0.0008 microsecon
3 * L / R RTT + L / R =
Increase utilization
by a factor of 3!
Trang 21Chương 3 Giao thức tầng giao vận (transport layer) 41
06/02- 24/03/2012
Go-Back-N
Sender:
Sử dụng k-bit ở header để lưu sequence number
Cửa sổ trượt cho phép chứa N packets chưa được báo ACK.
Nếu nhận ACK(n): Mọi packet có số hiệu tới n-1 đã gửi thành công
Cần giám sát thời gian timeout cho mỗi packet đang gửi đi (in-flight packet)
timeout(n): Gửi lại packet n và các packet có seq # lớn hơn trong window
GBN in action
Trang 22Chương 3 Giao thức tầng giao vận (transport layer) 43
06/02- 24/03/2012
udt_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
If (base == nextseqnum)stop_timer
else start_timer
rdt_rcv(rcvpkt) &&
notcorrupt(rcvpkt)
base=1 nextseqnum=1
rdt_rcv(rcvpkt)
&& corrupt(rcvpkt) Λ
GBN: sender extended FSM
GBN: receiver extended FSM
ACK-only: always send ACK for correctly-received pkt with highest
in-order seq #
may generate duplicate ACKs
need only remember expectedseqnum
out-of-order pkt:
discard (don’t buffer) -> no receiver buffering!
Re-ACK pkt with highest in-order seq #
deliver_data(data) sndpkt = make_pkt(expectedseqnum,ACK,chksum) udt_send(sndpkt)
Trang 23Chương 3 Giao thức tầng giao vận (transport layer) 45
06/02- 24/03/2012
Selective Repeat (SR)
Receiver gửi ACK cho từng packet tới đích
lên layer phía trên
Sender gửi lại những packet không nhận được
ACK sau khoảng timeout
được ACK)
Sender window
Selective repeat: sender, receiver windows
Trang 24Chương 3 Giao thức tầng giao vận (transport layer) 47
06/02- 24/03/2012
data from above :
if next available seq # in
advance window base to
next unACKed seq #
Trang 25Chương 3 Giao thức tầng giao vận (transport layer) 49
incorrectly passes duplicate
data as new in (a)
Q: what relationship between seq
# size and window size?
Yes, windows size= (total number /2)
0,1,2,3 => widwowsize=4/2=2
Ch3 The Transport Layer
1 Transport Layer Services & Principles.
2 Multiplexing/Demultiplexing.
3 Connectionless Transport (UDP).
4 Principles of Reliable Data Transfer (RDT).
5 Connection-oriented Transport (TCP).
6 Congestion Control.
7 Sử dụng TCP hay UDP
Trang 26Chương 3 Giao thức tầng giao vận (transport layer) 51
06/02- 24/03/2012
TCP Overview
Transmission Control Protocol [RFCs: 793,1122,
1323, 2018, 2581]
Point-to-point: 1 sender, 1 receiver.
Giao thức tin cậy (reliable).
Kiểm soát luồng (flow control).
Kiểm soát nghẽn mạng (congestion control).
full duplex: Gửi & Nhận trên cùng một liên kết.
send/receive buffers socket
door
TCPsend buffer
TCPreceive buffer
socketdoor
segment
applicationwrites data
applicationreads data
TCP segment structure
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)
to accept
counting
by bytes
of data (not segments!)
Internet checksum
(as in UDP)
Header length
(by 32-bit word)
Trang 27Chương 3 Giao thức tầng giao vận (transport layer) 53
seq # of next byte
expected from other
‘C’
host ACKs receipt
of echoed
‘C’
host ACKs receipt of
‘C’, echoes back ‘C’
time simple telnet scenario
TCP segment – example (cnt.)
Receiver’s MAC address
Sender’s MAC address
Type of network layer’s protocol
( 0x0800 = IP )
Trang 28Chương 3 Giao thức tầng giao vận (transport layer) 55
Trang 29Chương 3 Giao thức tầng giao vận (transport layer) 57
Trang 30Chương 3 Giao thức tầng giao vận (transport layer) 59
Flow control: kiểm soát không để cho receiver buffer bị tràn vì
sender gửi nhiều gói tin quá.
Receiver: Thông báo cho sender biết kích thước của RcvWidow
(free buffer): trường rcv window size trong TCP segment headers.
Sender: Luôn nắm được kích thước tối đa của gói tin có thể truyền tiếp.
Trang 31Chương 3 Giao thức tầng giao vận (transport layer) 61
Three way handshaking:
SYN control segment tới
server.
segment rồi trả lời bằng SYNACK segment.
SYNACK segment và trả lời bằng ACK segment (có
thể có dữ liệu đi kèm).
Trang 32Chương 3 Giao thức tầng giao vận (transport layer) 63
06/02- 24/03/2012
TCP Connection management: ngắt liên kết
ngắt liên kết) gửi TCP FIN
segment.
lại) nhận được FIN, gửi
ACK, ngắt liên kết, gửi
tiếp FIN segment.
trả lời bằng ACK timed
wait (chờ một lúc nữa cho
tới khi liên kết đóng hẳn).
TCP client lifecycle TCP server lifecycle
TCP Connection management (cont.)
Trang 33Chương 3 Giao thức tầng giao vận (transport layer) 65
06/02- 24/03/2012
Ch3 The Transport Layer
1 Transport Layer Services & Principles.
2 Multiplexing/Demultiplexing.
3 Connectionless Transport (UDP).
4 Principles of Reliable Data Transfer (RDT).
End-end congestion control: Thông tin về mức độ nghẽn mạng được suy ra từ lượng tin bị mất mát trong quá trình truyền.
Network-assited congestion control: Routers cung cấp các thông tin phản hồi về tình trạng nghẽn mạng tới end systems.
Bit thông báo nghẽn mạng đừng gửi nữa hoăc xin chờ một lát.
Tốc độ tối đa cho phép gửi (maximum rate allowed).
Trang 34Chương 3 Giao thức tầng giao vận (transport layer) 67
unlimited shared output link buffers
Host A
λ
in : original data Host B
λ
out
Causes/costs of congestion: scenario 2
finite shared output
Trang 35Chương 3 Giao thức tầng giao vận (transport layer) 69
06/02- 24/03/2012
always: (goodput)
“perfect” retransmission only when loss:
retransmission of delayed (not lost) packet makes larger (than perfect case) for same
more work (retrans) for given “goodput”
unneeded retransmissions: link carries multiple copies of pkt
Causes/costs of congestion: scenario 2
Causes/costs of congestion: scenario 3
Trang 36Chương 3 Giao thức tầng giao vận (transport layer) 71
06/02- 24/03/2012
Causes/costs of congestion: scenario 3
Another “cost” of congestion:
Khi thực hiện drop các packet trên đường truyền dung lượng đường truyền đã sử dụng để gửi tin tới điểm bị drop là vô ích.
H o s
t A
H o s
t B
λ
o u t
TCP Congestion Control
end-end control (no network assistance)
Sender điều khiển lượng dữ liệu gửi đi theo
quy tắc:
LastByteSent-LastByteAcked
≤ min {CongWin, ReceiverWnd}
Công thức xấp xỉ:
Giá trị CongWin luôn biến đổi và được
tính toán theo khả năng truyền tải của