版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
計算機網(wǎng)絡(luò)簡明教程第5章運輸層第5章運輸層
5.1運輸層協(xié)議概述5.1.1進程之間的通信5.1.2運輸層的兩個主要協(xié)議5.1.3運輸層的端口5.2用戶數(shù)據(jù)報協(xié)議UDP5.3傳輸控制協(xié)議TCP概述 5.3.1TCP最主要的特點 5.3.2TCP的連接
第5章運輸層(續(xù))5.4可靠傳輸?shù)墓ぷ髟?.4.1停止等待協(xié)議5.4.2連續(xù)ARQ協(xié)議5.5TCP報文段的首部格式5.6滑動窗口機制5.7TCP的運輸連接管理從通信和信息處理的角度看,運輸層向它上面的應(yīng)用層提供通信服務(wù),它屬于面向通信部分的最高層,同時也是用戶功能中的最低層。5.1運輸層協(xié)議概述
5.1.1進程之間的通信當(dāng)網(wǎng)絡(luò)的邊緣部分中的兩個主機使用網(wǎng)絡(luò)的核心部分的功能進行端到端的通信時,只有位于網(wǎng)絡(luò)邊緣部分的主機的協(xié)議棧才有運輸層,而網(wǎng)絡(luò)核心部分中的路由器在轉(zhuǎn)發(fā)分組時都只用到下三層的功能。物理層網(wǎng)絡(luò)層運輸層應(yīng)用層數(shù)據(jù)鏈路層面向信息處理面向通信用戶功能網(wǎng)絡(luò)功能應(yīng)用進程之間的通信兩個主機進行通信實際上就是兩個主機中的應(yīng)用進程互相通信。應(yīng)用進程之間的通信又稱為端到端的通信。運輸層的一個很重要的功能就是復(fù)用和分用。應(yīng)用層不同進程的報文通過不同的端口向下交到運輸層,再往下就共用網(wǎng)絡(luò)層提供的服務(wù)?!斑\輸層提供應(yīng)用進程間的邏輯通信”?!斑壿嬐ㄐ拧钡囊馑际牵哼\輸層之間的通信好像是沿水平方向傳送數(shù)據(jù)。但事實上這兩個運輸層之間并沒有一條水平方向的物理連接。運輸層為相互通信的應(yīng)用進程提供了邏輯通信54321運輸層提供應(yīng)用進程間的邏輯通信主機A主機B應(yīng)用進程應(yīng)用進程路由器1路由器2AP1LAN2WANAP2AP3AP4IP層LAN1AP1AP2AP454321IP協(xié)議的作用范圍運輸層協(xié)議TCP和UDP的作用范圍AP3運輸層協(xié)議和網(wǎng)絡(luò)層協(xié)議的主要區(qū)別應(yīng)用進程…應(yīng)用進程…IP協(xié)議的作用范圍(提供主機之間的邏輯通信)TCP和UDP協(xié)議的作用范圍(提供進程之間的邏輯通信)因特網(wǎng)運輸層的主要功能運輸層為應(yīng)用進程之間提供端到端的邏輯通信(但網(wǎng)絡(luò)層是為主機之間提供邏輯通信)。運輸層還要對收到的報文進行差錯檢測。運輸層需要有兩種不同的運輸協(xié)議,即面向連接的TCP和無連接的UDP。
TCP/IP的運輸層有兩個不同的協(xié)議:(1)用戶數(shù)據(jù)報協(xié)議UDP (UserDatagramProtocol)(2)傳輸控制協(xié)議TCP (TransmissionControlProtocol)5.1.2運輸層的兩個主要協(xié)議TCPUDPIP應(yīng)用層與各種網(wǎng)絡(luò)接口運輸層TCP/IP體系中的運輸層協(xié)議TCP與UDP
UDP在傳送數(shù)據(jù)之前不需要先建立連接。對方的運輸層在收到UDP報文后,不需要給出任何確認(rèn)。雖然UDP不提供可靠交付,但在實時情況下UDP是一種最有效的工作方式。TCP則提供面向連接的服務(wù)。TCP不提供廣播或多播服務(wù)。由于TCP要提供可靠的、面向連接的運輸服務(wù),因此不可避免地增加了許多的開銷。這不僅使協(xié)議數(shù)據(jù)單元的首部增大很多,還要占用許多的處理機資源。
還要強調(diào)兩點運輸層的UDP用戶數(shù)據(jù)報與網(wǎng)絡(luò)層的IP數(shù)據(jù)報有很大區(qū)別。IP數(shù)據(jù)報要經(jīng)過互連網(wǎng)中許多路由器的存儲轉(zhuǎn)發(fā),但UDP用戶數(shù)據(jù)報是在運輸層的端到端抽象的邏輯信道中傳送的。UDP報文只是IP數(shù)據(jù)報中的數(shù)據(jù),路由器看不見有用戶數(shù)據(jù)報經(jīng)過它。TCP報文段是在運輸層抽象的端到端邏輯信道中傳送,這種信道是可靠的全雙工信道。但這樣的信道卻不知道究竟經(jīng)過了哪些路由器,而這些路由器也根本不知道上面的運輸層是否建立了TCP連接。
運輸層向上提供可靠的和不可靠的邏輯通信信道?應(yīng)用層運輸層發(fā)送進程接收進程接收進程數(shù)據(jù)數(shù)據(jù)全雙工可靠信道數(shù)據(jù)數(shù)據(jù)使用TCP協(xié)議使用UDP協(xié)議不可靠信道發(fā)送進程5.1.3運輸層的端口
運行在計算機中的進程是用進程標(biāo)識符來標(biāo)志的。運行在應(yīng)用層的各種應(yīng)用進程卻不應(yīng)當(dāng)讓計算機操作系統(tǒng)指派它的進程標(biāo)識符。這是因為在因特網(wǎng)上使用的計算機的操作系統(tǒng)種類很多,而不同的操作系統(tǒng)又使用不同格式的進程標(biāo)識符。為了使運行不同操作系統(tǒng)的計算機的應(yīng)用進程能夠互相通信,就必須用統(tǒng)一的方法對TCP/IP體系的應(yīng)用進程進行標(biāo)志。端口號(protocolportnumber)
簡稱為端口(port)解決這個問題的方法就是在運輸層使用協(xié)議端口號(protocolportnumber)。端口的作用就是讓應(yīng)用層的各種應(yīng)用進程都能將其數(shù)據(jù)通過端口向下交付給運輸層,以及讓運輸層知道應(yīng)當(dāng)將其報文段中的數(shù)據(jù)向上通過端口交付給應(yīng)用層相應(yīng)的進程。從這個意義上講,端口是用來標(biāo)志應(yīng)用層的進程。端口在進程之間的通信中所起的作用應(yīng)用層運輸層網(wǎng)絡(luò)層TCP報文段UDP用戶數(shù)據(jù)報應(yīng)用進程TCP復(fù)用IP復(fù)用UDP復(fù)用TCP報文段UDP用戶數(shù)據(jù)報應(yīng)用進程端口端口TCP分用UDP分用IP分用IP數(shù)據(jù)報IP數(shù)據(jù)報發(fā)送方接收方軟件端口與硬件端口在協(xié)議棧層間的抽象的協(xié)議端口是軟件端口。路由器或交換機上的端口是硬件端口。硬件端口是不同硬件設(shè)備進行交互的接口,而軟件端口是應(yīng)用層的各種協(xié)議進程與運輸實體進行層間交互的一種地址。TCP的端口端口用一個16位端口號進行標(biāo)志。端口號只具有本地意義,即端口號只是為了標(biāo)志本計算機應(yīng)用層中的各進程。在因特網(wǎng)中不同計算機的相同端口號是沒有聯(lián)系的。兩臺計算機中的進程要互相通信,不僅要知道對方的IP地址,而且還要知道對方的端口號。三類端口服務(wù)器端使用的端口號熟知端口號,數(shù)值一般為0~1023。IANA把這些端口指派給了TCP/IP最重要的一些應(yīng)用程序,讓所有的用戶都知道。為了讓其它應(yīng)用進程和它通信。登記端口號,數(shù)值為1024~49151,為沒有熟知端口號的應(yīng)用程序使用的。使用這個范圍的端口號必須在IANA登記,以防止重復(fù)??蛻羰褂玫亩丝谔?。數(shù)值為49152~65535,留給客戶進程選擇暫時使用。當(dāng)服務(wù)器進程收到客戶進程的報文時,就知道了客戶進程所使用的動態(tài)端口號。通信結(jié)束后,這個端口號可供其他客戶進程以后使用。UDP只在IP的數(shù)據(jù)報服務(wù)之上增加了很少一點的功能,即端口的功能和差錯檢測的功能。雖然UDP用戶數(shù)據(jù)報只能提供不可靠的交付,但UDP在某些方面有其特殊的優(yōu)點。5.2用戶數(shù)據(jù)報協(xié)議UDP(1)發(fā)送數(shù)據(jù)之前不需要建立連接(2)UDP不使用擁塞控制,不保證可靠交付,因此主機不需要維持復(fù)雜的連接狀態(tài)表。(3)UDP用戶數(shù)據(jù)報只有8個字節(jié)的首部開銷。(4)網(wǎng)絡(luò)出現(xiàn)的擁塞不會使源主機的發(fā)送速率降低。這對某些實時應(yīng)用是很重要的。
如源主機以恒定的速度發(fā)送數(shù)據(jù),并允許在擁塞時丟失一些數(shù)據(jù),但不允許有太大的時延。發(fā)送方UDP對應(yīng)用程序交下來的報文,在添加首部后就向下交付IP層。UDP對應(yīng)用層交下來的報文,既不合并,也不拆分,而是保留這些報文的邊界。應(yīng)用層交給UDP多長的報文,UDP就照樣發(fā)送,即一次發(fā)送一個報文。接收方UDP對IP層交上來的UDP用戶數(shù)據(jù)報,在去除首部后就原封不動地交付上層的應(yīng)用進程,一次交付一個完整的報文。應(yīng)用程序必須選擇合適大小的報文。
報文太長:IP分片;
報文太短:數(shù)據(jù)報的首部的相對長度太大,降低IP層的效率。面向報文的UDPIP數(shù)據(jù)報UDP是面向報文的IP數(shù)據(jù)報的數(shù)據(jù)部分IP首部IP層UDP首部UDP數(shù)據(jù)部分運輸層應(yīng)用層報文應(yīng)用層源端口目的端口長度檢驗和2222字節(jié)UDP用戶數(shù)據(jù)報UDP基于端口的分用
IP層UDP數(shù)據(jù)報到達端口2端口3端口1UDP分用如果接收方UDP發(fā)現(xiàn)收到的報文中的目的端口號不正確(即不存在對應(yīng)于該端口號的應(yīng)用進程),就丟棄該報文,并由ICMP發(fā)送“端口不可達”差錯報文給發(fā)送方。TCP是面向連接的運輸層協(xié)議。每一條TCP連接只能有兩個端點(endpoint),每一條TCP連接只能是點對點的(一對一)。TCP提供可靠交付的服務(wù)。
無差錯、不丟失、不重復(fù)、并且按序到達。TCP提供全雙工通信。(通過緩存發(fā)送、接收)面向字節(jié)流。TCP把應(yīng)用程序交下來的數(shù)據(jù)塊看成僅僅是一連串的無結(jié)構(gòu)的字節(jié)序列。TCP不保證接收方應(yīng)用程序所收到的數(shù)據(jù)塊和發(fā)送方應(yīng)用程序所發(fā)送的數(shù)據(jù)塊具有對應(yīng)大小的關(guān)系。5.3傳輸控制協(xié)議TCP概述
5.3.1TCP最主要的特點768HTCP面向流的概念
發(fā)送TCP報文段發(fā)送方接收方把字節(jié)寫入發(fā)送緩存從接收緩存讀取字節(jié)應(yīng)用進程應(yīng)用進程1230181716151419202145131211H109H加上TCP首部構(gòu)成TCP報文段TCPTCP字節(jié)流字節(jié)流H表示TCP報文段的首部x表示序號為x的數(shù)據(jù)字節(jié)TCP連接應(yīng)當(dāng)注意TCP對應(yīng)用進程一次把多長的報文發(fā)送到TCP的緩存中是不關(guān)心的。TCP根據(jù)對方給出的窗口值和當(dāng)前網(wǎng)絡(luò)擁塞的程度來決定一個報文段應(yīng)包含多少個字節(jié)(UDP發(fā)送的報文長度是應(yīng)用進程給出的)。TCP可把太長的數(shù)據(jù)塊劃分短一些再傳送。TCP也可等待積累有足夠多的字節(jié)后再構(gòu)成報文段發(fā)送出去。5.3.2TCP的連接
每一條TCP連接有兩個端點。TCP連接的端點不是主機,不是主機的IP地址,不是應(yīng)用進程。TCP連接的端點叫做套接字(socket)或插口。因不同的主機都可以使用同樣的端口號,為了指明一個端口,必須指明這個端口在哪一臺主機上。套接字(socket)TCP用主機的IP地址加上主機上的端口號作為TCP連接的端點。這樣的端點就叫做套接字(socket)或插口。通常套接字的表示方法是在點分十進制的IP地址后面寫上端口號,中間用冒號或逗號隔開。例如,若IP地址是192.3.4.5而端口號是80,那么得到的套接字就記為(192.3.4.5:80)。TCP連接的端點是套接字,即(IP地址:端口號)同一個IP地址可以有多個不同的TCP連接,而同一個端口號也可以出現(xiàn)在多個不同的TCP連接中。理想的傳輸條件有以下兩個特點:傳輸信道不產(chǎn)生差錯。不管發(fā)送方以多快的速度發(fā)送數(shù)據(jù),接收方總是來得及處理收到的數(shù)據(jù)。在這樣的理想傳輸條件下,不需要采取任何措施就能夠?qū)崿F(xiàn)可靠傳輸。實際的網(wǎng)絡(luò)都不具備以上兩個理想條件。但我們可以使用一些可靠傳輸協(xié)議,當(dāng)出現(xiàn)差錯時讓發(fā)送方重傳出現(xiàn)差錯的數(shù)據(jù),同時在接收方來不及處理收到的數(shù)據(jù)時,及時告訴發(fā)送方適當(dāng)降低發(fā)送數(shù)據(jù)的速度。
5.4可靠傳輸?shù)墓ぷ髟?.4.1停止等待協(xié)議
(a)無差錯情況A發(fā)送M1確認(rèn)M1B發(fā)送M2發(fā)送M3確認(rèn)M2確認(rèn)M3A發(fā)送M1B超時重傳M1發(fā)送M2確認(rèn)M1丟棄有差錯的報文(b)超時重傳tttt請注意在發(fā)送完一個分組后,必須暫時保留已發(fā)送的分組的副本。只有在收到相應(yīng)的確認(rèn)后才能清除暫時保留的分組副本。分組和確認(rèn)分組都必須進行編號。用來明確是哪一個發(fā)送出去的分組收到了確認(rèn),而哪一個分組還沒有收到確認(rèn)。超時計時器的重傳時間應(yīng)當(dāng)比數(shù)據(jù)在分組傳輸?shù)钠骄禃r間更長一些。
確認(rèn)丟失和確認(rèn)遲到A發(fā)送M1B超時重傳M1發(fā)送M2丟棄重復(fù)的M1重傳確認(rèn)M1(a)確認(rèn)丟失確認(rèn)M1A發(fā)送M1B超時重傳M1發(fā)送M2丟棄重復(fù)的M1重傳確認(rèn)M1(b)確認(rèn)遲到確認(rèn)M1收下遲到的確認(rèn)并丟棄tttt可靠通信的實現(xiàn)使用上述的確認(rèn)和重傳機制,我們就可以在不可靠的傳輸網(wǎng)絡(luò)上實現(xiàn)可靠的通信。這種可靠傳輸協(xié)議常稱為自動重傳請求ARQ(AutomaticRepeatreQuest)。ARQ表明重傳的請求是自動進行的。接收方不需要請求發(fā)送方重傳某個出錯的分組。TDRTTATD+RTT+TAB分組確認(rèn)tt分組確認(rèn)信道利用率停止等待協(xié)議的優(yōu)點是簡單,但缺點是信道利用率太低。TD——發(fā)送分組需要的時間
RTT——往返時間TA——發(fā)送確認(rèn)分組需要的時間假定1200km的信道的RTT=20ms。分組長度是1200bit,發(fā)送速率是1Mb/s。若忽略處理時間和TA(TA一般都遠小于TD),則可算出信道的利用率U=5.66%。當(dāng)RTT遠大于分組發(fā)送時間TD時,信道的利用率就會非常低。若出現(xiàn)差錯進行重傳,則對傳送有用的數(shù)據(jù)信息來說,信道的利用率還要降低。流水線傳輸發(fā)送方可連續(xù)發(fā)送多個分組,不必每發(fā)完一個分組就停頓下來等待對方的確認(rèn)。由于信道上一直有數(shù)據(jù)不間斷地傳送,這種傳輸方式可獲得很高的信道利用率。B分組ttAACK123456789101112(a)發(fā)送方維持發(fā)送窗口(發(fā)送窗口是5)發(fā)送窗口(b)收到一個確認(rèn)后發(fā)送窗口向前滑動向前123456789101112發(fā)送窗口5.4.2連續(xù)ARQ協(xié)議發(fā)送方可連續(xù)發(fā)送分組,不需要等待對方的確認(rèn)。發(fā)送方每收到一個確認(rèn),就把發(fā)送窗口向前滑動一個分組的位置。累積確認(rèn)接收方一般采用累積確認(rèn)的方式。即不必對收到的分組逐個發(fā)送確認(rèn),而是對按序到達的最后一個分組發(fā)送確認(rèn),這樣就表示:到這個分組為止的所有分組都已正確收到了。優(yōu)點是:容易實現(xiàn),即使確認(rèn)丟失也不必重傳。缺點是:不能向發(fā)送方反映出接收方已經(jīng)正確收到的所有分組的信息。Go-back-N(回退N)
如果發(fā)送方發(fā)送了前5個分組,而中間的第3個分組丟失了。這時接收方只能對前兩個分組發(fā)出確認(rèn)。發(fā)送方無法知道后面三個分組的下落,而只好把后面的三個分組都再重傳一次。這就叫做
Go-back-N(回退N),表示需要再退回來重傳已發(fā)送過的N個分組??梢姰?dāng)通信線路質(zhì)量不好時,連續(xù)ARQ協(xié)議會帶來負(fù)面的影響。連續(xù)ARQ協(xié)議的工作原理
DATA0DATA1DATA2DATA3DATA4DATA5重傳DATA2重傳DATA3ACK1ACK2ACK1確認(rèn)DATA0ACK2確認(rèn)DATA1DATA2出錯,丟棄DATA3不按序,丟棄,重傳ACK2DATA4不按序,丟棄,重傳ACK2DATA5不按序,丟棄,重傳ACK2ACK3ACK3確認(rèn)DATA2ACK4確認(rèn)DATA3ACK4重傳DATA5重傳DATA4超時重傳時間ABtout送交主機送交主機…??ACK2ACK2ACK2TCP首部20字節(jié)的固定首部目的端口數(shù)據(jù)偏移檢驗和選項(長度可變)<40字節(jié)源端口序號緊急指針窗口確認(rèn)號保留FIN32位SYNRSTPSHACKURG位08162431填充TCP數(shù)據(jù)部分TCP首部TCP報文段IP數(shù)據(jù)部分IP首部發(fā)送在前5.5TCP報文段的首部格式
TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗和選項(長度可變)源端口序號緊急指針窗口確認(rèn)號保留FINSYNRSTPSHACKURG位08162431填充源端口和目的端口字段——各占2字節(jié)。端口是運輸層與應(yīng)用層的服務(wù)接口。運輸層的復(fù)用和分用功能都要通過端口才能實現(xiàn)。TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗和選項(長度可變)源端口序號緊急指針窗口確認(rèn)號保留FINSYNRSTPSHACKURG位08162431填充序號字段——占4字節(jié)。TCP連接中傳送的數(shù)據(jù)流中的每一個字節(jié)都編上一個序號。序號字段的值則指的是本報文段所發(fā)送的數(shù)據(jù)的第一個字節(jié)的序號。一報文段序號字段值為301,而攜帶數(shù)據(jù)共100字節(jié)。則下一報文段序號應(yīng)為401。
TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗和選項(長度可變)源端口序號緊急指針窗口確認(rèn)號保留FINSYNRSTPSHACKURG位08162431填充確認(rèn)號字段——占4字節(jié),是期望收到對方的下一個報文段的數(shù)據(jù)的第一個字節(jié)的序號。應(yīng)當(dāng)記住若確認(rèn)號=N,則表明:到序號N–1為止的所有數(shù)據(jù)都已正確收到。設(shè)B正確收到了A發(fā)送過來的一個報文段,其序號字段值是501,而數(shù)據(jù)長度是200字節(jié)(序號501~700),這表明B正確收到了A發(fā)送的到序號700為止的數(shù)據(jù)。因此,B期望收到A的下一個數(shù)據(jù)序號是701,于是B在發(fā)送給A的確認(rèn)報文段中把確認(rèn)號置為701。請注意,現(xiàn)在的確認(rèn)號不是501,也不是700,而是701。
TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗和選項(長度可變)源端口序號緊急指針窗口確認(rèn)號保留FINSYNRSTPSHACKURG位08162431填充數(shù)據(jù)偏移(即首部長度)——占4位,它指出TCP報文段的數(shù)據(jù)起始處距離TCP報文段的起始處有多遠。“數(shù)據(jù)偏移”的單位是32位字(以4字節(jié)為計算單位)。數(shù)據(jù)偏移的最大值是60字節(jié)。TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗和選項(長度可變)源端口序號緊急指針窗口確認(rèn)號保留FINSYNRSTPSHACKURG位08162431填充保留字段——占6位,保留為今后使用,但目前應(yīng)置為0。TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗和選項(長度可變)源端口序號緊急指針窗口確認(rèn)號保留FINSYNRSTPSHACKURG位08162431填充緊急比特URG——當(dāng)URG1時,表明緊急指針字段有效。它告訴系統(tǒng)此報文段中有緊急數(shù)據(jù),應(yīng)盡快傳送(相當(dāng)于高優(yōu)先級的數(shù)據(jù)),發(fā)送方TCP就把緊急數(shù)據(jù)插入到報文段數(shù)據(jù)的最前面,例如中斷命令。TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗和選項(長度可變)源端口序號緊急指針窗口確認(rèn)號保留FINSYNRSTPSHACKURG位08162431填充確認(rèn)ACK——只有當(dāng)ACK1時確認(rèn)號字段才有效。當(dāng)ACK0時,確認(rèn)號無效。TCP規(guī)定,在連接建立后所有傳送的報文段都必須把ACK置1。
TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗和選項(長度可變)源端口序號緊急指針窗口確認(rèn)號保留FINSYNRSTPSHACKURG位08162431填充推送PSH(PuSH)——接收TCP收到PSH=1的報文段,就盡快地交付接收應(yīng)用進程,而不再等到整個緩存都填滿了后再向上交付。有時在一端的應(yīng)用進程希望在鍵入一個命令后立即就能收到對方的響應(yīng)。
TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗和選項(長度可變)源端口序號緊急指針窗口確認(rèn)號保留FINSYNRSTPSHACKURG位08162431填充復(fù)位RST(ReSeT)——當(dāng)RST1時,表明TCP連接中出現(xiàn)嚴(yán)重差錯(如由于主機崩潰或其他原因),必須釋放連接,然后再重新建立運輸連接。還用來拒絕一個非法的報文段或拒絕打開一個連接。TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗和選項(長度可變)源端口序號緊急指針窗口確認(rèn)號保留FINSYNRSTPSHACKURG位08162431填充同步SYN——同步SYN=1表示這是一個連接請求或連接接受報文。當(dāng)SYN=1而ACK=0時,表明這是一個連接請求報文段,若對方同意建立連接,則應(yīng)在響應(yīng)的報文段中使SYN=1和ACK=1。TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗和選項(長度可變)源端口序號緊急指針窗口確認(rèn)號保留FINSYNRSTPSHACKURG位08162431填充終止FIN(FINis)——用來釋放一個連接。FIN1表明此報文段的發(fā)送端的數(shù)據(jù)已發(fā)送完畢,并要求釋放運輸連接。TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗和選項(長度可變)源端口序號緊急指針窗口確認(rèn)號保留FINSYNRSTPSHACKURG位08162431填充窗口字段——占2字節(jié)。窗口字段用來控制對方發(fā)送的數(shù)據(jù)量,單位為字節(jié)。TCP連接的一端根據(jù)設(shè)置的緩存空間大小確定自己的接收窗口大小,然后通知對方以確定對方的發(fā)送窗口的上限。TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗和選項(長度可變)源端口序號緊急指針窗口500確認(rèn)號201保留FINSYNRSTPSHACKURG比特08162431填充最多可向我發(fā)送序號從201開始到700共500字節(jié)的數(shù)據(jù)。TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗和選項(長度可變)源端口序號緊急指針窗口確認(rèn)號保留FINSYNRSTPSHACKURG位08162431填充檢驗和——占2字節(jié)。檢驗和字段檢驗的范圍包括首部和數(shù)據(jù)這兩部分TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗和選項(長度可變)源端口序號緊急指針窗口確認(rèn)號保留FINSYNRSTPSHACKURG位08162431填充緊急指針字段——占16位,指出在本報文段中緊急數(shù)據(jù)共有多少個字節(jié)(緊急數(shù)據(jù)放在本報文段數(shù)據(jù)的最前面)。
TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗和源端口序號緊急指針窗口確認(rèn)號保留FINSYNRSTPSHACKURG比特08162431填充選項字段——長度可變。TCP最初只規(guī)定了一種選項,即最大報文段長度MSS。MSS告訴對方TCP:“我的緩存所能接收的報文段的數(shù)據(jù)字段的最大長度是MSS個字節(jié)?!盡SS
(MaximumSegmentSize)是TCP報文段中的數(shù)據(jù)字段的最大長度。數(shù)據(jù)字段+TCP首部才等于整個的TCP報文段。選項(長度可變)<40字節(jié)TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗和源端口序號緊急指針窗口確認(rèn)號保留FINSYNRSTPSHACKURG填充TCP報文段的數(shù)據(jù)部分至少要加上40字節(jié)的首部(TCP首部20字節(jié)和IP首部20字節(jié))才能組裝成一個IP數(shù)據(jù)報。MSS應(yīng)盡可能大些,但保證在IP層傳輸時不需要再分片。雙方都把自己能夠支持的MSS寫入這一字段。所有主機都應(yīng)能接受的報文段長度是536+20(固定首部長度)=556字節(jié)選項(長度可變)默認(rèn)值為536字節(jié)TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗和選項(長度可變)源端口序號緊急指針窗口確認(rèn)號保留FINSYNRSTPSHACKURG位08162431填充填充字段——這是為了使整個首部長度是4字節(jié)的整數(shù)倍。TCP采用大小可變的滑動窗口進行流量控制。窗口大小的單位是字節(jié)。在TCP報文段首部的窗口字段寫入的數(shù)值就是當(dāng)前給對方設(shè)置的發(fā)送窗口數(shù)值的上限。發(fā)送窗口在連接建立時由雙方商定。但在通信的過程中,接收端可根據(jù)自己的資源情況,隨時動態(tài)地調(diào)整對方的發(fā)送窗口上限值(可增大或減小)。
5.6TCP可靠傳輸?shù)膶崿F(xiàn)
1.滑動窗口的概念收到確認(rèn)即可前移1002003004005006007008009001012013014015016017018011發(fā)送窗口可發(fā)送不可發(fā)送指針發(fā)送端要發(fā)送900字節(jié)長的數(shù)據(jù),劃分為9個100字節(jié)長的報文段,而發(fā)送窗口確定為500字節(jié)。發(fā)送端只要收到了對方的確認(rèn),發(fā)送窗口就可前移。發(fā)送TCP要維護一個指針。每發(fā)送一個報文段,指針就向前移動一個報文段的距離。收到確認(rèn)即可前移1002003004005006007008009001012013014015016017018011可發(fā)送不可發(fā)送指針1002003004005006007008009001012013014015016017018011發(fā)送窗口可發(fā)送不可發(fā)送指針發(fā)送窗口前移已發(fā)送并被確認(rèn)已發(fā)送但未被確認(rèn)發(fā)送端已發(fā)送了400字節(jié)的數(shù)據(jù),但只收到對前200字節(jié)數(shù)據(jù)的確認(rèn),同時窗口大小不變?,F(xiàn)在發(fā)送端還可發(fā)送300字節(jié)。1002003004005006007008009001012013014015016017018011已發(fā)送并被確認(rèn)已發(fā)送但未被確認(rèn)可發(fā)送不可發(fā)送指針1002003004005006007008009001012013014015016017018011已發(fā)送并被確認(rèn)可發(fā)送不可發(fā)送指針發(fā)送窗口前移發(fā)送窗口縮小發(fā)送端收到了對方對前400字節(jié)數(shù)據(jù)的確認(rèn),但對方通知發(fā)送端必須把窗口減小到400字節(jié)?,F(xiàn)在發(fā)送端最多還可發(fā)送400字節(jié)的數(shù)據(jù)。發(fā)送窗口的意義發(fā)送窗口表示:在沒有收到B的確認(rèn)的情況下,A可以連續(xù)把窗口內(nèi)的數(shù)據(jù)都發(fā)送出去。凡是已經(jīng)發(fā)送過的數(shù)據(jù),在未收到B的確認(rèn)之前,A都必須暫時保留,以便在超時重傳時使用。發(fā)送窗口里面的序號表示允許發(fā)送的序號。顯然,窗口越大,發(fā)送方就可以在收到對方確認(rèn)之前連續(xù)發(fā)送更多的數(shù)據(jù),因而可能獲得更高的傳輸效率。但接收方必須來得及處理這些收到的數(shù)據(jù)。收到確認(rèn)影響發(fā)送窗口的后沿發(fā)送窗口后沿的后面部分表示已發(fā)送且已收到了確認(rèn)。這些數(shù)據(jù)顯然不需要再保留了。而發(fā)送窗口前沿的前面部分表示不允許發(fā)送的,因為接收方都沒有為這部分?jǐn)?shù)據(jù)保留臨時存放的緩存空間。發(fā)送窗口的位置發(fā)送窗口的位置由窗口前沿和后沿確定。發(fā)送窗口后沿的變化情況有兩種可能,即不動(未收到新的確認(rèn))和前移(收到新的確認(rèn))。發(fā)送窗口后沿不可能向后移動,因為不能撤銷掉已收到的確認(rèn)。發(fā)送窗口前沿通常是不斷向前移動,但也有可能不動。這對應(yīng)于兩種情況:一是沒有收到新的確認(rèn),對方通知的窗口大小也不變;二是收到了新的確認(rèn)但對方通知的窗口縮小了,使得發(fā)送窗口前沿正好不動。利用滑動窗口實現(xiàn)流量控制一般說來,我們總是希望數(shù)據(jù)傳輸?shù)酶煲恍?。但如果發(fā)送方把數(shù)據(jù)發(fā)送得過快,接收方就可能來不及接收,這就會造成數(shù)據(jù)的丟失。流量控制(flowcontrol)就是讓發(fā)送方的發(fā)送速率不要太快,既要讓接收方來得及接收,也不要使網(wǎng)絡(luò)發(fā)生擁塞。利用滑動窗口機制可以很方便地在TCP連接上實現(xiàn)流量控制。
利用可變窗口大小進行流量控制
雙方確定的窗口值是400
seq=1,DATAseq=201,DATAseq=401,DATAseq=301,DATAseq=101,DATAseq=501,DATAACK=1,ack=201,rwnd=300ACK=1,ack=601,rwnd=0ACK=1,ack=501,rwnd=100主機A主機B允許A再發(fā)送300字節(jié)(序號201至500)A發(fā)送了序號101至200,還能發(fā)送200字節(jié)A發(fā)送了序號301至400,還能再發(fā)送100字節(jié)新數(shù)據(jù)A發(fā)送了序號401至500,不能再發(fā)送新數(shù)據(jù)A超時重發(fā),但不能發(fā)送序號500以后的數(shù)據(jù)允許A發(fā)送序號501至600共100字節(jié)A發(fā)送了序號501至600,不能再發(fā)送了不允許A再發(fā)送(到序號600的數(shù)據(jù)都已收到)seq=201,DATA丟失!A發(fā)送了序號1至100,還能發(fā)送300字節(jié)持續(xù)計時器(persistencetimer)TCP為每一個連接設(shè)有一個持續(xù)計時器。只要TCP連接的一方收到對方的零窗口通知,就啟動持續(xù)計時器。若持續(xù)計時器設(shè)置的時間到期,就發(fā)送一個零窗口探測報文段(僅攜帶1字節(jié)的數(shù)據(jù)),而對方就在確認(rèn)這個探測報文段時給出了現(xiàn)在的窗口值。若窗口仍然是零,則收到這個報文段的一方就重新設(shè)置持續(xù)計時器。若窗口不是零,則死鎖的僵局就可以打破了。5.7TCP的運輸連接管理運輸連接就有三個階段,即:連接建立、數(shù)據(jù)傳送和連接釋放。運輸連接的管理就是使運輸連接的建立和釋放都能正常地進行。連接建立過程中要解決以下三個問題:
要使每一方能夠確知對方的存在。
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 粉撲收納架市場發(fā)展前景分析及供需格局研究預(yù)測報告
- 口琴產(chǎn)業(yè)鏈招商引資的調(diào)研報告
- 天然氣輸送結(jié)構(gòu)的建造行業(yè)相關(guān)項目經(jīng)營管理報告
- 剪貼集產(chǎn)品供應(yīng)鏈分析
- 大學(xué)或?qū)W院教育行業(yè)市場調(diào)研分析報告
- 寶石分級行業(yè)營銷策略方案
- 廁所除臭劑產(chǎn)品供應(yīng)鏈分析
- 石油專用泥漿泵項目運營指導(dǎo)方案
- 縫紉用剪刀項目運營指導(dǎo)方案
- 電動軌道照明設(shè)備項目運營指導(dǎo)方案
- 防火墻通用技術(shù)規(guī)范
- 水污染控制工程第9章2PPT課件.ppt
- 鋼棧橋設(shè)計與施工要點
- 商檢知識要點
- 重慶市婦幼保健院進修人員申請表
- 鼻腔、鼻竇內(nèi)翻性乳頭狀瘤的放射治療
- 人教版小學(xué)英語主要句型匯總
- 人教2019新教材化學(xué)必修一課后習(xí)題整理
- 關(guān)于進一步規(guī)范機動車和駕駛員牌證工本費等收費項目和
- 英語教師行動研究案例
- 中國鐵塔股份有限公司室內(nèi)分布系統(tǒng)施工及驗收規(guī)范
評論
0/150
提交評論