版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
數(shù)據(jù)通信與計(jì)算機(jī)網(wǎng)絡(luò)電信學(xué)院信通系 洪偉第
7
章
運(yùn)輸層*7.1
運(yùn)輸層協(xié)議概述*7.2
TCP/IP體系中的運(yùn)輸層運(yùn)輸層中的兩個(gè)協(xié)議端口的概念*7.3
用戶數(shù)據(jù)報(bào)協(xié)議UDPUDP概述UDP用戶數(shù)據(jù)報(bào)的首部格式第
7
章
運(yùn)輸層(續(xù))7.4
傳輸控制協(xié)議TCP*7.4.1
TCP概述*7.4.2
TCP報(bào)文段的首部*7.4.3
TCP的數(shù)據(jù)編號(hào)與確認(rèn)*7.4.4
TCP的流量控制與擁塞控制*7.4.5
TCP的重傳機(jī)制7.4.6
采用隨機(jī)早期丟棄RED進(jìn)行擁塞控制*7.4.7
TCP的運(yùn)輸連接管理7.4.8
TCP的有限狀態(tài)機(jī)7.1
運(yùn)輸層協(xié)議概述
從通信和信息處理的角度看,運(yùn)輸層向它上面的應(yīng)用層提供通信服務(wù),它屬于面向通信部分的最高層,同時(shí)也是用戶功能中的最低層。應(yīng)用層網(wǎng)絡(luò)層
數(shù)據(jù)鏈路層物理層面向信息處理面向通信用戶功能運(yùn)輸層網(wǎng)絡(luò)功能應(yīng)用進(jìn)程之間的通信
兩個(gè)主機(jī)進(jìn)行通信實(shí)際上就是兩個(gè)主機(jī)中的應(yīng)用進(jìn)程互相通信。應(yīng)用進(jìn)程之間的通信又稱為端到端的通信。
運(yùn)輸層的一個(gè)很重要的功能就是復(fù)用和分用。應(yīng)用層不同進(jìn)程的報(bào)文通過不同的端口向下
交到運(yùn)輸層,再往下就共用網(wǎng)絡(luò)層提供的服
務(wù)。
“運(yùn)輸層提供應(yīng)用進(jìn)程間的邏輯通信”。
“邏輯通信”的意思是:運(yùn)輸層之間的通信好像是沿水平方向傳送數(shù)據(jù)。但事實(shí)上這兩個(gè)運(yùn)輸層之間并沒有一條水平方向的物理連接?!\(yùn)輸層協(xié)議和網(wǎng)絡(luò)層協(xié)議的主要區(qū)別應(yīng)用進(jìn)程
應(yīng)用進(jìn)程…因
特
網(wǎng)IP協(xié)議的作用范圍(提供主機(jī)之間的邏輯通信)TCP和UDP協(xié)議的作用范圍(提供進(jìn)程之間的邏輯通信)運(yùn)輸層的主要功能
運(yùn)輸層為應(yīng)用進(jìn)程之間提供端到端的邏輯通信(但網(wǎng)絡(luò)層是為主機(jī)之間提供邏輯通信)。運(yùn)輸層還要對(duì)收到的報(bào)文進(jìn)行差錯(cuò)檢測(cè)。
運(yùn)輸層需要有兩種不同的運(yùn)輸協(xié)議,即面向連接的TCP和無連接的UDP。運(yùn)輸層與其上下層之間的關(guān)系的OSI表示法運(yùn)輸實(shí)體運(yùn)輸協(xié)議運(yùn)輸服務(wù)用戶(應(yīng)用層實(shí)體)層接口運(yùn)輸實(shí)體
運(yùn)輸層層接口網(wǎng)絡(luò)層(或網(wǎng)際層)應(yīng)用層主機(jī)
A
主機(jī)
B運(yùn)輸服務(wù)用戶(應(yīng)用層實(shí)體)運(yùn)輸層服務(wù)訪問點(diǎn)TSAP網(wǎng)絡(luò)層服務(wù)訪問點(diǎn)NSAP運(yùn)輸層向上層提供可靠的和不可靠的邏輯通信信道7.2
TCP/IP體系中的運(yùn)輸層7.2.1運(yùn)輸層中的兩個(gè)協(xié)議TCP/IP的運(yùn)輸層有兩個(gè)不同的協(xié)議:用戶數(shù)據(jù)報(bào)協(xié)議UDP(UserDatagramProtocol)傳輸控制協(xié)議TCP(Transmission
Control
Protocol)
兩個(gè)對(duì)等運(yùn)輸實(shí)體在通信時(shí)傳送的數(shù)據(jù)單位叫作運(yùn)輸協(xié)議數(shù)據(jù)單元TPDU(Transport
ProtocolData
Unit)。
TCP傳送的數(shù)據(jù)單位協(xié)議是TCP報(bào)文段
(segment)
UDP傳送的數(shù)據(jù)單位協(xié)議是UDP報(bào)文或用戶數(shù)據(jù)報(bào)。TCP與UDPTCP/IP體系中的運(yùn)輸層協(xié)議UDP
TCP應(yīng)用層IP與各種網(wǎng)絡(luò)接口運(yùn)輸層TCP與UDP
UDP在傳送數(shù)據(jù)之前不需要先建立連接。對(duì)方的運(yùn)輸層在收到UDP報(bào)文后,不需要給出任何確認(rèn)。雖然UDP不提供可靠交付,但在某些情況下UDP是一種最有效的工作方式。
TCP則提供面向連接的服務(wù)。TCP不提供廣播或多播服務(wù)。由于TCP要提供可靠的、面向連接的運(yùn)輸服務(wù),因此不可避免地增加了許多的開銷。這不僅使協(xié)議數(shù)據(jù)單元的首部增大很多,還要占用許多的處理機(jī)資源。還要強(qiáng)調(diào)兩點(diǎn)
運(yùn)輸層的UDP用戶數(shù)據(jù)報(bào)與網(wǎng)際層的IP數(shù)據(jù)
報(bào)有很大區(qū)別。IP數(shù)據(jù)報(bào)要經(jīng)過互連網(wǎng)中許多路由器的存儲(chǔ)轉(zhuǎn)發(fā),但UDP用戶數(shù)據(jù)報(bào)是
在運(yùn)輸層的端到端抽象的邏輯信道中傳送的。
TCP報(bào)文段是在運(yùn)輸層抽象的端到端邏輯信道中傳送,這種信道是可靠的全雙工信道。但這樣的信道卻不知道究竟經(jīng)過了哪些路由器,而這些路由器也根本不知道上面的運(yùn)輸層是否建立了TCP連接。7.2.2
端口的概念端口就是運(yùn)輸層服務(wù)訪問點(diǎn)TSAP。
端口的作用就是讓應(yīng)用層的各種應(yīng)用進(jìn)程都能將其數(shù)據(jù)通過端口向下交付給運(yùn)輸層,以及讓運(yùn)輸層知道應(yīng)當(dāng)將其報(bào)文段中的數(shù)據(jù)向上通過端口交付給應(yīng)用層相應(yīng)的進(jìn)程。
從這個(gè)意義上講,端口是用來標(biāo)志應(yīng)用層的進(jìn)程。端口在進(jìn)程之間的通信中所起的作用應(yīng)用層運(yùn)輸層網(wǎng)絡(luò)層TCP報(bào)文段UDP用戶數(shù)據(jù)報(bào)應(yīng)用進(jìn)程TCP復(fù)用IP復(fù)用UDP復(fù)用TCP報(bào)文段UDP用戶數(shù)據(jù)報(bào)應(yīng)用進(jìn)程端口端口TCP分用UDP分用IP分用IP數(shù)據(jù)報(bào)IP數(shù)據(jù)報(bào)發(fā)送方接收方端口端口用一個(gè)16
bit端口號(hào)進(jìn)行標(biāo)志。
端口號(hào)只具有本地意義,即端口號(hào)只是為了標(biāo)志本計(jì)算機(jī)應(yīng)用層中的各進(jìn)程。在因特網(wǎng)中不同計(jì)算機(jī)的相同端口號(hào)是沒有聯(lián)系的。兩類端口
一類是熟知端口,其數(shù)值一般為0~1023。當(dāng)一種新的應(yīng)用程序出現(xiàn)時(shí),必須為它指派一個(gè)熟知端口。
另一類則是一般端口,用來隨時(shí)分配給請(qǐng)求通信的客戶進(jìn)程。插口(socket)
TCP使用“連接”(而不僅僅是“端口”)作為最基本的抽象,同時(shí)將TCP連接的端點(diǎn)稱為
插口(socket),或套接字、套接口。插口和端口、IP地址的關(guān)系是:IP地址3端口號(hào)15003,1500插口(socket)同一個(gè)名詞socket有多種不同的意思應(yīng)用編程接口API稱為socket
API,簡(jiǎn)稱為socketsocket
API中使用的一個(gè)函數(shù)名也叫作socket。調(diào)用socket函數(shù)的端點(diǎn)稱為socket。
調(diào)用socket函數(shù)時(shí)其返回值稱為socket描述符,可簡(jiǎn)稱為socket。
在操作系統(tǒng)內(nèi)核中連網(wǎng)協(xié)議的Berkeley實(shí)現(xiàn),稱為socket實(shí)現(xiàn)。7.3用戶數(shù)據(jù)報(bào)協(xié)議UDP7.3.1
UDP概述
UDP只在IP的數(shù)據(jù)報(bào)服務(wù)之上增加了很少一點(diǎn)的功能,即端口的功能和差錯(cuò)檢測(cè)的功能。
雖然UDP用戶數(shù)據(jù)報(bào)只能提供不可靠的交付,但UDP在某些方面有其特殊的優(yōu)點(diǎn)。發(fā)送數(shù)據(jù)之前不需要建立連接UDP的主機(jī)不需要維持復(fù)雜的連接狀態(tài)表。UDP用戶數(shù)據(jù)報(bào)只有8個(gè)字節(jié)的首部開銷。
網(wǎng)絡(luò)出現(xiàn)的擁塞不會(huì)使源主機(jī)的發(fā)送速率降低。這對(duì)某些實(shí)時(shí)應(yīng)用是很重要的。端口是用報(bào)文隊(duì)列來實(shí)現(xiàn)UDP
端口51000UDP端口69出隊(duì)列入隊(duì)列出隊(duì)列入隊(duì)列TFTP
客戶
TFTP
服務(wù)器UDP用戶數(shù)據(jù)報(bào)應(yīng)用層運(yùn)輸層TCP首部20字節(jié)固定首部目
的
端
口數(shù)據(jù)偏移檢
驗(yàn)
和選
項(xiàng)
(長
度
可
變)源
端
口序
號(hào)緊
急
指
針窗
口確
認(rèn)
號(hào)保
留U
A
P
R
S
FR
C
S
S
Y
IG
K
H
T
N
N比特08162431填
充源端口和目的端口字段——各占2字節(jié)。端口是運(yùn)
輸層與應(yīng)用層的服務(wù)接口。運(yùn)輸層的復(fù)用和分用功能都要通過端口才能實(shí)現(xiàn)。TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢
驗(yàn)
和選
項(xiàng) (長
度
可
變)源端口序
號(hào)緊
急
指
針窗
口確
認(rèn)
號(hào)保
留U
A
P
R
S
FR
C
S
S
Y
IG
K
H
T
N
N比特
08162431填
充序號(hào)字段——占4字節(jié)。TCP連接中傳送的數(shù)據(jù)流
中的每一個(gè)字節(jié)都編上一個(gè)序號(hào)。序號(hào)字段的值則指的是本報(bào)文段所發(fā)送的數(shù)據(jù)的第一個(gè)字節(jié)的序號(hào)。TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢
驗(yàn)
和選
項(xiàng) (長
度
可
變)源端口序
號(hào)緊
急
指
針窗
口確
認(rèn)
號(hào)保
留U
A
P
R
S
FR
C
S
S
Y
IG
K
H
T
N
N比特
08162431填
充確認(rèn)號(hào)字段——占4字節(jié),是期望收到對(duì)方的下一個(gè)報(bào)文段的數(shù)據(jù)的第一個(gè)字節(jié)的序號(hào)。TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢
驗(yàn)
和選
項(xiàng) (長
度
可
變)源端口序
號(hào)緊
急
指
針窗
口確
認(rèn)
號(hào)保
留U
A
P
R
S
FR
C
S
S
Y
IG
K
H
T
N
N比特
08162431填
充數(shù)據(jù)偏移——占
4
bit,它指出TCP報(bào)文段的數(shù)據(jù)起始處距離
TCP報(bào)文段的起始處有多遠(yuǎn)?!皵?shù)據(jù)偏移”的單位不是字節(jié)而是32
bit
字(4字節(jié)為計(jì)算單位)。TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢
驗(yàn)
和選
項(xiàng) (長
度
可
變)源端口序
號(hào)緊
急
指
針窗
口確
認(rèn)
號(hào)保
留U
A
P
R
S
FR
C
S
S
Y
IG
K
H
T
N
N比特
08162431填
充保留字段——占6
bit,保留為今后使用,但目前應(yīng)置為0。TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢
驗(yàn)
和選
項(xiàng) (長
度
可
變)源端口序
號(hào)緊
急
指
針窗
口確
認(rèn)
號(hào)保
留U
A
P
R
S
FR
C
S
S
Y
IG
K
H
T
N
N比特
08162431填
充緊急比特
URG
——
當(dāng)
URG 1
時(shí),表明緊急指針字段有效。它告訴系統(tǒng)此報(bào)文段中有緊急數(shù)據(jù),應(yīng)盡快傳送(相當(dāng)于高優(yōu)先級(jí)的數(shù)據(jù))。TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢
驗(yàn)
和選
項(xiàng) (長
度
可
變)源端口序
號(hào)緊
急
指
針窗
口確
認(rèn)
號(hào)保
留U
A
P
R
S
FR
C
S
S
Y
IG
K
H
T
N
N比特
08162431填
充確認(rèn)比特
ACK
——
只有當(dāng)
ACK 1
時(shí)確認(rèn)號(hào)字段才有效。當(dāng)
ACK 0
時(shí),確認(rèn)號(hào)無效。TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢
驗(yàn)
和選
項(xiàng) (長
度
可
變)源端口序
號(hào)緊
急
指
針窗
口確
認(rèn)
號(hào)保
留U
A
P
R
S
FR
C
S
S
Y
IG
K
H
T
N
N比特
08162431填
充推送比特PSH
(PuSH)——接收TCP收到推送比特置1的報(bào)文段,就盡快地交付給接收應(yīng)用進(jìn)程,而不再等到整個(gè)緩存都填滿了后再向上交付。TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢
驗(yàn)
和選
項(xiàng) (長
度
可
變)源端口序
號(hào)緊
急
指
針窗
口確
認(rèn)
號(hào)保
留U
A
P
R
S
FR
C
S
S
Y
IG
K
H
T
N
N比特
08162431填
充復(fù)位比特
RST
(ReSeT)
——
當(dāng)
RST 1
時(shí),表明
TCP連接中出現(xiàn)嚴(yán)重差錯(cuò)(如由于主機(jī)崩潰或其他原因),必須釋放連接,然后再重新建立運(yùn)輸連接。TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢
驗(yàn)
和選
項(xiàng) (長
度
可
變)源端口序
號(hào)緊
急
指
針窗
口確
認(rèn)
號(hào)保
留U
A
P
R
S
FR
C
S
S
Y
IG
K
H
T
N
N比特
08162431填
充同步比特SYN——同步比特SYN置為1,就表示這是一個(gè)連接請(qǐng)求或連接接受報(bào)文。TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢
驗(yàn)
和選
項(xiàng) (長
度
可
變)源端口序
號(hào)緊
急
指
針窗
口確
認(rèn)
號(hào)保
留U
A
P
R
S
FR
C
S
S
Y
IG
K
H
T
N
N比特
08162431填
充終止比特
FIN
(FINal)
——
用來釋放一個(gè)連接。當(dāng)FIN 1
時(shí),表明此報(bào)文段的發(fā)送端的數(shù)據(jù)已發(fā)送完畢,并要求釋放運(yùn)輸連接。TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢
驗(yàn)
和源端口序
號(hào)緊
急
指
針窗
口確
認(rèn)
號(hào)保
留U
A
P
R
S
FR
C
S
S
Y
IG
K
H
T
N
N比特
08162431選
項(xiàng) (長
度
可
變
填
充)窗口字段——占2字節(jié)。窗口字段用來控制對(duì)方發(fā)送的數(shù)據(jù)量,單位為字節(jié)。TCP連接的一端根據(jù)設(shè)置的緩存空間大小確定自己的接收窗口大小,然后通知對(duì)方以確定對(duì)方的發(fā)送窗口的上限。TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢
驗(yàn)
和選
項(xiàng) (長
度
可
變)源端口序
號(hào)緊
急
指
針窗
口確
認(rèn)
號(hào)保
留U
A
P
R
S
FR
C
S
S
Y
IG
K
H
T
N
N比特
08162431填
充檢驗(yàn)和——占2字節(jié)。檢驗(yàn)和字段檢驗(yàn)的范圍包括首部和數(shù)據(jù)這兩部分。在計(jì)算檢驗(yàn)和時(shí),要在TCP報(bào)文段的前面加上12字節(jié)的偽首部。TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢
驗(yàn)
和選
項(xiàng) (長
度
可
變)源端口序
號(hào)緊
急
指
針窗
口確
認(rèn)
號(hào)保
留U
A
P
R
S
FR
C
S
S
Y
IG
K
H
T
N
N比特
08162431填
充緊急指針字段——占16
bit。緊急指針指出在本報(bào)文段中的緊急數(shù)據(jù)的最后一個(gè)字節(jié)的序號(hào)。TCP首部20字節(jié)固定首部數(shù)據(jù)偏移檢
驗(yàn)
和源
端
口 目
的
端
口緊
急
指
針窗
口確
認(rèn)
號(hào)保
留U
A
P
R
S
FR
C
S
S
Y
IG
K
H
T
N
N比特
08162431選
項(xiàng) (長
度
可
變
填
充)選項(xiàng)字段——長度可變。TCP只規(guī)定了一種選項(xiàng),即最大報(bào)文段長度MSS
(Maximum
Segment
Size)。MSS告訴對(duì)方TCP:“我的緩存所能接收的報(bào)文段的數(shù)據(jù)字段的最大長度是MSS個(gè)字節(jié)?!盡SS是TCP報(bào)文段中的數(shù)據(jù)字段的最大長度。數(shù)據(jù)字段序加號(hào)上TCP首部才等于整個(gè)的TCP報(bào)文段。TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢
驗(yàn)
和源端口序
號(hào)緊
急
指
針窗
口確
認(rèn)
號(hào)保
留U
A
P
R
S
FR
C
S
S
Y
IG
K
H
T
N
N比特
08162431選
項(xiàng) (長
度
可
變
填
充)填充字段——這是為了使整個(gè)首部長度是4字節(jié)的整數(shù)倍。7.4.3
TCP的數(shù)據(jù)編號(hào)與確認(rèn)
TCP協(xié)議是面向字節(jié)的。TCP將所要傳送的報(bào)
文看成是字節(jié)組成的數(shù)據(jù)流,并使每一個(gè)字節(jié)對(duì)應(yīng)于一個(gè)序號(hào)。
在連接建立時(shí),雙方要商定初始序號(hào)。TCP每次發(fā)送的報(bào)文段的首部中的序號(hào)字段數(shù)值表示該報(bào)文段中的數(shù)據(jù)部分的第一個(gè)字節(jié)的序號(hào)。
TCP的確認(rèn)是對(duì)接收到的數(shù)據(jù)的最高序號(hào)表示確認(rèn)。接收端返回的確認(rèn)號(hào)是已收到的數(shù)據(jù)的最高序號(hào)加1。因此確認(rèn)號(hào)表示接收端期望下次收到的數(shù)據(jù)中的第一個(gè)數(shù)據(jù)字節(jié)的序號(hào)。7.4.4
TCP的流量控制與擁塞控制1.
滑動(dòng)窗口的概念
TCP采用大小可變的滑動(dòng)窗口進(jìn)行流量控制。窗口大小的單位是字節(jié)。
在TCP報(bào)文段首部的窗口字段寫入的數(shù)值就是當(dāng)前給對(duì)方設(shè)置的發(fā)送窗口數(shù)值的上限。
發(fā)送窗口在連接建立時(shí)由雙方商定。但在通信的過程中,接收端可根據(jù)自己的資源情況,隨時(shí)動(dòng)
態(tài)地調(diào)整對(duì)方的發(fā)送窗口上限值(可增大或減小)。1發(fā)送窗口收到確認(rèn)即可前移100
101
200
201
300
301
400
401
500
501
600
601
700
701 800
801
900可發(fā)送不可發(fā)送指針
發(fā)送端要發(fā)送900字節(jié)長的數(shù)據(jù),劃分為9個(gè)100字節(jié)長的報(bào)文段,而發(fā)送窗口確定為
500字節(jié)。
發(fā)送端只要收到了對(duì)方的確認(rèn),發(fā)送窗口就可前移。
發(fā)送TCP要維護(hù)一個(gè)指針。每發(fā)送一個(gè)報(bào)文段,指針就向前移動(dòng)一個(gè)報(bào)文段的距離。100
101
200
201
300
301
400
401
500
501
600
601
700
701 800
801
9001可發(fā)送不可發(fā)送1發(fā)送窗口收到確認(rèn)即可前移100
101
200
201
300
301
400
401
500
501
600
601
700
701 800
801
900可發(fā)送 不可發(fā)送指針發(fā)送窗口前移指針
發(fā)送端已發(fā)送了400字節(jié)的數(shù)據(jù),但只收到對(duì)前
200字節(jié)數(shù)據(jù)的確認(rèn),同時(shí)窗口大小不變?,F(xiàn)在發(fā)送端還可發(fā)送300字節(jié)。已發(fā)送并被確認(rèn)已發(fā)送但未被確認(rèn)100
101
200
201
300
301
400
401
500
501
600
601
700
701 800
801
9001已發(fā)送并被確認(rèn)已發(fā)送但未被確認(rèn)可發(fā)送不可發(fā)送1已發(fā)送并被確認(rèn)可發(fā)送100
101
200
201
300
301
400
401
500
501
600
601
700
701 800
801
900不可發(fā)送指針指針發(fā)送窗口縮小發(fā)送端收到了對(duì)方對(duì)前400字節(jié)數(shù)據(jù)的確認(rèn),但對(duì)方通知發(fā)送端必須把窗口減小到400字節(jié)。現(xiàn)在發(fā)送端最多還可發(fā)送400字節(jié)的數(shù)據(jù)。發(fā)送窗口前移2.
慢開始和擁塞避免
發(fā)送端的主機(jī)在確定發(fā)送報(bào)文段的速率時(shí),既要根據(jù)接收端的接收能力,又要從全局考慮不要使網(wǎng)絡(luò)發(fā)生擁塞。
因此,每一個(gè)TCP連接需要有以下兩個(gè)狀態(tài)變量:
接收端窗口rwnd(receiver
window)又稱為通知窗口(advertised
window)。擁塞窗口cwnd(congestion
window)。接收端窗口rwnd和擁塞窗口cwnd
(1)
接收端窗口
rwnd
這是接收端根據(jù)其目前的接收緩存大小所許諾的最新的窗口值,是來自接收端的流量控制。接收端將此窗口值放在TCP
報(bào)文的首部中的窗口字段,傳送給發(fā)送端。
(2)
擁塞窗口cwnd(congestionwindow)
是發(fā)送端根據(jù)自己估計(jì)的網(wǎng)絡(luò)擁塞程度而設(shè)置的窗口值,是來自發(fā)送端的流量控制。發(fā)送窗口的上限值
發(fā)送端的發(fā)送窗口的上限值應(yīng)當(dāng)取為接收端窗口
rwnd和擁塞窗口cwnd這兩個(gè)變量中較小的一個(gè),即應(yīng)按以下公式確定:發(fā)送窗口的上限值
Min
[rwnd,
cwnd]
(7-1
當(dāng)rwnd<cwnd時(shí),是接收端的接收能力限制發(fā)送窗口的最大值。
當(dāng)cwnd<rwnd時(shí),則是網(wǎng)絡(luò)的擁塞限制發(fā)送窗口的最大值。慢開始算法的原理
在主機(jī)剛剛開始發(fā)送報(bào)文段時(shí)可先將擁塞窗口cwnd設(shè)置為一個(gè)最大報(bào)文段MSS的數(shù)值。
在每收到一個(gè)對(duì)新的報(bào)文段的確認(rèn)后,將擁塞窗口增加至多一個(gè)MSS的數(shù)值。
用這樣的方法逐步增大發(fā)送端的擁塞窗口
cwnd,可以使分組注入到網(wǎng)絡(luò)的速率更加合理。乘法減小(multiplicative
decrease)
“乘法減小“是指不論在慢開始階段還是擁塞避免階段,只要出現(xiàn)一次超時(shí)(即出現(xiàn)一次網(wǎng)絡(luò)擁塞),就把慢開始門限值ssthresh設(shè)置為當(dāng)前的擁塞窗口值乘以0.5。
當(dāng)網(wǎng)絡(luò)頻繁出現(xiàn)擁塞時(shí),ssthresh值就下降得很快,以大大減少注入到網(wǎng)絡(luò)中的分組數(shù)。加法增大(additive
increase)
“加法增大”是指執(zhí)行擁塞避免算法后,當(dāng)收到對(duì)所有報(bào)文段的確認(rèn)就將擁塞窗
口cwnd增加一個(gè)MSS大小,使擁塞窗口緩慢增大,以防止網(wǎng)絡(luò)過早出現(xiàn)擁塞。必須強(qiáng)調(diào)指出
“擁塞避免”并非指完全能夠避免了擁塞。利用以上的措施要完全避免網(wǎng)絡(luò)擁塞還是不可能的。
“擁塞避免”是說在擁塞避免階段把擁塞窗口控制為按線性規(guī)律增長,使網(wǎng)絡(luò)比較不容易出現(xiàn)擁塞。3.
快重傳和快恢復(fù)
快重傳算法規(guī)定,發(fā)送端只要一連收到三個(gè)重復(fù)的ACK即可斷定有分組丟失
了,就應(yīng)立即重傳丟失的報(bào)文段而不必繼續(xù)等待為該報(bào)文段設(shè)置的重傳計(jì)時(shí)器的超時(shí)。
不難看出,快重傳并非取消重傳計(jì)時(shí)器,而是在某些情況下可更早地重傳丟失的
報(bào)文段??熘貍髋e例主機(jī)A主機(jī)BA發(fā)送M1
和M2B確認(rèn)M1
和M23A收到了三個(gè)重復(fù)的確認(rèn)ACK,就立即重傳M3,而不必等待超時(shí)重傳。3丟失!A發(fā)送M但丟失了A發(fā)送M4M1,
M2ACK2,
ACK3M3M4ACK3M5ACK3M6ACK3M3B只能再次確認(rèn)M2(因?yàn)镸3
沒有收到)A發(fā)送M5B發(fā)送第二個(gè)重復(fù)確認(rèn)ACK3A發(fā)送M6B發(fā)送第三個(gè)重復(fù)確認(rèn)ACK3快恢復(fù)算法當(dāng)發(fā)送端收到連續(xù)三個(gè)重復(fù)的ACK時(shí),就按乘法減小重新設(shè)置慢開始門限ssthresh。與慢開始不同之處是擁塞窗口
cwnd
不是設(shè)置為1,而是設(shè)置為
ssthresh
+
3
MSS。若收到的重復(fù)的ACK為n
個(gè)(n
>3),則將cwnd設(shè)置為ssthresh+nMSS。若發(fā)送窗口值還容許發(fā)送報(bào)文段,就按擁塞避免算法繼續(xù)發(fā)送報(bào)文段。若收到了確認(rèn)新的報(bào)文段的ACK,就將cwnd縮小到ssthresh。7.4.5
TCP的重傳機(jī)制
重傳機(jī)制是TCP中最重要和最復(fù)雜的問題之一。
TCP每發(fā)送一個(gè)報(bào)文段,就對(duì)這個(gè)報(bào)文段設(shè)置一次計(jì)時(shí)器。只要計(jì)時(shí)器設(shè)置的重傳時(shí)間到但還沒有收到確認(rèn),就要重傳這一報(bào)文段。往返時(shí)延的自適應(yīng)算法
記錄每一個(gè)報(bào)文段發(fā)出的時(shí)間,以及收到相應(yīng)的確認(rèn)報(bào)文段的時(shí)間。這兩個(gè)時(shí)間之差就是報(bào)文段的往返時(shí)延。
將各個(gè)報(bào)文段的往返時(shí)延樣本加權(quán)平均,就得出報(bào)文段的平均往返時(shí)延RTT。
每測(cè)量到一個(gè)新的往返時(shí)延樣本,就按下式重新計(jì)算一次平均往返時(shí)延RTT:平均往返時(shí)延RTT(舊的RTT)
(1)
(新的往返時(shí)延樣本)在上式中,01。參數(shù)
的選擇
若
很接近于
1,表示新算出的平均往返時(shí)延RTT
和原來的值相比變化不大,而新的往返時(shí)延樣本的影響不大(RTT值更新較慢)。
若選擇
接近于零,則表示加權(quán)計(jì)算的平均往返時(shí)延RTT
受新的往返時(shí)延樣本的影響較大(RTT值更新較快)。典型的
值為
7/8。超時(shí)重傳時(shí)間RTO(RetransmissionTime-Out)計(jì)時(shí)器的
RTO
應(yīng)略大于上面得出的
RTT,即: RTO
RTT
(7-3)這里
是個(gè)大于1
的系數(shù)。
若取
很接近于1
,發(fā)送端可及時(shí)地重傳丟失的報(bào)文段,因此效率得到提高。
但若報(bào)文段并未丟失而僅僅是增加了一點(diǎn)時(shí)延,那么過早地重傳反而會(huì)加重網(wǎng)絡(luò)的負(fù)擔(dān)。因此TCP
原先的標(biāo)準(zhǔn)推薦將
值取為
2。Karn算法在計(jì)算平均往返時(shí)延RTT時(shí),只要報(bào)文段重傳了,就不采用其往返時(shí)延樣本。
這樣得出的平均往返時(shí)延RTT和重傳時(shí)間就較準(zhǔn)確。修正的Karn算法報(bào)文段每重傳一次,就將重傳時(shí)間增大一些:新的重傳時(shí)間
(舊的重傳時(shí)間)
(7-4)系數(shù)
的典型值是2
。
當(dāng)不再發(fā)生報(bào)文段的重傳時(shí),才根據(jù)報(bào)文段的往返時(shí)延更新平均往返時(shí)延RTT和重傳時(shí)間的數(shù)
值。實(shí)踐證明,這種策略較為合理。7.4.7
TCP的運(yùn)輸連接管理1.
運(yùn)輸連接的三個(gè)階段
運(yùn)輸連接就有三個(gè)階段,即:連接建立數(shù)據(jù)傳送和連接釋放。運(yùn)輸連接的管理就是使運(yùn)輸連接的建立和釋放都能正常地進(jìn)行。連接建立過程中要解決以下三個(gè)問題:要使每一方能夠確知對(duì)方的存在。
要允許雙方協(xié)商一些參數(shù)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 威海海洋職業(yè)學(xué)院《教具設(shè)計(jì)》2023-2024學(xué)年第一學(xué)期期末試卷
- 汽車金融分期付款合同范例
- 合伙養(yǎng)豬合伙合同范例
- 包干律師服務(wù)合同范例
- 秸稈材料采購合同范例
- 店鋪轉(zhuǎn)讓合同范例版
- 外墻抹灰勞務(wù)合同范例
- 2025高壓配電工程安裝施工合同
- 校園規(guī)劃設(shè)計(jì)合同范例
- 中介擔(dān)保合同范例
- 幼兒園大班語言課件:不怕冷的大衣
- 2024至2030年中國生物反應(yīng)器行業(yè)市場(chǎng)調(diào)查研究及投資潛力預(yù)測(cè)報(bào)告
- DL∕T 448-2016 電能計(jì)量裝置技術(shù)管理規(guī)程
- 幼兒園家長助教日主題班會(huì)《保護(hù)眼睛》適用于幼兒園家長助教模板
- 2024年六年級(jí)上冊(cè)《綜合實(shí)踐活動(dòng)》全冊(cè)教案
- 小學(xué)生預(yù)防早婚早育主題班會(huì)
- 2020-2024年安徽省初中學(xué)業(yè)水平考試中考?xì)v史試卷(5年真題+答案解析)
- 上海市虹口區(qū)2023-2024學(xué)年八年級(jí)下學(xué)期期末考試語文試題
- 廢氣治理設(shè)施運(yùn)行管理規(guī)程
- W -S-T 433-2023 靜脈治療護(hù)理技術(shù)操作標(biāo)準(zhǔn)(正式版)
- JTS-131-2012水運(yùn)工程測(cè)量規(guī)范
評(píng)論
0/150
提交評(píng)論