2. 3: Transport Layer 3a-
傳輸服務及協定
提供在不同的主機上執行
的應用程序一種邏輯式的
通訊方式
傳輸層是在每個末端主機
上運行
傳輸層 vs 網路層服務:
網路層: 資料是在主機與
主機間做傳輸
傳輸層: 資料是在程序與
程序間作傳輸
必須依賴網路層服務
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
logicalend-end
transport
3. 3: Transport Layer 3a-
傳輸層通訊協定
網際網路傳輸服務:
可靠的 , 按照順序的單撥
(unicast) 傳輸 : TCP
擁塞
流量控制
連線設定
不可靠的 ( 最省力式
“ best -effort”), 不按照
順序的單撥或多撥
(multicast) 傳輸: UDP
不可用的服務:
即時服務
頻寬保證
可靠的多撥
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
logicalend-end
transport
4. 3: Transport Layer 3a-
application
transport
network
M
P2
application
transport
network
多工傳輸 / 分工傳輸
回想: 資料段 – 在傳輸層
實體間作交換的資料單
元
aka TPDU: 傳輸層資
料單元 接收者
Ht
Hn
分工傳輸: 傳送收到的資料段
到正確的應用層程序中
segment
資料段 M
application
transport
network
P1
M
M M
P3 P4
資料段
標頭
應用層資料
6. 3: Transport Layer 3a-
多工傳輸 / 分工傳輸:範例
主機 A 伺服器 B
來源埠 : x
目的地埠 : 23
來源埠 :23
目的地埠 : x
使用的埠 : 簡易遠端登入應用程式
網路客戶端主機 A
網路
伺服器 B
網路客戶端主機 C
來源 IP: C
目的地 IP: B
來源埠 : x
目的地埠 : 80
來源 IP: C
目的地 IP: B
來源埠 : y
目的地埠 : 80
使用的埠 : 網路伺服器
來源 IP: A
目的地 IP: B
來源埠 : x
目的地埠 : 80
38. 3: Transport Layer 3a-
TCP: 概觀 RFCs: 793, 1122, 1323, 2018, 2581
全雙工資料 :
同一個連線的雙向資料流
MSS: 最大分節大小 ( 最
大 segment size)
連線導向 :
handshaking ( 交換控制訊
息 ) 在資料交換前初始化
傳送端 , 接收端 獎態
流量控制 :
傳送端 不會把 接收端 的
緩衝區 灌滿
點對點 :
一個 傳送端 , 一個 接收端
可靠的,順序的 位元組
序列 :
無 “ message boundaries”
pipelined:
TCP 壅塞和流量控制決定
window size
送 & 收 緩衝區 s
s o c k e t
d o o r
T C P
s e n d b u f f e r
T C P
r e c e iv e b u f f e r
s o c k e t
d o o r
s e g m e n t
a p p lic a t io n
w r it e s d a ta
a p p lic a t io n
r e a d s d a t a
39. 3: Transport Layer 3a-
TCP 節區架構
source port # dest port #
32 bits
application
資料
(variable length)
sequence number
acknowledgement number
rcvr window size
ptr urgent 資料checksum
FSRPAU
head
len
not
used
Options (variable length)
URG: urgent 資料
( 一般來說不會用到 )
ACK: ACK #
valid
PSH: push 資料 now
( 一般來說不會用到 )
RST, SYN, FIN:
連線建立
( 建立、解除命令 )
接收端
想要收的
位元組 數量
以資料的 位元組
數計算
( 不是節區 !)
Internet
checksum
(as in UDP)
41. 3: Transport Layer 3a-
TCP: 可靠的資料傳輸
精簡化 傳送端 , 假設
wait
for
event
等待事件
事件 : 應用程式接收資料
事件 : 計時器等待
segment with seq # y
逾時
事件 : 收到 ACK # y 的 ACK
建位,送出 segment
重送 segment
ACK 處理
•單向資料傳送
•無流量和壅塞控制
42. 3: Transport Layer 3a-
TCP:
可靠的
資料
傳輸
00 傳送 base = initial_sequence number
01 nextseqnum = initial_sequence number
02
03 loop (forever) {
04 switch(event)
05 event: 資料 接收 d from application above
06 create TCP segment with sequence number nextseqnum
07 start 時間 r for segment nextseqnum
08 pass segment to IP
09 nextseqnum = nextseqnum + length( 資料 )
10 event: 時間 r 逾時 for segment with sequence number y
11 retransmit segment with sequence number y
12 compue new 逾時 interval for segment y
13 restart 時間 r for sequence number y
14 event: ACK 接收 d, with ACK field value of y
15 if (y > 傳送 base) { /* 累進的 ACK of all 資料 up to y */
16 cancel all 時間 rs for segments with sequence numbers < y
17 傳送 base = y
18 }
19 else { /* a duplicate ACK for already ACKed segment */
20 increment number of duplicate ACKs 接收 d for y
21 if (number of duplicate ACKS 接收 d for y == 3) {
22 /* TCP fast retransmit */
23 re 傳送 segment with sequence number y
24 restart 時間 r for segment y
25 }
26 } /* end of loop forever */
精簡化的
TCP
傳送端