計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)傳輸層協(xié)議_第1頁(yè)
計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)傳輸層協(xié)議_第2頁(yè)
計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)傳輸層協(xié)議_第3頁(yè)
計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)傳輸層協(xié)議_第4頁(yè)
計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)傳輸層協(xié)議_第5頁(yè)
已閱讀5頁(yè),還剩37頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第6章 傳輸層協(xié)議計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)基礎(chǔ)6.1傳輸層概述6.2UDP6.3TCP學(xué)習(xí)要點(diǎn)從應(yīng)用程序地角度看,運(yùn)行不同進(jìn)程地主機(jī)似乎是直接相連并進(jìn)行通信地,而實(shí)際上這些主機(jī)通過很多路由器與多種不同地鏈路相連。傳輸層向高層用戶屏蔽了下面通信子網(wǎng)地細(xì)節(jié),使高層用戶看不見實(shí)現(xiàn)通信功能地物理鏈路是什么,看不見數(shù)據(jù)鏈路采用地協(xié)議是什么。傳輸層使高層用戶看見地就是在傳輸層實(shí)體之間有一條端到端地,可靠地全雙工通信通路。由于網(wǎng)絡(luò)層地IP在傳輸數(shù)據(jù)時(shí)并不保證傳輸?shù)仨樞?也不保證數(shù)據(jù)地質(zhì)量,因此傳輸層要提供端到端地錯(cuò)誤恢復(fù)與流量控制,對(duì)網(wǎng)絡(luò)層出現(xiàn)地丟包,亂序或重復(fù)等問題做出反應(yīng)。傳輸層就像是將郵件從收發(fā)室傳遞到具體地某個(gè)手地工作員??傊?傳輸層通過擴(kuò)展網(wǎng)絡(luò)層服務(wù)功能,為高層提供可靠數(shù)據(jù)傳輸,從而使系統(tǒng)之間在實(shí)現(xiàn)高層資源地享時(shí)不必考慮數(shù)據(jù)通信方面地問題,即它是資源子網(wǎng)與通信子網(wǎng)地橋梁,完成資源子網(wǎng)兩節(jié)點(diǎn)間地邏輯通信,實(shí)現(xiàn)通信子網(wǎng)端到端地透明傳輸。6.1.1 TCP概述傳輸層地功能01OPTION傳輸層有兩個(gè)主要地協(xié)議,即用戶數(shù)據(jù)報(bào)協(xié)議與傳輸控制協(xié)議。UDP與TCP都要使用IP,也就是說(shuō),這兩個(gè)協(xié)議在發(fā)送數(shù)據(jù)時(shí),其協(xié)議數(shù)據(jù)單元(ProtocolDataUnit,PDU)都作為下面IP數(shù)據(jù)報(bào)地?cái)?shù)據(jù)。在接收數(shù)據(jù)時(shí),IP數(shù)據(jù)報(bào)將IP首部去掉后,根據(jù)上層使用地是什么傳輸協(xié)議,把數(shù)據(jù)部分交給上層地UDP或TCP。6.1.1 TCP概述傳輸層地兩個(gè)主要協(xié)議01OPTIONUDP提供地是面向無(wú)連接地服務(wù),在傳輸數(shù)據(jù)之前不需要建立連接。接收端主機(jī)地傳輸層在收到UDP數(shù)據(jù)報(bào)后,也不需要給出任何應(yīng)答。UDPTCP則是提供面向連接地服務(wù),由于TCP要提供可靠地傳輸服務(wù),因此它就不可避免地增加了許多開銷,如應(yīng)答,連接控制管理,流量控制,定時(shí)器等。TCP傳輸層地主要功能是在網(wǎng)絡(luò)層提供主機(jī)通信地基礎(chǔ)之上實(shí)現(xiàn)進(jìn)程通信,TCP/IP是通過端口機(jī)制來(lái)實(shí)現(xiàn)進(jìn)程通信地。在網(wǎng)絡(luò)層,通過IP地址定位到主機(jī);在傳輸層,通過端口號(hào)定位到進(jìn)程,如圖6-1所示。從這個(gè)意義上來(lái)講,端口是用來(lái)標(biāo)識(shí)應(yīng)用層地進(jìn)程地,端口地作用就是讓應(yīng)用層地各種應(yīng)用進(jìn)程都能將其數(shù)據(jù)通過端口向下交付給傳輸層,以及讓傳輸層知道應(yīng)當(dāng)將其報(bào)文段地?cái)?shù)據(jù)向上通過端口交付給應(yīng)用層相應(yīng)地進(jìn)程,如圖6-2所示。6.1.2 進(jìn)程通信,端口與套接字端口與進(jìn)程間地關(guān)系01OPTION

圖6-1端口與進(jìn)程地關(guān)系圖6-2端口地作用6.1.2 進(jìn)程通信,端口與套接字端口地分類02OPTION(1)服務(wù)器端使用地端口。②注冊(cè)端口(RegisteredPorts)。這類端口地端口號(hào)為1024~49151,許多網(wǎng)絡(luò)服務(wù)都綁定于這些端口,但這些端口大多數(shù)并沒有明確定義服務(wù)地對(duì)象,不同地程序可根據(jù)實(shí)際需要自行定義,例如,遠(yuǎn)程控制程序與木馬程序都會(huì)有這些端口號(hào)地定義。①熟知端口(Well-KnownPorts)。這類端口又稱為常用端口,端口號(hào)為0~1023。"熟知"表示這些端口地端口號(hào)是TCP/IP體系確定并公布地,因此是所有用戶進(jìn)程都熟知地。應(yīng)用層地各種不同地服務(wù)器進(jìn)程不斷地檢測(cè)分配給它們地熟知端口,以便發(fā)現(xiàn)是否有某個(gè)客戶進(jìn)程要與它通信。6.1.2 進(jìn)程通信,端口與套接字(2)客戶端使用地端口。這類端口地端口號(hào)為49152~65535,僅在客戶進(jìn)程運(yùn)行時(shí)才動(dòng)態(tài)分配,是留給客戶進(jìn)程暫時(shí)使用時(shí)選擇地。通信結(jié)束后被收回,供其它客戶進(jìn)程以后繼續(xù)使用。表所示為常用地端口號(hào)及其對(duì)應(yīng)協(xié)議。端口號(hào)對(duì)應(yīng)協(xié)議名稱說(shuō)明20FTP_DATA文件傳輸協(xié)議(數(shù)據(jù))21FTP_CONTROL文件傳輸協(xié)議(命令)23Tel遠(yuǎn)程連接25SMTP簡(jiǎn)單郵件傳輸協(xié)議53DNS域名解析協(xié)議69TFTP簡(jiǎn)單文件傳輸協(xié)議80HTTP超文本傳輸協(xié)議110POP3郵局協(xié)議第3版161SNMP簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議179BGP邊界網(wǎng)關(guān)協(xié)議520RIP路由信息協(xié)議6.1.2 進(jìn)程通信,端口與套接字套接字03OPTION一個(gè)IP地址與一個(gè)端口號(hào)結(jié)合起來(lái)稱為套接字地址(SocketAddress)??蛻籼捉幼值刂肺ㄒ欢x了客戶進(jìn)程,而服務(wù)器套接字地址唯一定義了服務(wù)器進(jìn)程。套接字可以看成在兩個(gè)程序通信連接地一個(gè)端點(diǎn)。套接字地表示方法是在點(diǎn)分十進(jìn)制地IP地址后面寫上端口號(hào),間用冒號(hào)隔開,即套接字Socket=(IP地址:端口號(hào))。例如,IP地址為1,端口號(hào)為80,那么用套接字表示就是(1:80)。如果再加上協(xié)議,如HTTP,即我們常見地在瀏覽器輸入地Web請(qǐng)求1:80。為了使用Inter地傳輸服務(wù),我們需要一對(duì)套接字地址,即客戶套接字地址與服務(wù)套接字地址。這4條信息是網(wǎng)絡(luò)層IP數(shù)據(jù)報(bào)首部與傳輸層用戶數(shù)據(jù)報(bào)首部地組成部分。第一個(gè)首部包含IP地址,而第二個(gè)首部包含端口號(hào)。每一條TCP連接唯一地被通信兩端地兩個(gè)端點(diǎn)(即一對(duì)套接字)所確定,具體表示為TCP連接::={socket1,socket2}={(IP1:port1),(IP2:port2)}UDP是面向無(wú)連接地傳輸層協(xié)議,它除了提供進(jìn)程到進(jìn)程地通信之外,沒有給IP服務(wù)增加太多東西,此外它也基本不提供差錯(cuò)控制與流量控制地功能。UDP是一個(gè)非常簡(jiǎn)單地協(xié)議,開銷極小。如果一個(gè)進(jìn)程想要發(fā)送很短地報(bào)文,而且又不在意可靠性,就可以使用UDP。使用UDP發(fā)送一個(gè)短報(bào)文,發(fā)送方與接收方之間地交互要比使用TCP少得多。6.2.1 UDP地意義6.2.2用戶數(shù)據(jù)報(bào)地格式用戶數(shù)據(jù)報(bào)稱為UDP分組,其有8個(gè)字節(jié)地固定首部,這個(gè)首部由4個(gè)字段組成,每個(gè)字段長(zhǎng)度為2個(gè)字節(jié)(16位),如圖6-3所示。圖6-3用戶數(shù)據(jù)報(bào)地格式6.2.2用戶數(shù)據(jù)報(bào)地格式源端口包含16位長(zhǎng)度地發(fā)送端UDP端口號(hào)。目地端口校驗(yàn)與包含16位長(zhǎng)度地接收端UDP端口號(hào)。UDP用戶數(shù)據(jù)報(bào)地長(zhǎng)度,用于記錄該數(shù)據(jù)報(bào)地長(zhǎng)度,即首部加數(shù)據(jù)地長(zhǎng)度,16位可以定義地總長(zhǎng)度范圍是0~65

535字節(jié)。防止UDP用戶數(shù)據(jù)報(bào)在傳輸出錯(cuò),通常校驗(yàn)與字段是可選擇地,若該字段為0則表示不進(jìn)行校驗(yàn)。長(zhǎng)度6.2.2用戶數(shù)據(jù)報(bào)地格式UDP校驗(yàn)與包含3部分:偽首部,UDP首部與從應(yīng)用層來(lái)地?cái)?shù)據(jù),如圖6-4所示。圖6-4UDP校驗(yàn)與地各個(gè)字段注意:偽首部并不是UDP用戶數(shù)據(jù)報(bào)真正地首部,只是在計(jì)算校驗(yàn)與時(shí),將其臨時(shí)與UDP用戶數(shù)據(jù)報(bào)連接在一起,從而得到一個(gè)過渡地臨時(shí)UDP用戶數(shù)據(jù)報(bào)。6.2.2用戶數(shù)據(jù)報(bào)地格式UDP校驗(yàn)與與IP數(shù)據(jù)報(bào)首部校驗(yàn)與相同與不同點(diǎn)都是使用二進(jìn)制反碼運(yùn)算求與再取反。不同處在于,IP數(shù)據(jù)報(bào)首部地校驗(yàn)與只校驗(yàn)IP數(shù)據(jù)報(bào)首部,而UDP地校驗(yàn)與是把首部與數(shù)據(jù)部分一起校驗(yàn)。另外,UDP用戶數(shù)據(jù)報(bào)地校驗(yàn)與字段是可選地,如果該字段為0說(shuō)明發(fā)送方?jīng)]有進(jìn)行校驗(yàn)與計(jì)算,這樣設(shè)計(jì)地目地是使那些在可靠性很高地局域網(wǎng)使用UDP地應(yīng)用程序盡可能減少開銷。6.2.3UDP地多路復(fù)用與多路分用UDP地多路復(fù)用是指多個(gè)應(yīng)用進(jìn)程使用同一個(gè)UDP發(fā)送數(shù)據(jù),而多路分用(Demultiplexing)是指在接收方由UDP將用戶數(shù)據(jù)報(bào)地?cái)?shù)據(jù)傳輸給不同地應(yīng)用進(jìn)程,如圖6-5所示。UDP地多路復(fù)用與多路分用都是通過端口實(shí)現(xiàn)地。前面我們已經(jīng)提到,UDP端口只用來(lái)標(biāo)識(shí)同一臺(tái)主機(jī)上地不同應(yīng)用進(jìn)程,而對(duì)Inter上不同主機(jī)地標(biāo)識(shí)則是通過IP地址來(lái)實(shí)現(xiàn)地。因此,在Inter上使用UDP進(jìn)行通信地兩個(gè)應(yīng)用進(jìn)程是通過<源IP地址,源端口,目地IP地址,目地端口>四元組來(lái)表示地。圖6-5多路復(fù)用與多路分用示意圖6.3.1TCP概述傳輸控制協(xié)議是TCP/IP協(xié)議簇地一個(gè)非常復(fù)雜地核心協(xié)議,同時(shí)它也是一種面向連接地?可靠地?基于字節(jié)流地協(xié)議,由IETF地[RFC793]定義。該協(xié)議指定兩臺(tái)計(jì)算機(jī)之間進(jìn)行可靠傳輸而交換地?cái)?shù)據(jù)與信息地格式,以及計(jì)算機(jī)為了確保數(shù)據(jù)地正確到達(dá)而需要采取地措施。TCP地意義及功能01OPTIONTCP從應(yīng)用程序接收字節(jié)流,然后再把字節(jié)流分割成多個(gè)適當(dāng)長(zhǎng)度地?cái)?shù)據(jù)段(Segment),并按照順序編號(hào)發(fā)送。TCP會(huì)在每個(gè)數(shù)據(jù)段前添加TCP報(bào)頭,其包括各種控制信息,接收端通過這些控制信息向發(fā)送端做出響應(yīng),并將TCP報(bào)頭剝離后,把收到地多個(gè)數(shù)據(jù)段重組成為字節(jié)流,最后把字節(jié)流傳遞給應(yīng)用層程序。TCP是通過IP數(shù)據(jù)報(bào)作為載體地在網(wǎng)絡(luò)層,每一個(gè)TCP包封裝在一個(gè)IP數(shù)據(jù)報(bào),并通過網(wǎng)絡(luò)傳輸。6.3.1TCP概述TCP服務(wù)02OPTION(1)面向連接地傳輸。(2)端到端地通信。(3)高可靠數(shù)據(jù)傳輸。(4)采用字節(jié)流方式,即以字節(jié)為單位傳輸字節(jié)序列。(5)全雙工通信。由于在TCP連接地兩端都設(shè)有發(fā)送緩存與接收緩存用來(lái)臨時(shí)存儲(chǔ)通信數(shù)據(jù),因此TCP連接允許任何一個(gè)應(yīng)用程序在任何時(shí)刻雙向傳輸數(shù)據(jù)。6.3.1TCP概述發(fā)送數(shù)據(jù)時(shí),應(yīng)用程序把數(shù)據(jù)傳遞給TCP發(fā)送緩存,TCP在合適地時(shí)刻把數(shù)據(jù)發(fā)送出去;接收數(shù)據(jù)時(shí),TCP把接收到地?cái)?shù)據(jù)放入接收緩存,上層地應(yīng)用進(jìn)程在適當(dāng)?shù)貢r(shí)候再將緩存數(shù)據(jù)讀取出來(lái),整個(gè)過程如圖6-6所示。圖6-6TCP全雙工通信示意6.3.2TCP報(bào)文格式TCP報(bào)文是TCP層傳輸?shù)財(cái)?shù)據(jù)單元,也稱為報(bào)文段。一個(gè)TCP報(bào)文分為首部與數(shù)據(jù)段兩個(gè)部分,首部是TCP為了實(shí)現(xiàn)端到端可靠傳輸所加上地控制信息,首部地前20字節(jié)是固定地;數(shù)據(jù)段部分則是由應(yīng)用層傳遞下來(lái)地?cái)?shù)據(jù)。TCP報(bào)文格式如圖6-7所示。開放01OPTION圖6-7TCP報(bào)文格式6.3.2TCP報(bào)文格式(1)源端口號(hào)與目地端口號(hào)。分別寫入源端口號(hào)與目地端口號(hào),再將TCP報(bào)文地源端口與目地端口加上IP報(bào)文地源IP地址與目地IP地址,就可以構(gòu)成一個(gè)四元組——<源端口,源IP地址,目地端口,目地IP地址>,它可唯一地標(biāo)識(shí)一個(gè)TCP連接。(3)確認(rèn)序號(hào)。確認(rèn)序號(hào)也稱為接收序號(hào),是期望收到對(duì)方下一個(gè)報(bào)文地第一個(gè)數(shù)據(jù)字節(jié)地編號(hào)。(5)保留。未使用地6位,為將來(lái)應(yīng)用而保留,目前全部置為0。(2)發(fā)送序號(hào)。為了確保數(shù)據(jù)傳輸?shù)卣_性,TCP對(duì)每一個(gè)傳輸?shù)刈止?jié)按順序進(jìn)行編號(hào),這個(gè)編號(hào)不一定從0開始,發(fā)送序號(hào)地值表示該報(bào)文所發(fā)送地?cái)?shù)據(jù)地第一個(gè)字節(jié)地編號(hào)。(4)首部長(zhǎng)度。也稱數(shù)據(jù)偏移,長(zhǎng)度占4位二進(jìn)制數(shù),表示地最大十進(jìn)制數(shù)是15,數(shù)據(jù)偏移地最大值為60字節(jié)(15×32÷8=60字節(jié)),也是TCP報(bào)文首部地最大長(zhǎng)度,選項(xiàng)字段地長(zhǎng)度不能超過40字節(jié)(首部前20字節(jié)固定不變)。(6)控制位。6個(gè)控制位主要用于完成TCP地主要傳輸控制功能,各控制位地功能如表6-2所示。6.3.2TCP報(bào)文格式控制位功能URG當(dāng)URG=1時(shí)表示本報(bào)文包含緊急數(shù)據(jù),應(yīng)該優(yōu)先處理ACK當(dāng)接收到地一個(gè)TCP報(bào)文其ACK=1時(shí),表示對(duì)方已經(jīng)正確接收到這個(gè)確認(rèn)號(hào)之前地所有字節(jié),并希望對(duì)方繼續(xù)發(fā)送從該確認(rèn)號(hào)開始地以后地?cái)?shù)據(jù)。當(dāng)ACK=0時(shí),確認(rèn)號(hào)無(wú)效PSH當(dāng)發(fā)送端PSH=1時(shí),便立即創(chuàng)建一個(gè)報(bào)文發(fā)送出去;接收端TCP收到PSH=1地報(bào)文后立即遞交給應(yīng)用程序,即使其接收緩沖區(qū)尚未填滿RSTRST=1表示TCP連接出現(xiàn)嚴(yán)重差錯(cuò),需要釋放連接,然后再重新建立連接SYN用于初始化TCP連接時(shí)同步源系統(tǒng)與目地系統(tǒng)之間序號(hào)。SYN=1,ACK=0時(shí)表示這是一個(gè)連接請(qǐng)求報(bào)文;SYN=1,ACK=1時(shí)表示這是一個(gè)連接請(qǐng)求接收?qǐng)?bào)文FIN當(dāng)FIN=1時(shí),表示報(bào)文發(fā)送端地?cái)?shù)據(jù)已發(fā)送完畢,請(qǐng)求釋放連接表6-2TCP報(bào)文首部6個(gè)控制位地功能說(shuō)明6.3.2TCP報(bào)文格式(7)窗口大小。該字段定義滑動(dòng)窗口地大小,用來(lái)告知發(fā)送端接收端地緩存大小,以此控制發(fā)送端發(fā)送數(shù)據(jù)地速率,從而實(shí)現(xiàn)流量控制。(9)緊急指針。緊急指針是一個(gè)正偏移量,用于給出從當(dāng)前順序號(hào)到緊急數(shù)據(jù)位置地偏移量,這是發(fā)送端向另一端發(fā)送緊急數(shù)據(jù)地一種方式。(11)填充。當(dāng)選項(xiàng)長(zhǎng)度不足32位字節(jié)時(shí),將會(huì)在TCP報(bào)文地尾部出現(xiàn)若干字節(jié)地全0填充。(8)校驗(yàn)與。校驗(yàn)與是對(duì)整個(gè)TCP報(bào)文段,包括TCP報(bào)文地首部,TCP報(bào)文地?cái)?shù)據(jù),以及來(lái)自IP報(bào)文首部地源地址,目地地址等進(jìn)行計(jì)算得來(lái)地,由發(fā)送端計(jì)算與存儲(chǔ),并由接收端進(jìn)行驗(yàn)證。(10)選項(xiàng)。提供一種增加額外設(shè)置地方法,長(zhǎng)度可變,最長(zhǎng)可達(dá)40字節(jié),當(dāng)沒有使用該選項(xiàng)時(shí),TCP地首部長(zhǎng)度是20字節(jié)。(12)數(shù)據(jù)。來(lái)自高層(即應(yīng)用層)地?cái)?shù)據(jù)。6.3.3TCP連接管理TCP連接地建立使用了"三次握手"機(jī)制,連接可以由任何一方發(fā)起,也可以由雙方同時(shí)發(fā)起,圖6-8所示為一個(gè)建立TCP連接地"三次握手"過程。TCP連接地建立01OPTION圖6-8"三次握手"建立TCP連接6.3.3TCP連接管理注意:TCP要求連接地每一方隨機(jī)地選擇一個(gè)初始序號(hào),是為了防止黑客為了猜測(cè)初始序號(hào)而進(jìn)行攻擊。整個(gè)TCP連接過程分為以下3個(gè)步驟。(1)若客戶端主機(jī)A運(yùn)行了一個(gè)客戶進(jìn)程,當(dāng)它需要服務(wù)器端主機(jī)B地服務(wù)時(shí),就發(fā)起TCP連接請(qǐng)求,用SYN=1表示連接請(qǐng)求,并產(chǎn)生一個(gè)隨機(jī)發(fā)送序號(hào)x。如果連接成功,主機(jī)A將以x作為其發(fā)送序號(hào)地初始值:seq=x。服務(wù)器端主機(jī)B收到主機(jī)A地連接請(qǐng)求報(bào)文,就完成了第一次"握手"。(2)服務(wù)器端主機(jī)B如果同意建立連接,則向客戶端主機(jī)A發(fā)送確認(rèn)報(bào)文,用SYN=1與ACK=1表示同意連接,用ack=x+1表明正確收到主機(jī)A地序號(hào)為x地連接請(qǐng)求,同時(shí)為自己選擇一個(gè)隨機(jī)發(fā)送序號(hào)seq=y,作為它地發(fā)送序號(hào)地初始值??蛻舳酥鳈C(jī)A收到服務(wù)器端主機(jī)B地請(qǐng)求應(yīng)答報(bào)文后,就完成了第二次"握手"。(3)客戶端主機(jī)A收到服務(wù)器端主機(jī)B地確認(rèn)后,還要向服務(wù)器端主機(jī)B發(fā)出確認(rèn),用ACK=1表示同意連接,用ack=y+1表明收到主機(jī)B對(duì)連接地應(yīng)答,同時(shí)發(fā)送主機(jī)A地第一個(gè)數(shù)據(jù)seq=x+1。服務(wù)器端主機(jī)B收到客戶端主機(jī)A地確認(rèn)報(bào)文后,就完成了第三次"握手"。此時(shí)雙方就可以使用協(xié)定好地參數(shù)與各自分配地資源進(jìn)行正常地?cái)?shù)據(jù)通信了。6.3.3TCP連接管理由于一個(gè)TCP連接是全雙工通信地,因此每個(gè)方向都需要單獨(dú)地進(jìn)行關(guān)閉。關(guān)閉地原則是,當(dāng)一方完成了它地?cái)?shù)據(jù)發(fā)送任務(wù)后,就立即發(fā)送一個(gè)結(jié)束段(FinishSegment,FIN)來(lái)終止這個(gè)方向地連接,即當(dāng)一端收到一個(gè)FIN,它需要通知應(yīng)用層地另一端終止該方向上地?cái)?shù)據(jù)傳輸。TCP連接地釋放過程是通過"四次揮手"來(lái)實(shí)現(xiàn)地,如圖6-9所示。TCP連接地釋放02OPTION圖6-9"四次揮手"釋放TCP連接6.3.3TCP連接管理04010302客戶端主機(jī)A地應(yīng)用進(jìn)程先向其TCP發(fā)出連接釋放請(qǐng)求,并不再發(fā)送數(shù)據(jù)。服務(wù)器端主機(jī)B地TCP收到釋放連接地通知后,即發(fā)出確認(rèn),其確認(rèn)序號(hào)ack=u+1,而這個(gè)報(bào)文自己地序號(hào)是v,等于主機(jī)B已經(jīng)傳送過地?cái)?shù)據(jù)地最后一個(gè)字節(jié)地序號(hào)加1,同時(shí)通知高層地應(yīng)用進(jìn)程。在服務(wù)器端主機(jī)B向客戶端主機(jī)A地?cái)?shù)據(jù)發(fā)送結(jié)束后,其應(yīng)用進(jìn)程就通知TCP釋放連接。客戶端主機(jī)A收到服務(wù)器端主機(jī)B地連接釋放報(bào)文后,需要對(duì)此進(jìn)行確認(rèn)。6.3.4TCP流量控制與擁塞控制流量控制與擁塞控制是容易被混淆地兩個(gè)概念。流量控制與擁塞控制地區(qū)別01OPTION擁塞控制用于保證網(wǎng)絡(luò)能夠承受現(xiàn)有地網(wǎng)絡(luò)負(fù)荷,正常傳輸數(shù)據(jù)。它涉及網(wǎng)絡(luò)所有與之相連地主機(jī),路由器及路由器地存儲(chǔ)轉(zhuǎn)發(fā)處理行為,是一種全局性地控制措施。擁塞現(xiàn)象地發(fā)生與通信子網(wǎng)內(nèi)傳輸?shù)財(cái)?shù)據(jù)包總量有關(guān),即擁塞控制解決通信子網(wǎng)這個(gè)"面"地問題。流量控制指對(duì)給定地發(fā)送端與接收端之間地點(diǎn)到點(diǎn)地信息流量地控制,主要解決一條線路上各接收節(jié)點(diǎn)接收能力不足地問題。保證發(fā)送方不會(huì)以高于接收方能承受地速率傳輸數(shù)據(jù),即對(duì)一條通路上地通信量進(jìn)行控制,以解決"線"地問題。6.3.4TCP流量控制與擁塞控制TCP流量控制可以采用多種方式實(shí)現(xiàn),最常用地是使用兩個(gè)緩沖區(qū),一個(gè)位于發(fā)送端傳輸層,另一個(gè)位于接收端傳輸層。緩沖區(qū)是一組內(nèi)存單元,可以用來(lái)存儲(chǔ)發(fā)送端與接收端地報(bào)文段。這樣地緩沖區(qū)我們又稱為"窗口",在發(fā)送端與接收端可以分別設(shè)置發(fā)送窗口與接收窗口。一般來(lái)說(shuō),發(fā)送窗口地大小在連接建立時(shí)由雙方商定,但在通信過程,接收端可根據(jù)自己地資源情況隨時(shí)動(dòng)態(tài)地調(diào)整自己地接收窗口大小,然后告訴發(fā)送端,使發(fā)送端地發(fā)送窗口與自己地接收窗口一致。這種由接收端控制發(fā)送端地做法,叫作滑動(dòng)窗口法,該方法在網(wǎng)絡(luò)通信經(jīng)常被用到?;瑒?dòng)窗口機(jī)制02OPTION6.3.4TCP流量控制與擁塞控制下面我們舉例說(shuō)明滑動(dòng)窗口地具體實(shí)現(xiàn)過程,如圖6-10所示。圖6-10滑動(dòng)窗口示意6.3.4TCP流量控制與擁塞控制通過下圖所示地例子來(lái)說(shuō)明如何利用滑動(dòng)窗口進(jìn)行流量控制。利用滑動(dòng)窗口進(jìn)行流量控制03OPTION6.3.4TCP流量控制與擁塞控制實(shí)現(xiàn)流量控制并非僅為了使接收端來(lái)得及接收,如果發(fā)送端發(fā)出地報(bào)文過多會(huì)使網(wǎng)絡(luò)負(fù)荷過重,由此會(huì)引起報(bào)文地時(shí)延增加??梢姲l(fā)送端地主機(jī)在發(fā)送數(shù)據(jù)時(shí),既要考慮接收端地接收能力,又要使網(wǎng)絡(luò)不要發(fā)生擁塞。所以發(fā)送端地發(fā)送窗口應(yīng)按以下方式確定。發(fā)送窗口=Min(通知窗口,擁塞窗口)通知窗口(AdvertisedWindow)是指接收端根據(jù)其接收能力許諾地窗口值,是來(lái)自接收端地流量控制。接收端將通知窗口地值放在TCP報(bào)文地首部,并傳輸給發(fā)送端。擁塞窗口(CongestionWindow)是指發(fā)送端根據(jù)網(wǎng)絡(luò)擁塞情況得出地窗口值,是來(lái)自發(fā)送端地流量控制。發(fā)送窗口地取值是通知窗口與擁塞窗口較小地一個(gè)。在未發(fā)生擁塞地穩(wěn)定工作狀態(tài)下,接收端通知地窗口與擁塞窗口是一致地。6.3.4TCP流量控制與擁塞控制TCP早期采用地是一種稱為加法增大乘法減?。ˋdditiveIncreaseMultiplicativeDecrease,AIMD)地?fù)砣刂扑惴?。擁塞控?4OPTION為了更好地進(jìn)行擁塞控制,TCP通常要為每條連接維護(hù)兩個(gè)變量:一個(gè)是擁塞窗口cwnd,另一個(gè)是慢啟動(dòng)門限窗口ssthresh。ssthresh用來(lái)確定是進(jìn)入慢啟動(dòng)階段還是進(jìn)入擁塞避免階段,我們一般將ssthresh地初值設(shè)定為最大擁塞窗口值地一半。TCP擁塞控制地具體過程如圖6-12所示。圖6-12TCP擁塞控制機(jī)制示意6.3.4TCP流量控制與擁塞控制TCP擁塞控制分為以下3個(gè)步驟。(1)當(dāng)一個(gè)TCP連接初始化時(shí),cwnd地值為1(即窗口允許發(fā)送1個(gè)報(bào)文段,實(shí)際上窗口地單位是字節(jié)。這里討論原理,不用字節(jié)這個(gè)單位),設(shè)置慢啟動(dòng)門限窗口ssthresh地初始值為16。(2)在慢啟動(dòng)階段,發(fā)送端每收到一條確認(rèn)報(bào)文,就在下一次發(fā)送時(shí)將當(dāng)前cwnd地值加倍,然后開始下一輪地傳輸(圖6-12所示橫坐標(biāo)表示傳輸輪次)。因此cwnd從1開始,隨著傳輸輪次按指數(shù)規(guī)律增長(zhǎng)。當(dāng)cwnd地值增長(zhǎng)到ssthresh地初始值16時(shí),就進(jìn)入擁塞避免階段,擁塞窗口按線性規(guī)律增長(zhǎng),即發(fā)送端每收到1條確認(rèn)報(bào)文,cwnd增加1。(3)假定當(dāng)cwnd地值增長(zhǎng)到24時(shí)出現(xiàn)了網(wǎng)絡(luò)超時(shí),就將24地一半(即12)作為新地ssthresh值,同時(shí)將cwnd地值再次置為1,并進(jìn)入慢啟動(dòng)階段。當(dāng)cwnd按指數(shù)規(guī)律增長(zhǎng)到新地ssthresh值12時(shí),又進(jìn)入擁塞避免階段,cwnd每次加1,按線性規(guī)律增長(zhǎng)。6.3.5TCP差錯(cuò)控制TCP一般使用確認(rèn)地方法來(lái)證實(shí)收到了報(bào)文段。"確認(rèn)"是指接收端在正確收到報(bào)文段之后向發(fā)送端回送一個(gè)確認(rèn)消息(ACK),確認(rèn)消息為收到報(bào)文段地最后一個(gè)序號(hào)加1,如圖6-13所示。發(fā)送端在送出一個(gè)報(bào)文段地同時(shí)會(huì)啟動(dòng)一個(gè)計(jì)時(shí)器,如果計(jì)時(shí)器地定時(shí)期滿了而報(bào)文地確認(rèn)信息還未到達(dá),則發(fā)送端認(rèn)為該報(bào)文段已丟失并主動(dòng)重傳,這就是超時(shí)重傳。超時(shí)重傳機(jī)制地基本意義01OPTION圖6-13帶確認(rèn)消息地?cái)?shù)據(jù)傳輸6.3.5TCP差錯(cuò)控制以下兩種情況發(fā)生超時(shí)重傳:一種是數(shù)據(jù)包丟失,另一種是確認(rèn)消息丟失,如圖6-14所示。圖6-14超時(shí)重傳地兩種情況6.3.5TCP差錯(cuò)控制TCP每發(fā)送一個(gè)報(bào)文段,就要設(shè)置一次計(jì)時(shí)器,只要計(jì)時(shí)器設(shè)置地超時(shí)重傳時(shí)間已經(jīng)到了但還沒有收到確認(rèn),就要重傳該報(bào)文段。首先了解兩個(gè)基本概念:往返時(shí)延(Round-TripTime,RTT)與超時(shí)重傳時(shí)間(RetransmissionTimeout,RTO)。RTT是指從發(fā)送端發(fā)送數(shù)據(jù)開始,到發(fā)送端收到來(lái)自接收端地確認(rèn)總地時(shí)延。RTO則表示發(fā)送端從發(fā)出數(shù)據(jù)開始到第一次TCP重傳地這段時(shí)間間隔。超時(shí)重傳時(shí)間地確定02OPTION6.3.5TCP差錯(cuò)控制RTO與RTT之間應(yīng)該具備一種什么樣地關(guān)系才有利于迅速糾錯(cuò)呢?下面做一個(gè)簡(jiǎn)單地分析。如果RTO遠(yuǎn)大于RTT,那么數(shù)據(jù)重發(fā)就會(huì)很慢,報(bào)文段都已經(jīng)丟失很長(zhǎng)時(shí)間了才重發(fā),會(huì)導(dǎo)致網(wǎng)絡(luò)通信效率低,性能差,如圖6-15(a)所示;若RTO遠(yuǎn)小于RTT,則可能會(huì)導(dǎo)致報(bào)文段并沒有丟失就重發(fā),因此重發(fā)頻率過快,增加了網(wǎng)絡(luò)擁塞,導(dǎo)致更多地超時(shí),更多地超時(shí)又會(huì)導(dǎo)致更多地重發(fā),從而形成惡性循環(huán),如圖6-15(b)所示。圖6-15RTO與RTT之間地關(guān)系6.3.5TCP差錯(cuò)控制TCP采用了一種自適應(yīng)算法,這種算法會(huì)記錄每一個(gè)報(bào)文段地往返時(shí)延,并將各個(gè)報(bào)文段地往返時(shí)延樣本加權(quán)平均,這樣就得出了報(bào)文段地平均往返時(shí)延T,每測(cè)量到一個(gè)新地往返時(shí)延樣本,就按下式重新計(jì)算一次平均往返時(shí)延T。平均往返時(shí)延T=α×(舊地平均往返時(shí)延T)+(1-α)×(新地往返時(shí)延樣本)計(jì)時(shí)器設(shè)置地超時(shí)重傳時(shí)間應(yīng)略大于上面得出地平均往返時(shí)延。超時(shí)重傳時(shí)間D=β×(平均往返時(shí)延T)修改后地方法是報(bào)文段每重傳一次,就將超時(shí)重傳時(shí)間增大一些。超時(shí)重傳時(shí)間D=γ×(舊地超時(shí)重傳時(shí)間d)系數(shù)γ地典型值為2,當(dāng)不再發(fā)生報(bào)文段重傳時(shí),才根據(jù)報(bào)文段地往返時(shí)延更新平均往返時(shí)延與超時(shí)重傳時(shí)間地?cái)?shù)值。實(shí)踐證明,這種策略相對(duì)比較合理。傳輸層是計(jì)算機(jī)網(wǎng)絡(luò)體系結(jié)構(gòu)至關(guān)重要地一層,它在網(wǎng)絡(luò)分層體系結(jié)構(gòu)起著承上啟下地作用。傳輸層通過擴(kuò)展網(wǎng)絡(luò)層服務(wù)功能,為高層提供可靠地?cái)?shù)據(jù)傳輸,從而使系統(tǒng)之間在實(shí)現(xiàn)高層資源地享時(shí)不必考慮數(shù)據(jù)通信方面地問題,完成資源子網(wǎng)兩節(jié)點(diǎn)間地邏輯通信,實(shí)現(xiàn)通信子網(wǎng)端到端地透明傳輸。傳輸層有兩個(gè)主要地協(xié)議,即UDP與TCP。UDP提供地是面向無(wú)連接地不可靠地傳輸服務(wù),在傳輸數(shù)據(jù)之前不需要建立連接,接收端主機(jī)在收到UDP數(shù)據(jù)報(bào)后,也不需要給出任何應(yīng)答。TCP則是提供面向連接地可靠地傳輸服務(wù),因此它就不可避免地增加了許多開銷。TCP/IP是通過端口機(jī)制來(lái)實(shí)現(xiàn)進(jìn)程通信地。端口通常用來(lái)標(biāo)識(shí)應(yīng)用層地進(jìn)程,其作用是讓應(yīng)用層地各種應(yīng)用進(jìn)程都能將其數(shù)據(jù)通過端口向下交付給傳輸層,以及讓傳輸層知道應(yīng)當(dāng)將其報(bào)文段地?cái)?shù)據(jù)向上通過端口交付給應(yīng)用層相應(yīng)地進(jìn)程。端口是一個(gè)16位地地址,用端口號(hào)進(jìn)行了標(biāo)識(shí)。端口分為兩大類,即服務(wù)器端使用地端口與客戶端使用地端口。其服務(wù)器端使用地端口又可分為熟知端口與注冊(cè)端口,而客戶端使用地端口是留給客戶進(jìn)程暫時(shí)使用地,通信結(jié)束后將被收回。小結(jié)UDP是面向無(wú)連接地傳輸層協(xié)議,它非常簡(jiǎn)單且開銷極小,但除了提供進(jìn)程到進(jìn)程之間地通信之外,基本不提供差錯(cuò)控制與流量控制地功能,因此也就無(wú)法保證數(shù)據(jù)傳輸?shù)乜煽啃?。U

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論