Bài giảng Mạng máy tính - Chương 3: Tầng giao vận (Transport layer) - Trần Quang Diện

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 UDPChương 3. Giao thức tầng giao vận (transport layer) 4

Transport Layer Services & Principles

 Cung cấp phương tiện truyền

thông logic (logical

communication) giữa các

applications.

 PDUs

 application: messages.

 transport: segments (đoạn).

 Các msg từ tầng application gửi

xuống được chia nhỏ thành các

đoạn (segments).

 Transport protocol được thực thi

pdf 98 trang kimcuc 5960
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 3: Tầng giao vận (Transport layer) - Trần Quang Diện", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Bài giảng Mạng máy tính - Chương 3: Tầng giao vận (Transport layer) - Trần Quang Diện

Bài giảng Mạng máy tính - Chương 3: Tầng giao vận (Transport layer) - Trần Quang Diện
Chương 3.
Tầng giao vận (transport layer)
Quang Dieu Tran, PhD
Faculty of Information Technology
University of Communication and Transport 
(Branch in Ho Chi Minh City)
Email: dieutq@gmail.com
Website: sites.google.com/sites/tranlectures
Chương 3. Giao thức tầng giao vận (transport layer) 2
Chương 3. Giao thức tầng giao vận (transport layer) 3
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
Chương 3. Giao thức tầng giao vận (transport layer) 4
Transport Layer Services & Principles
 Cung cấp phương tiện truyền 
thông logic (logical 
communication) giữa các 
applications.
 PDUs
 application: messages.
 transport: segments (đoạn).
 Các msg từ tầng application gửi 
xuống được chia nhỏ thành các 
đoạn (segments).
 Transport protocol được thực thi 
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
physicalnetwork
data link
physical
Chương 3. Giao thức tầng giao vận (transport layer) 5
Transport & Network layers
 Network layer:
 Truyền thông logic giữa 
các trạm làm việc (host).
 PDUs = packets (gói).
 IP (Internet Protocol) là 
giao thức truyền không tin 
cậy.
 Transport layer:
 Tạo phương thức truyền 
thông logic giữa các ứng 
dụng (application/process).
 Nhận các gói tin từ tầng 
Network gửi lên.
Household analogy:
12 kids sending letters to 12 kids
 processes = kids
 app messages = letters in 
envelopes
 hosts = houses
 transport protocol = Ann and 
Bill
 network-layer protocol = 
postal service
Chương 3. Giao thức tầng giao vận (transport layer) 6
Transport Protocols
 TCP (Transmission Control Protocol)
Connection-oriented (có liên kết).
Flow control (điều khiển luồng).
Congestion control (điều khiển chống nghẽn mạng).
 reliable transport protocol (tin cậy)
 UDP (User Datagram Protocol)
Connectionless.
Không có kiểm soát luồng và kiểm soát nghẽn mạng.
 unreliable transport protocol.
Chương 3. Giao thức tầng giao vận (transport layer) 7
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
Chương 3. Giao thức tầng giao vận (transport layer) 8
Multiplexing/demultiplexing (mux/demux)
 Multiplexing (dồn kênh): Các msgs từ các apps (P1, P2) được chia 
nhỏ và đóng gói thành các segments (thêm header) dồn kênh diễn 
ra ở sending hosts
 Demultiplexing (phân kênh): Các segments nhận được được gửi tới 
apps tương ứng (P3, P4) phân kênh diễn ra ở receiving hosts
application
transport
network
M
P2
application
transport
network
receiver
Ht
Hn segment
segment M
application
transport
network
P1
M
M M
P3 P4
segment
header
application-layer
data
sender sender
Chương 3. Giao thức tầng giao vận (transport layer) 9
Dồn và chia kênh thế nào?
 source port number: ứng 
dụng gửi dữ liệu.
 destination port number: 
ứng dụng nhận dữ liệu.
 Port number:
0-1023: well-known port 
number (đã được giữ cho các 
apps phổ biến).
1024 – 65535.
source port # dest port #
32 bits
application
data 
(message)
other header fields
TCP/UDP segment format
Chương 3. Giao thức tầng giao vận (transport layer) 10
Mux/demux: Ví dụ
host A server B
source port: x
dest. port: 23
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
Chương 3. Giao thức tầng giao vận (transport layer) 11
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
Chương 3. Giao thức tầng giao vận (transport layer) 12
Connectionless Transport (UDP).
 User Datagram Protocol [RFC 768]
 “no frill”, “bare bones” Internet transport protocol.
 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.
 “best effort” service: dữ liệu có thể mất mát, sai sót nhưng 
luôn “cố gắng hết sức” để giảm thiểu.
 Connectionless:
 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.
Chương 3. Giao thức tầng giao vận (transport layer) 13
UDP: Segment structure
 source port.
 dest port.
 length.
 application data.
 checksum: mã kiểm 
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
Chương 3. Giao thức tầng giao vận (transport layer) 14
UDP segment - example
Receiver’s MAC address
Sender’s MAC address
Type of upper layer’s protocol
( 0x0800 = IP )
Chương 3. Giao thức tầng giao vận (transport layer) 15
UDP segment – example (cnt.)
IP’s Header
Chương 3. Giao thức tầng giao vận (transport layer) 16
UDP segment – example (cnt.)
UDP’s header
Chương 3. Giao thức tầng giao vận (transport layer) 17
UDP segment – example (cnt.)
Data of applicaton layer
Chương 3. Giao thức tầng giao vận (transport layer) 18
UDP checksum
 Mã kiểm tra phục vụ cho cơ chế nhận biết lỗi.
 Sender:
Coi segment như chuỗi các số nguyên 16-bit.
checksum = số bù một (1’s complement) của tổng các 
số nguyên đó.
 Receiver:
Tính toán checksum của segment nhận được.
So sánh với checksum chứa trong trường checksum của 
segment nhận được nếu sai khác tức là có lỗi.
Chương 3. Giao thức tầng giao vận (transport layer) 19
UDP checksum: example
 Phép cộng các số 16-bit liên tiếp là phép cộng có nhớ.
 Kiểm tra checksum: Lấy tổng các số 16-bit (có nhớ) cộng 
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.
1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0
1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1
1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 0
1 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1
wraparound
sum
checksum
(bù 1)
Chương 3. Giao thức tầng giao vận (transport layer) 20
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
Chương 3. Giao thức tầng giao vận (transport layer) 21
Principles of Reliable Data Transfer (RDT)
 Truyền dữ liệu tin cậy là vấn đề vô cùng quan trọng (top 
10 list of important networking topics).
 Cần thiết đối với app, transport, datalink layer.
Chương 3. Giao thức tầng giao vận (transport layer) 22
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
Chương 3. Giao thức tầng giao vận (transport layer) 23
Finite State Machine (FSM)
state
1
state
2
event causing state transition
actions taken on state transition
state: when in this 
“state” next state 
uniquely determined 
by next event
event
actions
Chương 3. Giao thức tầng giao vận (transport layer) 24
RDT1.0: reliable data transfer over reliable channel
 Tầng dưới:
Không có lỗi.
Không mất mát dữ liệu (gói tin).
 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 
above packet = make_pkt(data)
udt_send(packet)
rdt_send(data)
extract (packet,data)
deliver_data(data)
Wait for 
call from 
below
rdt_rcv(packet)
sender receiver
Chương 3. Giao thức tầng giao vận (transport layer) 25
RDT2.0: channel with bit errors
 Tầng dưới có thể có lỗi bit (0  1)
 UDP checksum có khả năng phát hiện lỗi bit.
 Khắc phục lỗi (error recover) thế nào?
 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!)
 rdt2.0 so với rdt1.0:
 error detection
 receiver feedback: control msgs (ACK,NAK) rcvr->sender.
Chương 3. Giao thức tầng giao vận (transport layer) 26
RDT2.0: FSM specification
Wait for 
call from 
above
snkpkt = make_pkt(data, checksum)
udt_send(sndpkt)
extract(rcvpkt,data)
deliver_data(data)
udt_send(ACK)
rdt_rcv(rcvpkt) && 
notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) && isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) &&
isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) && 
corrupt(rcvpkt)
Wait for 
ACK or 
NAK
Wait for 
call from 
belowsender
receiver
rdt_send(data)
L
Chương 3. Giao thức tầng giao vận (transport layer) 27
RDT2.0: operation with no errors
Wait for 
call from 
above
snkpkt = make_pkt(data, checksum)
udt_send(sndpkt)
extract(rcvpkt,data)
deliver_data(data)
udt_send(ACK)
rdt_rcv(rcvpkt) && 
notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) && isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) &&
isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) && 
corrupt(rcvpkt)
Wait for 
ACK or 
NAK
Wait for 
call from 
below
rdt_send(data)
L
Chương 3. Giao thức tầng giao vận (transport layer) 28
RDT2.0: error scenario
Wait for 
call from 
above
snkpkt = make_pkt(data, checksum)
udt_send(sndpkt)
extract(rcvpkt,data)
deliver_data(data)
udt_send(ACK)
rdt_rcv(rcvpkt) && 
notcorrupt(rcvpkt)
rdt_rcv(rcvpkt) && isACK(rcvpkt)
udt_send(sndpkt)
rdt_rcv(rcvpkt) &&
isNAK(rcvpkt)
udt_send(NAK)
rdt_rcv(rcvpkt) && 
corrupt(rcvpkt)
Wait for 
ACK or 
NAK
Wait for 
call from 
below
rdt_send(data)
L
Chương 3. Giao thức tầng giao vận (transport layer) 29
RDT2.0: problems
 Nếu ACK, NAK bị lỗi?
 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.
 Giải pháp:
 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).
Chương 3. Giao thức tầng giao vận (transport layer) 30
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 
NAK 0 udt_send(sndpkt)
rdt_rcv(rcvpkt) && 
( corrupt(rcvpkt) ||
isNAK(rcvpkt) )
sndpkt = make_pkt(1, data, checksum)
udt_send(sndpkt)
rdt_send(data)
rdt_rcv(rcvpkt) 
&& notcorrupt(rcvpkt) 
&& isACK(rcvpkt) 
udt_send(sndpkt)
rdt_rcv(rcvpkt) && 
( corrupt(rcvpkt) ||
isNAK(rcvpkt) )
rdt_rcv(rcvpkt) 
&& notcorrupt(rcvpkt) 
&& isACK(rcvpkt)
Wait for
call 1 from 
above
Wait for 
ACK or 
NAK 1
L
L
Chương 3. Giao thức tầng giao vận (transport layer) 31
RDT2.1: receiver, handles garbled ACK/NAKs
Wait for 
0 from 
below
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)
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)
rdt_rcv(rcvpkt) && 
not corrupt(rcvpkt) &&
has_seq1(rcvpkt)
rdt_rcv(rcvpkt) && (corrupt(rcvpkt)
sndpkt = make_pkt(ACK, chksum)
udt_send(sndpkt)
sndpkt = make_pkt(NAK, chksum)
udt_send(sndpkt)
Chương 3. Giao thức tầng giao vận (transport layer) 32
RDT2.2: a NAK-free protocol
Wait for 
call 0 from 
above
sndpkt = make_pkt(0, data, checksum)
udt_send(sndpkt)
rdt_send(data)
udt_send(sndpkt)
rdt_rcv(rcvpkt) && 
( corrupt(rcvpkt) ||
isACK(rcvpkt,1) )
rdt_rcv(rcvpkt) 
&& notcorrupt(rcvpkt) 
&& isACK(rcvpkt,0)
Wait for 
ACK
0
sender FSM
fragment
Wait for 
0 from 
below
rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) 
&& has_seq1(rcvpkt) 
extract(rcvpkt,data)
deliver_data(data)
sndpkt = make_pkt(ACK1, chksum)
udt_send(sndpkt)
rdt_rcv(rcvpkt) && 
(corrupt(rcvpkt) ||
has_seq1(rcvpkt))
udt_send(sndpkt)
receiver FSM
fragment
L
Chương 3. Giao thức tầng giao vận (transport layer) 33
RDT3.0: channels with errors and loss
 Tầng dưới:
Có thể có lỗi.
Có thể gây mất mát gói tin.
 Giải pháp:
Sender truyền lại gói tin nếu như chờ ACK một thời 
gian nhất định nào đó mà không thấy (cần countdown 
timer).
Nếu ACK hay gói tin chỉ bị chậm thôi?
 truyền lại sẽ gây ra hiện tượng lặp gói tin.
 cần sequence number.
Chương 3. Giao thức tầng giao vận (transport layer) 34
RDT3.0 sender
sndpkt = make_pkt(0, data, checksum)
udt_send(sndpkt)
start_timer
rdt_send(data)
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)
rdt_rcv(rcvpkt) 
&& notcorrupt(rcvpkt) 
&& isACK(rcvpkt,0)
rdt_rcv(rcvpkt) && 
( corrupt(rcvpkt) ||
isACK(rcvpkt,0) )
rdt_rcv(rcvpkt) 
&& notcorrupt(rcvpkt) 
&& isACK(rcvpkt,1)
stop_timer
stop_timer
udt_send(sndpkt)
start_timer
timeout
udt_send(sndpkt)
start_timer
timeout
rdt_rcv(rcvpkt)
Wait for 
call 0from 
above
Wait 
for 
ACK1
L
rdt_rcv(rcvpkt)
L
L
L
Chương 3. Giao thức tầng giao vận (transport layer) 35
RDT3.0 in action
Chương 3. Giao thức tầng giao vận (transport layer) 36
RDT3.0 in action (cont)
Chương 3. Giao thức tầng giao vận (transport layer) 37
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 (109 bits per second)
 Propagation delay: 15 ms 
 Size of packet: 1KB
transmit =
8kb/pkt
109 b/sec
= 8 microsec
m U sender: utilization – fraction of time sender busy sending
m 1KB trong 30msec -> 33KB/sec effective throught put over 1 Gbps link
m 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
Chương 3. Giao thức tầng giao vận (transport layer) 38
RDT3.0 stop-and-wait operation
first packet bit transmitted, t = 0
sender receiver
 ... sport Layer 3-59
TCP RTT và Timeout
Transport Layer 3-60
EstimatedRTT = (1- )*EstimatedRTT + *SampleRTT
 trung bình động có trọng số hàm mũ 
 ảnh hưởng của giá trị cũ giảm nhanh theo hàm mũ 
 Giá trị thông dụng: = 0.125
Transpo
rt Layer3-61
Ví dụ đo RTT:
RTT: gaia.cs.umass.edu to fantasia.eurecom.fr
100
150
200
250
300
350
1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106
time (seconnds)
R
TT
 (m
ill
is
ec
on
ds
)
SampleRTT Estimated RTT
TCP Round Trip Time and Timeout
Thiết lập thời gian Timeout
 EstimtedRTT cộng với “biên an toàn”
 EstimatedRTT thay đổi với biên độ lớn → biên an toàn lớn
 Đầu tiên đo độ biến thiên của EstimatedRTT so với SampleRTT
Transport Layer 3-62
TimeoutInterval = EstimatedRTT + 4*DevRTT
DevRTT = (1-)*DevRTT +
*|SampleRTT-EstimatedRTT|
(Thông thường,  = 0.25)
Sau đó thiết lập Timeout:
TCP: Truyền tải dữ liệu tin cậy
 TCP tạo dịch vụ truyền tải 
dữ liệu tin cậy trên nền 
dịch vụ không tin cậy IP
 Các segment được truyền 
theo cơ chế đường ống 
(pipelined)
 ACK cộng dồn
 TCP chỉ sử dụng một bộ 
đếm thời gian cho truyền 
tải lại
 Truyền tải lại được kích 
hoạt bởi: 
 sự kiện hết thời gian chờ 
 Trùng lặp ACK 
 Đầu tiên xem xét ng/gửi 
TCP đơn giản: 
 bỏ qua các ack trùng lặp
 bỏ qua kiểm tra lưu lượng, 
kiểm tra tắc nghẽn
Chương 3. Giao thức tầng giao vận (transport layer) 63
TCP sender events:
data rcvd from app:
 Tạo ra segment với STT
 STT là stt trên luồng-byte của 
byte dữ liệu đầu tiên trong 
segment
 khởi động bộ đếm t/g nếu nó 
chưa chạy (bộ đếm t/g cho 
segment chưa nhận ACK lâu 
nhất) 
 khoảng t/g hết hạn: 
TimeOutInterval
timeout:
 gửi lại segment gây nên 
timeout
 đặt lại timer
Ack rcvd:
 Nếu đó là ACK cho các khúc 
trước đó chưa được ACK 
 Cập nhật danh sách các gói đã 
được ACK
 chạy lại timer nếu như còn có các 
segment chưa ACK
Transport Layer 3-64
Transport Layer 3-65
TCP 
sender
(Đơn giản hóa)
NextSeqNum = InitialSeqNum
SendBase = InitialSeqNum
loop (forever) { 
switch(event)
event: Nhận được dữ liệu từ application tầng trên
tạo TCP segment có số thứ tự là NextSeqNum 
if (timer không chạy)
khởi chạy timer
đẩy segment xuống cho tầng IP 
NextSeqNum = NextSeqNum + length(data) 
event: timer timeout
Gửi lại segment có stt nhỏ nhất mà chưa được ACK
khởi chạy timer
event: Nhận ACK, với giá trị trường ACK là y
if (y > SendBase) { 
SendBase = y
if (Còn sement chưa ACK)
khởi chạy timer 
} 
} /* end of loop forever */
Ghi chú:
• SendBase-1: byte ACK được 
cộng dồn cuối cùng
Ví dụ:
• SendBase-1 = 71;
y=73, vậy bên nhận cần 73+ ;
y > SendBase, vì vậy có thêm 
dữ liệu được ACK
TCP: retransmission scenarios
Transport Layer 3-66
Host A
time
premature timeout
Host B
S
e
q
=
9
2
 t
im
e
o
u
t
Host A
loss
ti
m
e
o
u
t
lost ACK scenario
Host B
X
time
S
e
q
=
9
2
 t
im
e
o
u
t
SendBase= 100
SendBase= 120
SendBase= 120
Sendbase= 100
TCP retransmission scenarios (more)
Transport Layer 3-67
Host A
loss
ti
m
e
o
u
t
Cumulative ACK scenario
Host B
X
time
SendBase= 120
Transpo
rt Layer3-68
Tạo ACK trong TCP [RFC 1122, RFC 2581]
Sự kiện tại Receiver
Nhận được segment đúng thứ tự
với STT hợp lí. Tất cả dữ liệu từ
STT về trước đã được ACK
Nhận được segment đúng thứ tự
với số STT hợp lý. Một segment 
khác đang chờ ACK
Nhân được segment không đúng
thứ tự (STT cao hơn STT mong
đợi). Phát hiện thiếu hụt
Segment nhận được khỏa lấp 1
phân hoặc toàn bộ phần thiếu
hụt
Hành vi TCP tại Receiver
Trì hoãn chưa ACK vội. chờ segment
kế tiếp trong 500ms. nếu không có 
segment nào được gửi đến, gửi ACK
Ngay lập tức gửi 1 segment với ACK
cộng dồn xác nhận cả 2 segment đã 
đượcnhận thành công 
Ngay lập tức gửi 1 ACK lặp, chỉ rõ byte
mong đợi tiếp theo
Ngay lập tức gửi ACK
Transpo
rt Layer3-69
Fast Retransmit
 Time-out thường tương đối dài:
 trì hoãn lâu trước khi gửi lại gói 
bị mất
 phát hiện mất segments thông 
qua ACK lặp.
 Sender thường gửi nhiều segment 
liên tục
 nếu có 1 segment bị mất thì sẽ có 
nhiều ACK lặp
 Nếu sender nhận được 3 
ACK yêu cầu cho cùng 1 
segment → nó xác định 
segment đó đã bị mất:
 fast retransmit: gửi lại 
segment bị mất ngay cả khi 
chưa tới thời điểm time-out
Fast Retransmit (cont.)
Chương 3. Giao thức tầng giao vận (transport layer) 70
Host A Host B
X
time
Gửi liền 2 ACK 
yêu cầu segment có seq# 2
S
e
q
=
2
 t
im
e
o
u
t
Transpo
rt Layer3-71
event: Nhận ACK, với ACK# là y 
if (y > SendBase) { 
SendBase = y
if (Nếu còn segment đang đợi ACK)
start timer 
} 
else { 
tăng bộ đếm duplicate ACKs nhận được cho y
if (nếu bộ đếm lặp của y = 3) {
gửi lại segment với sequence # = y
}
Fast retransmit algorithm:
a duplicate ACK for 
already ACKed segment
Truyền lại nhanh
Chương 3. Giao thức tầng giao vận (transport layer) 72
TCP flow control
 Các apps có thể xử lý dữ liệu chậm, các gói tin nhận về được đưa 
vào bộ đệm (receiver buffer).
 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.
Chương 3. Giao thức tầng giao vận (transport layer) 73
TCP Connection management
 TCP: Connection-oriented.
 Khởi tạo các giá trị:
 sequence number.
 buffers, flow control 
information.
 Client:Connection initiator 
(khởi tạo liên kết: socket).
 Server: Chấp nhận kết nối.
Three way handshaking:
 Bước 1: client gửi TCP 
SYN control segment tới 
server.
 Bước 2: server nhận SYN 
segment rồi trả lời bằng 
SYNACK segment.
 Bước 3: client nhận 
SYNACK segment và trả 
lời bằng ACK segment (có 
thể có dữ liệu đi kèm).
Chương 3. Giao thức tầng giao vận (transport layer) 74
Chương 3. Giao thức tầng giao vận (transport layer) 75
TCP Connection management: ngắt liên kết
 Bước 1: client (phía muốn 
ngắt liên kết) gửi TCP FIN 
segment.
 Bước 2: server (phía còn lại) 
nhận được FIN, gửi ACK, 
ngắt liên kết, gửi tiếp FIN 
segment.
 Bước 3: client nhận FIN, 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).
 Bước 4: server nhận ACK, 
đóng liên kết.
client server
closing
closing
closed
ti
m
e
d
 w
a
it
closed
Chương 3. Giao thức tầng giao vận (transport layer) 76
TCP client lifecycle
TCP server lifecycle
TCP Connection management (cont.)
Chương 3. Giao thức tầng giao vận (transport layer) 77bangtqh@utc2.edu.vn
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
Chương 3. Giao thức tầng giao vận (transport layer) 78
Congestion control
 Nghẽn mạng là điều khó tránh khỏi!!!
 Khi mạng bị nghẽn, các gói tin có thể bị trễ hay bị mất.
 Hai hướng tiếp cận:
 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).
 TCP sử dụng phương pháp end-end congestion control.
Chương 3. Giao thức tầng giao vận (transport layer) 79
Causes/costs of congestion: scenario 1
 2 senders, 2 
receivers
 01 router, buffers vô 
hạn
 no retransmission
 large delays when 
congested
 maximum 
achievable 
throughput
unlimited shared 
output link buffers
Host A
lin : original data
Host B
lout
Chương 3. Giao thức tầng giao vận (transport layer) 80
Causes/costs of congestion: scenario 2
 one router, buffers có hạn
 sender gửi lại các packet bị mất
finite shared output 
link buffers
Host A lin : original 
data
Host B
lout
l'in : original data, plus 
retransmitted data
Chương 3. Giao thức tầng giao vận (transport layer) 81
 always: (goodput)
 “perfect” retransmission only when loss:
 retransmission of delayed (not lost) packet makes larger (than perfect 
case) for same
l
in
l
out
=
l
in
l
out
>
l
in
l
out
“costs” of congestion:
r more work (retrans) for given “goodput”
r unneeded retransmissions: link carries multiple copies of pkt
Causes/costs of congestion: scenario 2
Chương 3. Giao thức tầng giao vận (transport layer) 82
Causes/costs of congestion: scenario 3
 4 senders
 multihop paths
 timeout/retransmit
l
in
Q: what happens as 
and increase ?l
in
finite shared output 
link buffers
Host A
lin : original data
Host B
lout
l'in : original data, plus 
retransmitted data
Chương 3. Giao thức tầng giao vận (transport layer) 83
Causes/costs of congestion: scenario 3
Another “cost” of congestion:
r 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
l
o
u
t
Chương 3. Giao thức tầng giao vận (transport layer) 84
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 
mạng.
Làm thế nào sender đánh giá 
được tình trạng nghẽn?
 loss event = timeout or 3 
duplicate ACKs
 TCP sender reduces rate 
(CongWin) after loss 
event
Cơ chế đánh giá nghẽn:
 AIMD
 Slow start
 conservative after timeout 
events
rate =
CongWin
RTT
Bytes/sec
Chương 3. Giao thức tầng giao vận (transport layer) 85
8 Kbytes
16 Kbytes
24 Kbytes
time
congestion
window
multiplicative decrease: cut 
CongWin in half after 
loss event
additive increase: increase 
CongWin by 1 MSS every 
RTT in the absence of loss 
events: probing
Long-lived TCP connection
TCP AIMD 
(additive-increase, multiplicative-decrease)
Chương 3. Giao thức tầng giao vận (transport layer) 86
TCP Slow Start
 When connection 
begins, CongWin = 1 
MSS
 Example: MSS = 500 
bytes & RTT = 200 msec
 initial rate = 20 kbps
 Available bandwidth 
may be >> MSS/RTT
 desirable to quickly ramp 
up to respectable rate
r When connection begins, 
increase rate exponentially 
fast until first loss event
Chương 3. Giao thức tầng giao vận (transport layer) 87
TCP Slow Start (more)
 When connection begins, 
increase rate exponentially 
until first loss event:
 double CongWin every RTT
 done by incrementing 
CongWin for every ACK 
received
 Summary: initial rate is slow 
but ramps up exponentially 
fast
Host A
R
T
T
Host B
time
Chương 3. Giao thức tầng giao vận (transport layer) 88
Refinement
 After 3 dup ACKs:
 CongWin is cut in half
 window then grows linearly
 But after timeout event:
 CongWin instead set to 1 
MSS; 
 window then grows 
exponentially
 to a threshold, then grows 
linearly
• 3 dup ACKs indicates 
network capable of 
delivering some segments
• timeout before 3 dup 
ACKs is “more alarming”
Philosophy:
Chương 3. Giao thức tầng giao vận (transport layer) 89
Q: When should the 
exponential increase switch 
to linear? 
A: When CongWin gets to 1/2 
of its value before timeout.
Implementation:
 Variable Threshold 
 At loss event, Threshold is set to 1/2 of CongWin just before loss 
event
Refinement (more)
Chương 3. Giao thức tầng giao vận (transport layer) 90
 When CongWin is below Threshold, sender in slow-
start phase, window grows exponentially.
 When CongWin is above Threshold, sender is in 
congestion-avoidance phase, window grows linearly.
 When a triple duplicate ACK occurs, Threshold set 
to CongWin/2 and CongWin set to Threshold.
 When timeout occurs, Threshold set to CongWin/2
and CongWin is set to 1 MSS.
Summary: TCP Congestion Control
Chương 3. Giao thức tầng giao vận (transport layer) 91
TCP throughput (or transmission rate)
 Gía trị throughout (số packet gửi đi / giây) của TCP 
tính theo Window size và RTT là bao nhiêu?
Không tính giai đoạn slowstart
 Gọi W là giá trị window size khi xuất hiện mất gói.
Khi window size = W, throughput = W/RTT
Ngay sau khi có nghẽn (lost), window size giảm xuống 
= W/2 throughput = W/2RTT. 
 Throughout trung bình là: 0.75 W/RTT 
Throughout TB = 3W/4RTT
Chương 3. Giao thức tầng giao vận (transport layer) 92
TCP Futures
 Hỏi: Giả sử MSS = 1500 byte, RTT = 100µs , Cần gửi đi 
với tốc độ là 10 Gbps (throughput=109 bps). Vậy giá trị 
Windowsize phải là bao nhiêu ?
 Trả lời: window size W = 83,333 in-flight segments
 Throughput tính theo loss rate:
 Trong đó L = loss rate 
LRTT
MSS22.1
Chương 3. Giao thức tầng giao vận (transport layer) 93
Delay modeling
Q: How long does it take to 
receive an object from a 
Web server after sending 
a request? 
Ignoring congestion, delay 
is influenced by:
 TCP connection establishment
 data transmission delay
 slow start
Notation, assumptions:
 Assume one link between 
client and server of rate R
 S: MSS (bits)
 O: object size (bits)
 no retransmissions (no 
loss, no corruption)
Window size:
 First assume: fixed 
congestion window, W 
segments
 Then dynamic window, 
modeling slow start
Chương 3. Giao thức tầng giao vận (transport layer) 94
Fixed congestion window (1)
First case:
WS/R > RTT + S/R: ACK 
for first segment in 
window returns before 
window’s worth of data 
sent
delay = 2RTT + O/R
Chương 3. Giao thức tầng giao vận (transport layer) 95Transport Layer 3-95
Fixed congestion window (2)
Second case:
 WS/R < RTT + S/R: wait 
for ACK after sending 
window’s worth of data 
sent
delay = 2RTT + O/R
+ (K-1)[S/R + RTT - WS/R]
Chương 3. Giao thức tầng giao vận (transport layer) 96
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
Chương 3. Giao thức tầng giao vận (transport layer) 97
Một số so sánh TCP/UDP
 Có liên kết, lưu trữ trạng 
thái liên kết (quản lý liên 
kết).
 Điểm-điểm
 Có độ trễ (delay): thiết lập, 
quản lý liên kết, luồng, 
nghẽn
 Segment header lớn (20 
bytes)
 Bị giới hạn tốc độ truyền 
(congestion control)
 Không liên kết, không lưu 
trữ trạng thái.
 Điểm-điểm, quảng bá.
 Độ trễ thấp.
 Segment header nhỏ (8 
bytes)
 Không giới hạn tốc độ 
truyền.
Chương 3. Giao thức tầng giao vận (transport layer) 98
Các app thực tế
Application App protocol Transport protocol
Electronic mail SMTP TCP
Remote terminal access Telnet TCP
Web HTTP TCP
File transfer FTP TCP
Remote file server NFS typically UDP
Streaming multimedia proprietary typically UDP
Internet telephony proprietary typically UDP
Network management SNMP typically UDP
Routing protocol RIP typically UDP
Name translation DNS typically UDP

File đính kèm:

  • pdfbai_giang_mang_may_tinh_chuong_3_tang_giao_van_transport_lay.pdf