




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
打造人工智能共享實(shí)訓(xùn)基地,我校專業(yè)集群協(xié)調(diào)發(fā)展
信系第7章、傳輸層第7章、傳輸層學(xué)習(xí)目標(biāo)
傳輸層是整個(gè)網(wǎng)絡(luò)體系結(jié)構(gòu)中的關(guān)鍵層之一。一定要弄清楚以下幾個(gè)重要概念:?理解傳輸層的作用。?了解端口和套接字的意義。?了解傳輸層與網(wǎng)絡(luò)層和應(yīng)用層的關(guān)系。?了解無連接的UDP的特點(diǎn)。?了解面向連接的TCP的特點(diǎn)。?掌握在不可靠的網(wǎng)絡(luò)上實(shí)現(xiàn)可靠傳輸?shù)墓ぷ髟怼?掌握TCP的滑動(dòng)窗口、流量控制、擁塞控制和連接管理第7章、傳輸層7.1傳輸層協(xié)議7.2用戶數(shù)據(jù)報(bào)協(xié)議UDP7.3傳輸控制協(xié)議TCP7.4技能訓(xùn)練1:常用命令7.1傳輸層協(xié)議7.1.1傳輸層的作用7.1.2進(jìn)程之間的通信7.1.3傳輸層協(xié)議7.1.4多路復(fù)用與多路分解7.1.1傳輸層的作用在TCP/IP模型中,應(yīng)用程序?qū)?shù)據(jù)傳遞給應(yīng)用層,應(yīng)用層再將數(shù)據(jù)傳遞給傳輸層。傳輸層負(fù)責(zé)在兩個(gè)應(yīng)用程序之間建立臨時(shí)通信會(huì)話以及在它們之間傳遞數(shù)據(jù)。傳輸層工作在OSI參考模型(開放系統(tǒng)互連參考模型,是國際標(biāo)準(zhǔn)化組織ISO在1977年提出的一種網(wǎng)絡(luò)體系結(jié)構(gòu)。)第四層。工作在TCP/IP參考模型的第二層7.1.1傳輸層的作用(1)跟蹤各個(gè)會(huì)話。在傳輸層中,每臺(tái)主機(jī)上都可以有多個(gè)應(yīng)用程序在網(wǎng)絡(luò)上通信。每個(gè)應(yīng)用程序都與一臺(tái)或多臺(tái)遠(yuǎn)程主機(jī)上的一個(gè)或多個(gè)應(yīng)用程序通信。傳輸層負(fù)責(zé)維護(hù)并跟蹤這些會(huì)話。(2)數(shù)據(jù)分段和數(shù)據(jù)段重組。傳輸層協(xié)議的服務(wù)可將應(yīng)用程序數(shù)據(jù)分為大小適中的數(shù)據(jù)塊。該服務(wù)包括每段數(shù)據(jù)所需的封裝功能。報(bào)頭用于重組,每個(gè)數(shù)據(jù)塊都會(huì)添加一個(gè)報(bào)頭。此報(bào)頭用于跟蹤數(shù)據(jù)流。數(shù)據(jù)片段到達(dá)目的設(shè)備后,傳輸層必須能將其重組為可用于應(yīng)用層的完整數(shù)據(jù)流。傳輸層協(xié)議規(guī)定了如何使用傳輸層報(bào)頭信息來重組要傳送到應(yīng)用層的數(shù)據(jù)片段。7.1.1傳輸層的作用
(4)端到端連接提供流量控制、差錯(cuò)控制等管理服務(wù)網(wǎng)絡(luò)內(nèi)存和帶寬是有限的,當(dāng)傳輸層發(fā)現(xiàn)此類資源過載時(shí),就會(huì)利用某些傳輸層協(xié)議要求減小數(shù)據(jù)流量。流量控制同時(shí)可以防止網(wǎng)絡(luò)丟失分段或分段重組。當(dāng)然,數(shù)據(jù)在網(wǎng)絡(luò)中的分段很可能隨時(shí)發(fā)生錯(cuò)誤或丟失。此時(shí),傳輸層能夠通過重傳來保證所有數(shù)據(jù)的正確性和完整性。(3)標(biāo)識(shí)應(yīng)用程序。傳輸層為每一個(gè)應(yīng)用程序分配一個(gè)標(biāo)識(shí)符,即端口號(hào)。在每臺(tái)主機(jī)中,每個(gè)需要訪問的軟件進(jìn)程都將被分配一個(gè)唯一的端口號(hào)。7.1.2進(jìn)程之間的通信AP1AP2主機(jī)AR1R2LAN1IP協(xié)議的作用范圍LAN2WAN傳輸層協(xié)議的作用范圍AP3AP4主機(jī)B7.1.2進(jìn)程之間的通信
AP1AP2IP層傳輸層提供應(yīng)用進(jìn)程間的邏輯通信主機(jī)A的協(xié)議棧應(yīng)用進(jìn)程應(yīng)用進(jìn)程應(yīng)用層傳輸層網(wǎng)絡(luò)層鏈路層物理層
AP3AP4主機(jī)B的協(xié)議棧
7.1.2進(jìn)程之間的通信從IP層(網(wǎng)絡(luò)層)來說,通信的兩端是兩個(gè)主機(jī)。IP數(shù)據(jù)報(bào)的首部明確地標(biāo)志了這兩個(gè)主機(jī)的IP地址。進(jìn)行通信的實(shí)體實(shí)在主機(jī)中的進(jìn)程,是這個(gè)主機(jī)中的一個(gè)進(jìn)程和另一個(gè)主機(jī)中的進(jìn)程在交換數(shù)據(jù)(即通信)。因此,兩個(gè)主機(jī)進(jìn)行通信就是兩個(gè)主機(jī)中的應(yīng)用進(jìn)程互相通信。IP協(xié)議雖然能把分組送到目的主機(jī),但是這個(gè)分組還停留在主機(jī)的網(wǎng)絡(luò)層而沒有交付主機(jī)中的應(yīng)用進(jìn)程。從傳輸層的角度看,通信的真正端點(diǎn)并不是主機(jī)而是主機(jī)中的進(jìn)程。端到端的通信是應(yīng)用進(jìn)程之間的通信。在一個(gè)主機(jī)張中經(jīng)常有多個(gè)應(yīng)用進(jìn)程同時(shí)分別和另一個(gè)主機(jī)中的多個(gè)應(yīng)用進(jìn)程通信。如圖7.1所示,主機(jī)A的應(yīng)用進(jìn)程AP1和主機(jī)B的應(yīng)用進(jìn)程AP3通信,而在同時(shí),應(yīng)用進(jìn)程AP2也和對(duì)方的AP4通信。7.1.2進(jìn)程之間的通信
傳輸層提供了應(yīng)用進(jìn)程間的邏輯通信,其中“邏輯通信”是指,從應(yīng)用層來看,只要把應(yīng)用層報(bào)文交給下面的傳輸層,傳輸層就可以把這報(bào)文傳送到對(duì)方的傳輸層,好像這種通信就是沿水平方向直接傳送數(shù)據(jù),但事實(shí)上這兩個(gè)傳輸層之間被沒有一條水平方向的物理連接,數(shù)據(jù)的傳送是沿著圖中的虛線方向經(jīng)過多個(gè)層次傳送的。
傳輸層向高層用戶屏蔽了下面網(wǎng)絡(luò)核心的細(xì)節(jié)(如網(wǎng)絡(luò)拓?fù)洹⑺捎玫穆酚蓞f(xié)議等),它使應(yīng)用進(jìn)程看見的就是好像在兩個(gè)傳輸層實(shí)體之間有一條端到端的邏輯通信信道。7.1.3傳輸層協(xié)議
大家認(rèn)為,數(shù)據(jù)在傳輸過程中,我們是應(yīng)該首先保證傳輸速率還是應(yīng)該首先保證數(shù)據(jù)完整性?7.1.3傳輸層協(xié)議TCP/IP傳輸層傳輸層協(xié)議應(yīng)用層TCPUDP網(wǎng)際層(IP)網(wǎng)絡(luò)接口層傳輸控制協(xié)議TCP用戶數(shù)據(jù)報(bào)協(xié)議UDPTCP報(bào)文段(Segment)UDP報(bào)文、用戶數(shù)據(jù)報(bào)7.1.3傳輸層協(xié)議TCP/IP傳輸層傳輸控制協(xié)議TCP用戶數(shù)據(jù)報(bào)協(xié)議UDPTCP報(bào)文段(Segment)UDP報(bào)文、用戶數(shù)據(jù)報(bào)面向連接的服務(wù)建立連接數(shù)據(jù)傳送釋放連接在傳送數(shù)據(jù)之前不需要建立連接。7.1.3傳輸層協(xié)議TCP/IP傳輸層傳輸控制協(xié)議TCP用戶數(shù)據(jù)報(bào)協(xié)議UDP電子郵件-SMTP遠(yuǎn)程終端接入-Telnet萬維網(wǎng)-Http文件傳送-FTP7.1.3傳輸層協(xié)議TCP/IP傳輸層傳輸控制協(xié)議TCP用戶數(shù)據(jù)報(bào)協(xié)議UDP名字轉(zhuǎn)換-DNS文件傳送-TFTP路由選擇協(xié)議-RIPIP地址配置-DHCP網(wǎng)絡(luò)管理-SNMP遠(yuǎn)程文件服務(wù)器-RIP多播-IGMP7.1.3傳輸層協(xié)議傳輸層的UDP用戶數(shù)據(jù)報(bào)網(wǎng)絡(luò)層的IP數(shù)據(jù)報(bào)在傳輸層的端到端抽象的邏輯信道中傳送的。要經(jīng)過互聯(lián)網(wǎng)中許多路由器的存儲(chǔ)轉(zhuǎn)發(fā)IP數(shù)據(jù)報(bào)經(jīng)過路由器進(jìn)行轉(zhuǎn)發(fā),用戶數(shù)據(jù)報(bào)只是IP數(shù)據(jù)報(bào)中的數(shù)據(jù),路由器看不見有用戶數(shù)據(jù)報(bào)經(jīng)過它。7.1.4傳輸層的復(fù)用與分用
應(yīng)用層所有的應(yīng)用進(jìn)程都可以通過傳輸層再傳送到網(wǎng)絡(luò)層,這就是復(fù)用,也可以來理解:在發(fā)送方不同的應(yīng)用進(jìn)程都可以使用同一個(gè)傳輸層協(xié)議傳送數(shù)據(jù)(當(dāng)然需要加上適當(dāng)?shù)氖撞浚?/p>
傳輸層從網(wǎng)絡(luò)層收到數(shù)據(jù)后必須交付指明的應(yīng)用進(jìn)程,這就是分用。即接收方的傳輸層在剝?nèi)?bào)文的首部后能夠把這些數(shù)據(jù)正確交付目的應(yīng)用進(jìn)程。7.1.4傳輸層的復(fù)用與分用
當(dāng)網(wǎng)絡(luò)中的兩臺(tái)主機(jī)進(jìn)行通信的時(shí)候,為了表明數(shù)據(jù)是由源端的哪一種應(yīng)用發(fā)出的,以及數(shù)據(jù)所要訪問的是目的端的哪一種服務(wù),TCP/IP協(xié)議會(huì)在傳輸層封裝數(shù)據(jù)段時(shí),把發(fā)出數(shù)據(jù)的應(yīng)用程序的端口作為源端口,把接收數(shù)據(jù)的應(yīng)用程序的端口作為目的端口。數(shù)據(jù)段的頭中,從而使主機(jī)能夠同時(shí)維持多個(gè)會(huì)話的連接,使不同的應(yīng)用程序的數(shù)據(jù)不至于混淆。7.1.4傳輸層的復(fù)用與分用
一臺(tái)主機(jī)上的多個(gè)應(yīng)用程序可同時(shí)與其他多臺(tái)主機(jī)上的多個(gè)對(duì)等進(jìn)程進(jìn)行通信,所以需要對(duì)不同的虛電路進(jìn)行標(biāo)識(shí)。對(duì)TCP虛電路連接采用發(fā)送端和接收端的套接字(Socket)組合來識(shí)別,形如(Socket1,Socket2)。套接字是IP地址加上一個(gè)端口。發(fā)送套接字=源IP地址+源端口號(hào)接收套接字=目的IP地址+目的端口號(hào)7.1.4傳輸層的復(fù)用與分用()
()
()
()()
()()()主機(jī)A主機(jī)B主機(jī)C端口1端口2端口3端口4端口1端口2端口1端口2連接1連接2連接3連接47.1.4傳輸層的復(fù)用與分用
每個(gè)端口都擁有一個(gè)叫端口號(hào)的整數(shù)描述符,用來標(biāo)識(shí)不同的端口或進(jìn)程。在TCP/IP傳輸層,定義一個(gè)16Bit長度的整數(shù)作為端口標(biāo)識(shí),也就是說可定義216個(gè)端口,其端口號(hào)從0到216-1。由于TCP/IP傳輸層的TCP和UDP兩個(gè)協(xié)議是兩個(gè)完全獨(dú)立的軟件模塊,因此各自的端口號(hào)也相互獨(dú)立,即各自可獨(dú)立擁有216個(gè)端口。
兩臺(tái)計(jì)算機(jī)中的進(jìn)程要互相通信,不僅必須知道對(duì)方計(jì)算機(jī)的IP地址(為了找到對(duì)方的計(jì)算機(jī)),而且要知道對(duì)方的端口號(hào)(為了找到對(duì)方計(jì)算機(jī)中的應(yīng)用進(jìn)程)。7.1.4傳輸層的復(fù)用與分用1.服務(wù)器端使用的端口號(hào)服務(wù)器端使用的端口號(hào)熟知端口號(hào)登記端口號(hào)FTP-21SMTP-25系統(tǒng)端口號(hào),數(shù)值為0~123。Telnet-23DNS-53HTTPS-443HTTP-80數(shù)值為1024~49151。使用需要登記7.1.4傳輸層的復(fù)用與分用2.客戶端使用的端口號(hào)數(shù)值在49152~65535。由于這類端口號(hào)僅在客戶進(jìn)程運(yùn)行時(shí)才動(dòng)態(tài)選擇,因此又叫短暫端口號(hào)。這類端口號(hào)留給客戶進(jìn)程選擇暫時(shí)使用。當(dāng)服務(wù)器進(jìn)程收到客戶進(jìn)程的報(bào)文時(shí),就知道了客戶進(jìn)程所使用的端口號(hào),因而可以把數(shù)據(jù)發(fā)送給客戶進(jìn)程。通信結(jié)束后,剛才已使用過的客戶端口號(hào)就不復(fù)存在,這個(gè)端口號(hào)就可以供其他客戶進(jìn)程使用。7.2用戶數(shù)據(jù)報(bào)協(xié)議UDP7.2.1UDP概述7.2.2UDP的首部格式7.2.1UDP概述
用戶數(shù)據(jù)報(bào)協(xié)議UDP只是在IP的數(shù)據(jù)報(bào)服務(wù)之上增加了復(fù)用和分用的功能以及差錯(cuò)檢測的功能。UDP的主要特點(diǎn)是:
1)UDP是無連接的。即發(fā)送數(shù)據(jù)之前不需要建立連接,減少了開銷和發(fā)送數(shù)據(jù)之前的時(shí)延。
2)UDP使用盡最大努力交付,即不保證可靠交付,因此,主機(jī)不需要維持復(fù)雜的連接狀態(tài)表。3)UDP是面向報(bào)文的。發(fā)送方的UDP對(duì)應(yīng)用程序交下來的報(bào)文,在添加首部后就向下交付IP層。7.2.1UDP概述
4)UDP沒有擁塞控制,因此,網(wǎng)絡(luò)出現(xiàn)的擁塞不會(huì)使源主機(jī)的發(fā)送速率降低。如IP電話、實(shí)時(shí)視頻會(huì)議等
5)UDP支持一對(duì)一、一對(duì)多、多對(duì)一和多對(duì)多的交互通信。
6)UDP的首部開銷小,只有8個(gè)字節(jié),比TCP的20字節(jié)的首部要短。7.2.1UDP概述應(yīng)用層報(bào)文UDP用戶數(shù)據(jù)報(bào)的數(shù)據(jù)部分UDP首部IP數(shù)據(jù)報(bào)的數(shù)據(jù)部分IP首部
應(yīng)用層傳輸層IP層
7.2.2UDP的首部格式
用戶數(shù)據(jù)報(bào)UDP有兩個(gè)字段:數(shù)據(jù)字段和首部字段。首部字段只有8個(gè)字節(jié),由4個(gè)字段組成。每個(gè)字段都是兩個(gè)字節(jié)。
源IP地址目的IP地址UDP長度0源端口17目的端口長度檢驗(yàn)和偽首部UDP的數(shù)據(jù)部分UDP首部IP數(shù)據(jù)報(bào)的數(shù)據(jù)部分IP首部
字節(jié)44112字節(jié)122222UDP用戶數(shù)據(jù)報(bào)的首部和偽首部
7.2.2UDP的首部格式
當(dāng)傳輸層從IP層收到UDP數(shù)據(jù)報(bào)時(shí),就根據(jù)首部中的目的端口,把UDP數(shù)據(jù)包通過相應(yīng)的端口,上交最后的終點(diǎn)-應(yīng)用進(jìn)程。UDP基于端口的分用
端口1端口2端口3UDP分用IP層UDP數(shù)據(jù)報(bào)到達(dá)7.3傳輸控制協(xié)議TCP7.3.1傳輸控制協(xié)議TCP的特點(diǎn)7.3.2TCP報(bào)文段的首部格式7.3.3TCP可靠數(shù)據(jù)傳輸技術(shù)7.3.4TCP的運(yùn)輸連接管理7.3.5TCP的流量控制和擁塞控制7.3.1傳輸控制協(xié)議TCP的特點(diǎn)TCP最主要的特點(diǎn)
(1)TCP是面向連接的傳輸層協(xié)議。應(yīng)用程序在使用TCP協(xié)議之前,必須先建立TCP連接。在傳送數(shù)據(jù)完畢之后,必須釋放已經(jīng)建立起來的TCP連接(而UDP是無連接,無需釋放)。
(2)每一條TCP連接只能有兩個(gè)端點(diǎn),每一條TCP連接只能是點(diǎn)對(duì)點(diǎn)的(一對(duì)一)。7.3.1傳輸控制協(xié)議TCP的特點(diǎn)
TCP連接的端點(diǎn)不是主機(jī),不是主機(jī)的IP地址,不是應(yīng)用進(jìn)程,也不是傳輸層的協(xié)議端口。TCP連接的端點(diǎn)叫做套接字(Socket)或插口。根據(jù)互聯(lián)網(wǎng)標(biāo)準(zhǔn),端口號(hào)拼接到IP地址即構(gòu)成了套接字。
套接字Socket=(IP地址:端口號(hào))
每一條TCP連接唯一地被通信兩端的兩個(gè)端點(diǎn)(即兩個(gè)套接字)所確定,即:TCP連接::={Socket1,Socket2}={(IP1:port1),(IP2:port2)}7.3.1傳輸控制協(xié)議TCP的特點(diǎn)
(3)TCP提供可靠交付的服務(wù)。通過TCP連接傳送的數(shù)據(jù),無差錯(cuò)、不丟失、不重復(fù),并且按序到達(dá)。
(4)TCP提供全雙工通信。TCP允許通信雙方的應(yīng)用進(jìn)程在任何時(shí)候都能發(fā)送數(shù)據(jù)。
(5)面向字節(jié)流。TCP中的“流”(Stream)指的是流入到進(jìn)程或從進(jìn)程流出的字節(jié)序列。TCP并不知道所傳送的字節(jié)流的含義。7.3.1傳輸控制協(xié)議TCP的特點(diǎn)7.3.2TCP報(bào)文段的首部格式
TCP雖然是面向字節(jié)流的,但TCP傳送的數(shù)據(jù)單元卻是報(bào)文段(Segment),TCP通過報(bào)文段的交互來建立連接、傳輸數(shù)據(jù)、發(fā)出確認(rèn)、進(jìn)行差錯(cuò)控制、流量控制及關(guān)閉連接。
一個(gè)報(bào)文段分為首部和數(shù)據(jù)兩部分,而首部就是TCP為了實(shí)現(xiàn)端到端可靠傳輸所加上的控制信息,TCP的全部功能都體現(xiàn)在他首部中各字段的作用。而數(shù)據(jù)則是指由高層即應(yīng)用層來的數(shù)據(jù)。源端口號(hào)目的端口號(hào)序號(hào)bit07152331選項(xiàng)(長度可變)填充數(shù)據(jù)偏移確認(rèn)號(hào)窗口緊急指針檢驗(yàn)和保留URGPSHRSTSYNFINACKTCP首部20字節(jié)的固定首部
TCP報(bào)文段的數(shù)據(jù)部分TCP首部IP數(shù)據(jù)報(bào)的數(shù)據(jù)部分IP首部
7.3.2TCP報(bào)文段的首部格式
(1)源端口號(hào):占2字節(jié)16bit,報(bào)文段的源端口號(hào)。
(2)目的端口號(hào):占16bit,報(bào)文段的目的端口號(hào)。
(3)序號(hào);也稱報(bào)文段序號(hào),占32bit。序號(hào)范圍是[0,232-1],共232個(gè)序號(hào)。序號(hào)增加到232-1后,下一個(gè)序號(hào)就又回到0。TCP是面向字節(jié)流的,在一個(gè)TCP連接中傳送的字節(jié)流中的每一個(gè)字節(jié)都是按順序編號(hào)。整個(gè)要傳送的字節(jié)流的起始序號(hào)必須在連接建立時(shí)設(shè)置。首部中的序號(hào)字段值指的是本報(bào)文段所發(fā)送的字節(jié)。7.3.2TCP報(bào)文段的首部格式
(4)確認(rèn)號(hào):占32bit,是期望收到對(duì)方的下一個(gè)TCP報(bào)文段的第一個(gè)數(shù)據(jù)字節(jié)的序號(hào)。順序號(hào)和確認(rèn)號(hào)共同用于TCP服務(wù)中的確認(rèn)、差錯(cuò)控制。若確認(rèn)號(hào)=N,則表明:到序號(hào)N-1為止的所有數(shù)據(jù)都已正確收到。7.3.2TCP報(bào)文段的首部格式
(5)數(shù)據(jù)偏移:占4bit,它指出TCP報(bào)文段的數(shù)據(jù)起始處距離TCP報(bào)文段的起始處有多遠(yuǎn)。這實(shí)際上就是TCP報(bào)文段首部長度。由于首部中的選項(xiàng)字段長度不固定,因此首部長度字段是必要的。也有稱首部長度。
(6)保留:占6bit,6bit,為將來的應(yīng)用而保留,目前應(yīng)置為0。7.3.2TCP報(bào)文段的首部格式
(7)控制位:占6bit,用來說明本報(bào)文段的性質(zhì),包含如下六個(gè)控制位標(biāo)志:
URG(緊急):緊急指針字段有效;當(dāng)URG=1時(shí),表明緊急指針字段有效,它告訴系統(tǒng)此報(bào)文段中有緊急數(shù)據(jù),應(yīng)盡快傳送,而不要按原來的排隊(duì)順序來傳送。 ACK(確認(rèn)):確認(rèn)字段有效;僅當(dāng)ACK=1時(shí)確認(rèn)號(hào)字段才有效。當(dāng)ACK=0時(shí),確認(rèn)號(hào)無效。TCP規(guī)定,在鏈接建立后所有傳送的報(bào)文段都必須把ACK置1。 7.3.2TCP報(bào)文段的首部格式 PSH(推送):推送功能;當(dāng)兩個(gè)應(yīng)用進(jìn)程進(jìn)行交互式的通信時(shí),有時(shí)在一端的應(yīng)用進(jìn)程希望鍵入一個(gè)命令后立即就能夠收到對(duì)方的響應(yīng)。這種情況下,TCP就可以使用推送操作。這時(shí),發(fā)送方TCP把PSH置1,并立即創(chuàng)建一個(gè)報(bào)文段發(fā)送出去。接收方TCP收到PSH=1的報(bào)文段,就盡快地交付接收應(yīng)用進(jìn)程,而不再等到整個(gè)緩存都填滿了后在向上交付。 RST(復(fù)位):重置連接;當(dāng)RST=1時(shí),表明TCP連接中出現(xiàn)嚴(yán)重差錯(cuò),必須立即釋放連接,然后再重新建立運(yùn)輸連接。 7.3.2TCP報(bào)文段的首部格式
SYN(同步):同步序列號(hào);在建立連接時(shí)用來同步序號(hào)。當(dāng)SYN=1而ACK=0時(shí),表明這是一個(gè)連接請(qǐng)求報(bào)文段。對(duì)方若同意建立連接,則應(yīng)在響應(yīng)的報(bào)文段中使SYN=1和ACK=1.
FIN(終止):發(fā)送方不再發(fā)送數(shù)據(jù)。用來釋放一個(gè)連接。當(dāng)FIN=1時(shí),表明此報(bào)文段的發(fā)送方的數(shù)據(jù)已發(fā)送完畢,并要求釋放運(yùn)輸連接。7.3.2TCP報(bào)文段的首部格式
(8)窗口大小:占16bit,窗口值是[0,216-1]之間的整數(shù)。窗口是指發(fā)送本報(bào)文段的接收窗口。窗口值告訴對(duì)方:從本報(bào)文段首部中的確認(rèn)號(hào)算起。接收方因自身緩存空間限制而允許對(duì)方發(fā)送的數(shù)據(jù)量(以字節(jié)為單位)。總之,窗口值作為接收方讓發(fā)送方設(shè)置其發(fā)送窗口的依據(jù)。
注:窗口字段明確指出了現(xiàn)在允許對(duì)方發(fā)送的數(shù)據(jù)量。窗口值經(jīng)常在動(dòng)態(tài)變化著。
(9)校驗(yàn)和:占32bit,用于對(duì)報(bào)文段首部和數(shù)據(jù)進(jìn)行校驗(yàn)。7.3.2TCP報(bào)文段的首部格式
(10)緊急指針:占16bit。緊急指針僅在URG=1時(shí)才有意義,它指出本報(bào)文段中的緊急數(shù)據(jù)的字節(jié)數(shù)(緊急數(shù)據(jù)結(jié)束后就是普通數(shù)據(jù))。
(11)選項(xiàng):長度可變,最長可達(dá)40字節(jié)。當(dāng)沒有使用選項(xiàng)時(shí),TCP的首部長度是20字節(jié)。①M(fèi)SS是每個(gè)TCP報(bào)文段中的數(shù)據(jù)字段的最大長度。數(shù)據(jù)字段加上TCP首部才是整個(gè)TCP報(bào)文段。因此,MSS并不是整個(gè)TCP報(bào)文段的最大長度,而是TCP報(bào)文段長度減TCP首部長度。數(shù)據(jù)鏈路層有MTU的限制,以太網(wǎng)的MTU默認(rèn)是1500字節(jié),要想數(shù)據(jù)包在傳輸過程中在數(shù)據(jù)鏈路層不分片,MSS應(yīng)為1460字節(jié),7.3.2TCP報(bào)文段的首部格式7.3.2TCP報(bào)文段的首部格式
②窗口擴(kuò)大選項(xiàng)。窗口擴(kuò)大選項(xiàng)用于擴(kuò)大窗口。我們知道,TCP首部中窗口字段的長度是16bit,因此,窗口最大值為64KB。
窗口擴(kuò)大選項(xiàng)可以在雙方初始建立TCP連接時(shí)進(jìn)行協(xié)商。如果連接的某一端實(shí)現(xiàn)了窗口擴(kuò)大,那么當(dāng)它不再需要擴(kuò)大其窗口時(shí),可發(fā)送S=0選項(xiàng),使窗口值回到16bit。
③時(shí)間戳選項(xiàng)。時(shí)間戳選項(xiàng)占10字節(jié),其中最主要的字段是時(shí)間戳字段(4字節(jié))和時(shí)間戳回送回答字段(4字節(jié))。
用來計(jì)算往返時(shí)間RTT。
用于處理TCP序號(hào)超過232的情況,這又稱為防止序號(hào)繞回PAWS。7.3.2TCP報(bào)文段的首部格式
(12)填充:當(dāng)整個(gè)TCP首部長度不是4字節(jié)的整倍數(shù)時(shí),需要加以填充。
(13)數(shù)據(jù):來自高層即應(yīng)用層的協(xié)議數(shù)據(jù)。7.3.2TCP報(bào)文段的首部格式
EthernetII,Src:IntelCor_ac:30:00(34:2e:b7:ac:30:00),Dst:Tp-LinkT_10:fd:49(f8:8c:21:10:fd:49)//數(shù)據(jù)鏈路層的以太網(wǎng)幀。InternetProtocolVersion4,Src:,Dst://網(wǎng)絡(luò)層TransmissionControlProtocol,SrcPort:52573,DstPort:80,Seq:1,Ack:1,Len:583//傳輸層SourcePort:52573//源端口號(hào)DestinationPort:80//目的端口,HTTP端口是80。[Streamindex:4][Conversationcompleteness:Complete,WITH_DATA(63)][TCPSegmentLen:583]SequenceNumber:1(relativesequencenumber)//序號(hào)SequenceNumber(raw):2760042442[NextSequenceNumber:584(relativesequencenumber)]//下一個(gè)序號(hào)AcknowledgmentNumber:1(relativeacknumber)//確認(rèn)號(hào)Acknowledgmentnumber(raw):40974908010101....=HeaderLength:20bytes(5)//數(shù)據(jù)偏移,也稱頭部長度7.3.2TCP報(bào)文段的首部格式Flags:0x018(PSH,ACK)000.........=Reserved:Notset...0........=Nonce:Notset....0.......=CongestionWindowReduced(CWR):Notset保留.....0......=ECN-Echo:Notset......0.....=Urgent:Notset//緊急URG.......1....=Acknowledgment:Set//確認(rèn)ACK........1...=Push:Set//推送PSH.........0..=Reset:Notset//復(fù)位RST..........0.=Syn:Notset//同步SYN...........0=Fin:Notset//終止FIN[TCPFlags:·······AP···]Window:517//窗口[Calculatedwindowsize:132352]//實(shí)際(真實(shí))的窗口大小為517*256=132352[Windowsizescalingfactor:256]//窗口大小比例因子為256Checksum:0xd81e[unverified]//校驗(yàn)和[ChecksumStatus:Unverified]UrgentPointer:0//緊急指針7.4TCP的可靠傳輸
7.4.1以字節(jié)為單位的滑動(dòng)窗口
7.4.2超時(shí)重傳時(shí)間的選擇
7.4.3選擇確認(rèn)(SACK)7.4.1以字節(jié)為單位的滑動(dòng)窗口
發(fā)送窗口
接收窗口7.4.1以字節(jié)為單位的滑動(dòng)窗口7.4.2超時(shí)重傳時(shí)間的選擇
重傳機(jī)制是TCP中最重要和最復(fù)雜的問題之一。TCP的發(fā)送方在規(guī)定的時(shí)間內(nèi)沒有收到確認(rèn)就要重傳已發(fā)送的報(bào)文段。但超時(shí)重傳時(shí)間的選擇是TCP最復(fù)雜的問題之一。
1.TCP時(shí)間戳選項(xiàng)TCP時(shí)間戳(Timestamp)選項(xiàng)可以用來精確地測量RTT。RTT=當(dāng)前時(shí)間-數(shù)據(jù)包中時(shí)間戳選項(xiàng)的回顯時(shí)間7.4.2超時(shí)重傳時(shí)間的選擇
2.重傳隊(duì)列中數(shù)據(jù)包的TCP控制塊
TCP發(fā)送窗口中保存著已發(fā)送而未被確認(rèn)的數(shù)據(jù)包,數(shù)據(jù)包skb中的TCP控制塊包含一個(gè)變量tcp_skb_cb→when,記錄了該數(shù)據(jù)包的第一次發(fā)送時(shí)間,當(dāng)收到該數(shù)據(jù)包的確認(rèn)后,就可以計(jì)算RTT,RTT=當(dāng)前時(shí)間–when。這就意味著發(fā)送方收到一個(gè)確認(rèn)就能計(jì)算新的RTT[SEQ/ACKanalysis][ThisisanACKtothesegmentinframe:15][TheRTTtoACKthesegmentwas:0.000032000seconds]//第15個(gè)包的確認(rèn),計(jì)算出的RTT為0.000032000s[iRTT:0.015911000seconds]7.4.2超時(shí)重傳時(shí)間的選擇
3.Karn算法卡恩(Karn)提出了一種算法:在計(jì)算RTTs時(shí),只要報(bào)文段重傳了,就不采用其往返時(shí)間樣本。這樣得出的RTTs和RTO比較準(zhǔn)確。后來對(duì)Karn算法進(jìn)行了修正:報(bào)文段每重傳一次,就把RTO增大一些。具體的計(jì)算公式如下:新的RTO=γ×舊的RTO式中,系數(shù)γ的典型值是2。當(dāng)不再發(fā)生報(bào)文段的重傳時(shí),根據(jù)上面給出的公式計(jì)算RTO的值。實(shí)踐證明,這種策略較為合理。7.3.3TCP可靠數(shù)據(jù)傳輸技術(shù)3.連續(xù)ARQ協(xié)議
位于發(fā)送窗口內(nèi)的5個(gè)分組都可連續(xù)發(fā)送出去,而不需要等待對(duì)方的確認(rèn)。這樣,信道的利用率就提高了。134562791011128(a)發(fā)送窗口是5tt發(fā)送窗口向前連續(xù)ARQ協(xié)議的工作原理134562791011128發(fā)送窗口
連續(xù)ARQ協(xié)議規(guī)定,發(fā)送方每收到一個(gè)確認(rèn),就把發(fā)送窗口向前滑動(dòng)一個(gè)分組的位置。
接收方一般都是采用累計(jì)確認(rèn)的方式,這就是說,接收方不必對(duì)收到的分組逐個(gè)發(fā)送確認(rèn),而是在收到幾個(gè)分組后,對(duì)按序到達(dá)的最后一個(gè)分組發(fā)送確認(rèn),這就表示,到這個(gè)分組為止的所有分組都已經(jīng)正確收到了。7.3.3TCP可靠數(shù)據(jù)傳輸技術(shù)4.滑動(dòng)窗口協(xié)議
采用可變長的滑動(dòng)窗口協(xié)議進(jìn)行流量控制,以防止由于發(fā)送端與接收端之間的不匹配而引起數(shù)據(jù)丟失。
TCP采用可變長的滑動(dòng)窗口,使得發(fā)送端與接收端可根據(jù)自己的CPU和數(shù)據(jù)緩存資源對(duì)數(shù)據(jù)發(fā)送和接收能力來做出動(dòng)態(tài)調(diào)整,從而靈活性更強(qiáng),也更合理。7.3.3TCP可靠數(shù)據(jù)傳輸技術(shù)5.重發(fā)機(jī)制
重發(fā)機(jī)制是TCP中最重要的、最復(fù)雜的問題之一。TCP每發(fā)送一個(gè)報(bào)文段,就設(shè)置一次定時(shí)器。只要定時(shí)器設(shè)置的重發(fā)時(shí)間到而還沒有收到確認(rèn),就要重發(fā)這一報(bào)文段。
TCP采用了一種自適應(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í)延T。7.3.3TCP可靠數(shù)據(jù)傳輸技術(shù)5.重發(fā)機(jī)制
實(shí)現(xiàn)可靠傳輸要滿足三個(gè)要素:
(1)序號(hào):傳輸?shù)臄?shù)據(jù)按字節(jié)編號(hào)。
(2)確認(rèn):接收方向發(fā)送方確認(rèn)收到數(shù)據(jù)。
(3)重傳:一定時(shí)間內(nèi)沒有收到接收方的確認(rèn),發(fā)送方重傳數(shù)據(jù)。7.3.4TCP的運(yùn)輸連接管理
運(yùn)輸連接就有三個(gè)階段,即:連接建立、數(shù)據(jù)傳送和連接釋放。運(yùn)輸連接的管理就是使運(yùn)輸連接的建立和釋放都能正常地進(jìn)行。
在TCP連接建立過程中要解決以下三個(gè)問題:
(1)要使每一方能夠確知對(duì)方的存在。
(2)要允許雙方協(xié)商一些參數(shù)(如最大窗口值、是否使用窗戶擴(kuò)大選項(xiàng)和時(shí)間戳選項(xiàng)以及服務(wù)質(zhì)量)。
(3)能夠?qū)\(yùn)輸實(shí)體資源(如緩存大小、連接表中的項(xiàng)目等)進(jìn)行分配。7.3.4TCP的運(yùn)輸連接管理1.建立連接TCP采用了一種稱為三報(bào)文握手的方式,三報(bào)文握手方式使得“序號(hào)/確認(rèn)號(hào)”系統(tǒng)能夠正常工作,從而使它們的序號(hào)達(dá)成同步。如果三報(bào)文握手成功,則連接建立成功,可以開始傳送數(shù)據(jù)信息。
在圖7.9中,假定主機(jī)A運(yùn)行的是TCP客戶程序,而主機(jī)B運(yùn)行TCP服務(wù)器程序。7.3.4TCP的運(yùn)輸連接管理客戶服務(wù)器CLOSED確認(rèn)數(shù)據(jù)傳送ABCLOSEDSYN-SENTLISTENSYN-RCVDESTABLISHEDESTABLISHED主動(dòng)打開被動(dòng)打開SYN=1,seq=xSYN=1,ACK=1,seq=y,ack=x+1ACK=1,seq=x+1,ack=y+17.3.4TCP的運(yùn)輸連接管理最初兩端的TCP進(jìn)程都處于CLOSED(關(guān)閉)狀態(tài)。圖中在主機(jī)下面的方框分別是TCP進(jìn)程所處的狀態(tài)。在圖中,A主動(dòng)打開連接,而B被動(dòng)打開連接。
(1)服務(wù)器主機(jī)B的TCP服務(wù)器進(jìn)程先創(chuàng)建傳輸控制塊TCB,準(zhǔn)備接受客戶進(jìn)程的連接請(qǐng)求,服務(wù)器進(jìn)程就處于LISTEN(收聽)狀態(tài),等待客戶的連接請(qǐng)求。如有,即作出響應(yīng)。傳輸控制塊TCB存儲(chǔ)連接中的信息,如TCP連接表,發(fā)送和接收緩存的指針,重傳隊(duì)列的指針,當(dāng)前發(fā)送和接收序號(hào)等。7.3.4TCP的運(yùn)輸連接管理
(2)客戶主機(jī)A的TCP客戶進(jìn)程創(chuàng)建傳輸控制塊TCB,向服務(wù)器主機(jī)B發(fā)出連接請(qǐng)求報(bào)文段,其部中的同步位SYN=1,同時(shí)選擇一個(gè)同步序號(hào)seq=x。TCP規(guī)定,SYN報(bào)文段(即SYN=1的報(bào)文段)不能攜帶數(shù)據(jù),但要消耗掉一個(gè)序號(hào)(SEQ=100,在后面?zhèn)魉蛿?shù)據(jù)時(shí)的第一個(gè)數(shù)據(jù)字節(jié)的序號(hào)是x+1(即101))。這時(shí),源主機(jī)A的TCP客戶程序進(jìn)入SYN_SENT(同步已發(fā)送)狀態(tài)。這是第一次握手。
注:大寫ACK表示首部中的確認(rèn)位ACK,小寫ack表示確認(rèn)字段的值。7.3.4TCP的運(yùn)輸連接管理
(3)服務(wù)器主機(jī)B收到連接請(qǐng)求報(bào)文段后,如同意建立連接,則向客戶主機(jī)A發(fā)送確認(rèn)。在確認(rèn)報(bào)文段中應(yīng)將ACK位和SYN位都置1。確認(rèn)號(hào)ack=x+1,同時(shí)也為自己選擇一個(gè)初始序號(hào)seq=y。這個(gè)報(bào)文段也不能攜帶數(shù)據(jù),但同樣也要消耗掉一個(gè)序號(hào)。這時(shí),服務(wù)器主機(jī)B進(jìn)入SYN_RCVD(同步接收)狀態(tài)。這是第二次握手。
(4)客戶主機(jī)A的TCP客戶進(jìn)程收到服務(wù)器主機(jī)B的確認(rèn)后,還要向服務(wù)器主機(jī)B給出確認(rèn),其ACK置1,確認(rèn)號(hào)ack=y+1,而自己的序號(hào)seq=x+1。ACK報(bào)文段可攜帶數(shù)據(jù),不攜帶數(shù)據(jù)則不消耗序號(hào),此時(shí),TCP連接已建立,客戶主機(jī)A進(jìn)入ESTABLISHED(已連接)狀態(tài)。這是第三次握手。7.3.4TCP的運(yùn)輸連接管理
(5)當(dāng)服務(wù)器主機(jī)B收到客戶主機(jī)A的確認(rèn)后,也進(jìn)入ESTABLISHED(已連接)狀態(tài)。這一次的確認(rèn)是為了防止已失效的連接請(qǐng)求報(bào)文段突然又傳送到了服務(wù)器主機(jī)B。
運(yùn)行客戶進(jìn)程的客戶主機(jī)A的TCP通知上層應(yīng)用進(jìn)程,連接已經(jīng)建立。當(dāng)客戶主機(jī)A向服務(wù)器主機(jī)B發(fā)送第一個(gè)數(shù)據(jù)報(bào)文段時(shí),其序號(hào)仍為x+1,因?yàn)榍耙粋€(gè)確認(rèn)報(bào)文段并不消耗序號(hào)。當(dāng)運(yùn)行服務(wù)進(jìn)程的服務(wù)器主機(jī)B的TCP收到客戶主機(jī)A的確認(rèn)后,也通知其上層應(yīng)用進(jìn)程,連接已經(jīng)建立。至此建立了一個(gè)全雙工的連接。7.3.4TCP的運(yùn)輸連接管理
位于TCP/IP分層模型的上層的應(yīng)用程序傳輸數(shù)據(jù)流給TCP。TCP接收到字節(jié)流并且把它們分解成段。假如數(shù)據(jù)流不能被分成一段,那么每一個(gè)其它段都被分給一個(gè)序列號(hào)。在目的主機(jī)端.這個(gè)序列號(hào)用來把接收到的段重新排序成原來的數(shù)據(jù)流。
第一步:主機(jī)A使用滑動(dòng)窗口發(fā)送全部的四個(gè)段到主機(jī)B。這是第一步。不幸的是,只有段l03、105和106成功地到達(dá)了主機(jī)B(參看②)。2.傳送數(shù)據(jù)7.3.4TCP的運(yùn)輸連接管理主機(jī)A主機(jī)B①
ack=104,seq=225,ack=x+1ack=107,seq=226103②
105106⑤
④
③
⑥
103
104105106103
104105106
1041051067.3.4TCP的運(yùn)輸連接管理
第二步:因?yàn)槎?03和104是連續(xù)的,所以主機(jī)B返回一個(gè)確認(rèn)給主機(jī)A,通知主機(jī)A它只成功地接收到了第103段,在它的確認(rèn)中主機(jī)B使用它期待得到的下一個(gè)序列號(hào)作為確認(rèn)(參看③通過給出序列號(hào)104)。
第三步:主機(jī)A接到主機(jī)B的報(bào)文后,重新發(fā)送段104、105和106(參看④)。雖然主機(jī)B已經(jīng)成功地收到了段105和106,但是根據(jù)協(xié)議規(guī)定,也必須重新發(fā)送。
第四步:當(dāng)主機(jī)B成功地收到這些段以后.主機(jī)B返回一個(gè)確認(rèn)給主機(jī)A(參看⑥),并根據(jù)序列號(hào)把它們重組成原來的數(shù)流。把它傳輸?shù)礁邔討?yīng)用程序。7.3.4TCP的運(yùn)輸連接管理
TCP連接是一個(gè)全雙工的數(shù)據(jù)通道,一個(gè)連接的關(guān)閉必須由通信雙方共同完成。當(dāng)通信的一方?jīng)]有數(shù)據(jù)需要發(fā)送給對(duì)方時(shí),可以使用FIN段向?qū)Ψ桨l(fā)送關(guān)閉連接請(qǐng)求。這時(shí),它雖然不再發(fā)送數(shù)據(jù),但并不排斥在這個(gè)連接上繼續(xù)接收數(shù)據(jù)。只有當(dāng)通信的對(duì)方也遞交了關(guān)閉連接的請(qǐng)求后,這個(gè)TCP連接才會(huì)完全關(guān)閉。
在釋放連接時(shí),既可以由一方發(fā)起而另一方響應(yīng),也可以雙方同時(shí)發(fā)起。無論怎樣,收到釋放連接請(qǐng)求的一方必須使用ACK段給予確認(rèn)。實(shí)際上,TCP連接的釋放過程也是一個(gè)四次揮手的過程。3.釋放連接6.1.2子網(wǎng)劃分TCP釋放連接的過程客戶服務(wù)器CLOSEDABCLOSEDSYN-SENTCLOSE-WAITLAST-ACKESTABLISHEDESTABLISHEDFIN-WAIT-2TIME-WAIT主動(dòng)關(guān)閉等待2MSL被動(dòng)關(guān)閉通知應(yīng)用進(jìn)程數(shù)據(jù)傳送FIN=1,seq=uACK=1,seq=v,ack=u+1FIN=1,ACK=1,seq=w,ack=u+1ACK=1,seq=u+1,ack=w+1數(shù)據(jù)傳送7.3.4TCP的運(yùn)輸連接管理
(1)客戶主機(jī)A的應(yīng)用進(jìn)程先向其TCP發(fā)出連接釋放報(bào)文段,并停止再發(fā)送數(shù)據(jù),主動(dòng)關(guān)閉TCP連接。客戶主機(jī)A的TCP通知服務(wù)器主機(jī)B要釋放從A到B這個(gè)方向的連接,將發(fā)往服務(wù)器主機(jī)B的TCP報(bào)文段首部的終止比特FIN置1,其序號(hào)seq=u,它等于前面已傳送過的數(shù)據(jù)的最后一個(gè)字節(jié)的序號(hào)加1。這時(shí)客戶主機(jī)A進(jìn)入終止等待1狀態(tài),等待服務(wù)器主機(jī)B的確認(rèn)。請(qǐng)注意,TCP規(guī)定,F(xiàn)IN報(bào)文段即使不攜帶數(shù)據(jù),它也消耗掉一個(gè)序號(hào)。這是第一次揮手。7.3.4TCP的運(yùn)輸連接管理
(2)服務(wù)器主機(jī)B收到連接釋放報(bào)文段后即發(fā)出確認(rèn),確認(rèn)號(hào)是ack=u+1,而這個(gè)報(bào)文段自己的序號(hào)為v,等于B前面已傳送的數(shù)據(jù)的最后一個(gè)字節(jié)的序號(hào)加1,然后服務(wù)器主機(jī)B就進(jìn)入CLOSE-WAIT(關(guān)閉等待)狀態(tài)。TCP服務(wù)器進(jìn)程這時(shí)應(yīng)通知高層應(yīng)用進(jìn)程,因而從A到B這個(gè)方向的連接就釋放了,這時(shí)的TCP連接處于半關(guān)閉狀態(tài)(half-close)狀態(tài),相當(dāng)于客戶主機(jī)A已經(jīng)沒有數(shù)據(jù)要發(fā)送了,但服務(wù)器主機(jī)B還有一些數(shù)據(jù)要發(fā)送客戶主機(jī)A,客戶主機(jī)A仍要接收。也就是說,從服務(wù)器主機(jī)B到客戶主機(jī)A這個(gè)方向的連接并未關(guān)閉,這個(gè)狀態(tài)可能會(huì)持續(xù)一段時(shí)間。這是第二次揮手。7.3.4TCP的運(yùn)輸連接管理
(3)若服務(wù)器主機(jī)B沒有要向客戶主機(jī)A發(fā)送的數(shù)據(jù),其應(yīng)用進(jìn)程就通知TCP釋放連接。這時(shí)客戶主機(jī)B發(fā)出的連接釋放報(bào)文段必須將終止比特FIN置1。現(xiàn)假定B的序號(hào)為w(在半關(guān)閉狀態(tài)服務(wù)器主機(jī)B可能又發(fā)送了一些數(shù)據(jù))。服務(wù)器B還必須重復(fù)上次已發(fā)送過的確認(rèn)號(hào)ack=u+1。這是服務(wù)器主機(jī)B進(jìn)入LAST-ACK(最后確認(rèn))狀態(tài),等待客戶主機(jī)A的確認(rèn)。這是第三次揮手。
客戶主機(jī)A收到服務(wù)器主機(jī)B的確認(rèn)后,就進(jìn)入FIN-WAIT-2(終止等待2)狀態(tài),等待服務(wù)器主機(jī)B發(fā)出的連接釋放報(bào)文段。7.3.4TCP的運(yùn)輸連接管理
(4)客戶主機(jī)A收到服務(wù)器主機(jī)B的連接釋放報(bào)文段后,必須對(duì)此發(fā)出確認(rèn)。在確認(rèn)報(bào)文段中將ACK置1,確認(rèn)號(hào)ack=w+1,而自己的序號(hào)是seq=u+1。然后進(jìn)入到TIME-WAIT(時(shí)間等待)狀態(tài)。但這時(shí),TCP連接還沒有釋放掉。必須經(jīng)過時(shí)間等待計(jì)時(shí)器(TIME-WAITtimer)設(shè)置的時(shí)間2MSL后,客戶主機(jī)A才進(jìn)入到CLOSED狀態(tài),才能開始建立下一個(gè)新的連接。當(dāng)客戶主機(jī)A撤銷相應(yīng)的傳輸控制塊TCB后,就結(jié)束了這次的TCP連接。這是第四次揮手。7.3.5TCP的流量控制和擁塞控制
TCP采用大小可變的滑動(dòng)窗口機(jī)制可以很方便地在TCP連接上實(shí)現(xiàn)對(duì)發(fā)送放的流量控制。
接收主機(jī)將通知發(fā)送主機(jī),在它收到確認(rèn)之前發(fā)送主機(jī)能夠發(fā)送多少字節(jié),這個(gè)值稱為窗口。窗口的大小是字節(jié)。在TCP報(bào)文段首部的窗口字段寫入的數(shù)值就是當(dāng)前給對(duì)方設(shè)置發(fā)送窗口的數(shù)據(jù)的上限。1.流量控制7.3.5TCP的流量控制和擁塞控制
在數(shù)據(jù)傳輸過程中,TCP提供了一種基于滑動(dòng)窗口協(xié)議的流量控制機(jī)制,用接收端接收能力(緩沖區(qū)的容量)的大小來控制發(fā)送端發(fā)送的數(shù)據(jù)量。
在建立連接時(shí),通信雙方使用SYN報(bào)文段或ACK報(bào)文段中的窗口字段捎帶著各自的接收窗口尺寸,即通知對(duì)方從而確定對(duì)方發(fā)送窗口的上限。在數(shù)據(jù)傳輸過程中,發(fā)送方按接收方通知的窗口尺寸和序號(hào)發(fā)送一定量的數(shù)據(jù),接收方根據(jù)接收緩沖區(qū)的使用情況動(dòng)態(tài)調(diào)整接收窗口尺寸,并在發(fā)送TCP報(bào)文段或確認(rèn)段時(shí)稍帶新的窗口尺寸和確認(rèn)號(hào)通知發(fā)送方。7.3.5TCP的流量控制和擁塞控制seq=1,DATAseq=101,DATAseq=201,DATA丟失!ACK=1,ack=201,rwnd=300seq=301,DATAseq=401,DATAseq=201,DATAACK=1,ack=501,rwnd=100ACK=1,ack=601,rwnd=0seq=501,DATAA發(fā)送了序號(hào)1至100,還能發(fā)送300字節(jié)A發(fā)送了序號(hào)101至200,還能發(fā)送200字節(jié)A發(fā)送了序號(hào)201至300,但丟失了!允許A發(fā)送序號(hào)201至500,共300字節(jié)不允許A再發(fā)送(到序號(hào)600為止的數(shù)據(jù)都收到了)A發(fā)送了序號(hào)301至400,還能再發(fā)送100字節(jié)新數(shù)據(jù)A發(fā)送了序號(hào)401至500,不能再發(fā)送新數(shù)據(jù)了A超時(shí)重傳舊的數(shù)據(jù),但不能發(fā)送新的數(shù)據(jù)允許A發(fā)送序號(hào)501至600,共100字節(jié)A發(fā)送了序號(hào)501至600,不能再發(fā)送了AB利用可變窗口進(jìn)行流量控制7.3.5TCP的流量控制和擁塞控制
圖中,假設(shè)主機(jī)A向主機(jī)B發(fā)送數(shù)據(jù)。在連接建立時(shí),主機(jī)B告訴主機(jī)A,“我的接收窗口rwnd=400字節(jié)。因此,發(fā)送放的發(fā)送窗口不能超過接收方給出的接收窗口的數(shù)值。再假設(shè)每一個(gè)報(bào)文段為100字節(jié)長,而數(shù)據(jù)報(bào)文段序號(hào)的初始值設(shè)為1。設(shè)一個(gè)報(bào)文段為100字節(jié)長,序號(hào)的初始值為1(即圖7.12中第一個(gè)箭頭上面的序號(hào)seq=1)。7.3.5TCP的流量控制和擁塞控制
圖中,主機(jī)B進(jìn)行了三次流量控制。第一次將窗口減小到rwnd=300字節(jié),第二次將窗口又減為rwnd=200字節(jié),最后一
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 廣西玉林市本年度(2025)小學(xué)一年級(jí)數(shù)學(xué)統(tǒng)編版期末考試(下學(xué)期)試卷及答案
- 旅游地理測試題(含參考答案)
- 食品檢驗(yàn)?zāi)M題(附答案)
- 船舶傳感與自適應(yīng)控制考核試卷
- 電子商務(wù)創(chuàng)新社交電商與直播購物考核試卷
- 精神康復(fù)患者的自我接納訓(xùn)練考核試卷
- 船舶改裝施工過程中的問題與解決方案考核試卷
- 纖維編織技術(shù)在醫(yī)療輔助設(shè)備中的發(fā)展考核試卷
- 稀土金屬提煉過程中的前沿技術(shù)探索與應(yīng)用考核試卷
- 航運(yùn)業(yè)數(shù)字化轉(zhuǎn)型考核試卷
- 2025年新人教PEP版英語三年級(jí)下冊(cè)課件 Unit2 Part B 第2課時(shí)
- 2025年廣東廣業(yè)投資集團(tuán)有限公司招聘筆試參考題庫含答案解析
- 家校共育閱讀活動(dòng)課件
- 二零二五年跨境電商運(yùn)營合伙人協(xié)議模板3篇
- 開挖作業(yè)安全培訓(xùn)課件
- 產(chǎn)房靜脈留置針護(hù)理
- 2024-2030年中國硅酸鈉行業(yè)發(fā)展策略分析與投資風(fēng)險(xiǎn)評(píng)估報(bào)告
- 【MOOC】藥物與健康-浙江大學(xué) 中國大學(xué)慕課MOOC答案
- 新增現(xiàn)澆樓板結(jié)構(gòu)加固施工方案
- 2024年遼寧省第二屆職業(yè)技能大賽(健康照護(hù)賽項(xiàng))理論參考試題庫(含答案)
- 初中主題班會(huì)《與不良的行為習(xí)慣告別》課件
評(píng)論
0/150
提交評(píng)論