m運(yùn)輸層協(xié)議及分析XXXX_第1頁
m運(yùn)輸層協(xié)議及分析XXXX_第2頁
m運(yùn)輸層協(xié)議及分析XXXX_第3頁
m運(yùn)輸層協(xié)議及分析XXXX_第4頁
m運(yùn)輸層協(xié)議及分析XXXX_第5頁
已閱讀5頁,還剩371頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第7章運(yùn)輸層協(xié)議及分析7.1運(yùn)輸層協(xié)議概述7.2TCP/IP體系中的運(yùn)輸層7.3用戶數(shù)據(jù)報(bào)協(xié)議UDP7.4傳輸控制協(xié)議TCP 7.4.1TCP概述

7.4.2TCP可靠傳輸?shù)墓ぷ髟?/p>

7.4.3TCP報(bào)文段的首部格式

7.4.4TCP的流量控制與擁塞控制

7.4.5TCP的重傳機(jī)制

7.4.6TCP的運(yùn)輸連接管理7.5流控制傳輸協(xié)議(SCTP)7.1運(yùn)輸層協(xié)議概述運(yùn)輸層向它上面的應(yīng)用層提供通信服務(wù),屬于面向通信部分的最高層,用戶功能中的最低層。物理層網(wǎng)絡(luò)層運(yùn)輸層應(yīng)用層數(shù)據(jù)鏈路層面向信息處理面向通信用戶功能網(wǎng)絡(luò)功能一、運(yùn)輸層在網(wǎng)絡(luò)體系結(jié)構(gòu)中的作用運(yùn)輸層為相互通信的應(yīng)用進(jìn)程提供了邏輯通信54321運(yùn)輸層端到端的邏輯通信主機(jī)A主機(jī)B應(yīng)用進(jìn)程應(yīng)用進(jìn)程路由器1路由器2AP1LAN2WANAP2AP3AP4IP層LAN1AP1AP2AP4端口端口54321IP協(xié)議的作用范圍運(yùn)輸層協(xié)議TCP和UDP的作用范圍AP3二、運(yùn)輸層要解決的問題要提供端到端的可靠通信必需解決的問題在一個連接上實(shí)現(xiàn)多對進(jìn)程間通信的復(fù)用彌補(bǔ)通信子網(wǎng)提供的差異和不足解決通信子網(wǎng)自身無法解決的傳輸錯誤總之,運(yùn)輸層填補(bǔ)了高層用戶的要求與通信子網(wǎng)提供的服務(wù)之間的間隙。通信子網(wǎng)提供的服務(wù)越多,運(yùn)輸層就越簡單。通信子網(wǎng)提供的服務(wù)越少,運(yùn)輸層就越復(fù)雜。三、運(yùn)輸層的主要功能

運(yùn)輸層的兩項(xiàng)主要功能:流量控制:通過滑動窗口實(shí)現(xiàn);可靠傳輸:由序號和確認(rèn)來實(shí)現(xiàn)。運(yùn)輸層主要提供TCP和UDP兩種傳輸協(xié)議:TCP是面向連接的、可靠的傳輸協(xié)議。它把報(bào)文分解為多個段進(jìn)行傳輸,在目的站再重新裝配這些段,必要時重新發(fā)送沒有收到的段。UDP是無連接的。由于對發(fā)送的段不進(jìn)行校驗(yàn)和確認(rèn),因此它是“不可靠”的。運(yùn)輸層協(xié)議和網(wǎng)絡(luò)層協(xié)議的主要區(qū)別

應(yīng)用進(jìn)程…

應(yīng)用進(jìn)程…

IP協(xié)議的作用范圍(提供主機(jī)之間的邏輯通信)TCP和UDP協(xié)議的作用范圍(提供進(jìn)程之間的邏輯通信)因特網(wǎng)運(yùn)輸層為應(yīng)用進(jìn)程之間提供端到端的邏輯通信網(wǎng)絡(luò)層是為主機(jī)之間提供邏輯通信運(yùn)輸層與上下層之間關(guān)系的OSI表示法運(yùn)輸實(shí)體運(yùn)輸實(shí)體運(yùn)輸協(xié)議運(yùn)輸層層接口

運(yùn)輸服務(wù)用戶(應(yīng)用層實(shí)體)

運(yùn)輸服務(wù)用戶(應(yīng)用層實(shí)體)層接口

網(wǎng)絡(luò)層(或網(wǎng)際層)應(yīng)用層主機(jī)A主機(jī)B運(yùn)輸層服務(wù)訪問點(diǎn)TSAP網(wǎng)絡(luò)層服務(wù)訪問點(diǎn)NSAP運(yùn)輸層向上提供的兩種服務(wù)?應(yīng)用層運(yùn)輸層發(fā)送進(jìn)程接收進(jìn)程接收進(jìn)程數(shù)據(jù)數(shù)據(jù)全雙工可靠信道數(shù)據(jù)數(shù)據(jù)使用TCP協(xié)議使用UDP協(xié)議不可靠信道

發(fā)送進(jìn)程TCP/IP的運(yùn)輸層有兩個不同的協(xié)議:用戶數(shù)據(jù)報(bào)協(xié)議

UDP(UserDatagramProtocol)傳輸控制協(xié)議TCP(TransmissionControlProtocol)兩個對等運(yùn)輸實(shí)體在通信時傳送的數(shù)據(jù)單位叫作運(yùn)輸協(xié)議數(shù)據(jù)單元

TPDU(TransportProtocolDataUnit)。TCP傳送的數(shù)據(jù)協(xié)議單元是TCP報(bào)文段(segment)UDP傳送的數(shù)據(jù)協(xié)議單元是UDP報(bào)文或用戶數(shù)據(jù)報(bào)。7.2TCP/IP體系中的運(yùn)輸層

7.2.1運(yùn)輸層中的兩個協(xié)議TCP/IP體系中的運(yùn)輸層協(xié)議TCPUDPIP應(yīng)用層與各種網(wǎng)絡(luò)接口運(yùn)輸層UDP不提供可靠交付,但UDP是一種高效的工作方式。TCP提供面向連接的服務(wù),傳送數(shù)據(jù)之前需要先建立連接。TCP提供可靠交付,但增加了許多的開銷。使協(xié)議數(shù)據(jù)單元的首部增大很多,占用許多的處理機(jī)資源。SCTP是流控制傳輸協(xié)議,面向報(bào)文,可靠。SCTP具有UTP和TCP最好的一些特點(diǎn)。SCTP7.2.2端口的概念運(yùn)輸控制層最主要任務(wù)是實(shí)現(xiàn)進(jìn)程通信功能,要進(jìn)行進(jìn)程通信是通過端口來實(shí)現(xiàn)的。在協(xié)議棧層間的抽象的協(xié)議端口是軟件端口。路由器或交換機(jī)上的端口是硬件端口。硬件端口是不同硬件設(shè)備進(jìn)行交互的接口,軟件端口是應(yīng)用層的各種協(xié)議進(jìn)程與運(yùn)輸實(shí)體進(jìn)行層間交互的一種地址。

端口的作用就是讓各種應(yīng)用進(jìn)程都能將其數(shù)據(jù)通過端口向下交付給運(yùn)輸層,讓運(yùn)輸層知道應(yīng)當(dāng)將其報(bào)文段中的數(shù)據(jù)向上通過端口交付給應(yīng)用層相應(yīng)的進(jìn)程。端口用一個16bit端口號進(jìn)行標(biāo)志。端口號只具有本地意義。在因特網(wǎng)中不同計(jì)算機(jī)的相同端口號是沒有聯(liá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ā)送方接收方三類端口熟知端口:TCP/IP體系確定并公布的,其數(shù)值一般為0~1023。用來表示公共應(yīng)用程序。指示了正在使用的上層協(xié)議。登記端口號,數(shù)值為1024~49151,為沒有熟知端口號的應(yīng)用程序使用的。使用這個范圍的端口號必須登記,以防止重復(fù)。客戶端口號或短暫端口號,數(shù)值為49152~65535,留給客戶進(jìn)程選擇暫時使用。當(dāng)服務(wù)器進(jìn)程收到客戶進(jìn)程的報(bào)文時,就知道了客戶進(jìn)程所使用的動態(tài)端口號。IPFTPSMTPTFTPDNSTelnetSNMP2123255369161TCPUDP應(yīng)用層傳輸層保留的端口號:<255,公共應(yīng)用255-1023,公司176網(wǎng)絡(luò)層常用的默認(rèn)端口代理服務(wù)器常用端口:

(1).HTTP協(xié)議代理服務(wù)器常用端口號:80/8080/3128/8081/9080

(2).SOCKS代理協(xié)議服務(wù)器常用端口號:1080

(3).FTP協(xié)議代理服務(wù)器常用端口號:21

(4).Telnet協(xié)議代理服務(wù)器常用端口:237.3用戶數(shù)據(jù)報(bào)協(xié)議UDP

7.3.1UDP概述

UDP只在IP的數(shù)據(jù)報(bào)服務(wù)之上增加了很少一點(diǎn)的功能,即端口的功能和差錯檢測的功能。雖然UDP用戶數(shù)據(jù)報(bào)只能提供不可靠的交付,但UDP在某些方面有其特殊的優(yōu)點(diǎn)。發(fā)送數(shù)據(jù)之前不需要建立連接UDP的主機(jī)不需要維持復(fù)雜的連接狀態(tài)表。UDP用戶數(shù)據(jù)報(bào)只有8個字節(jié)的首部開銷。UDP可支持一對一、一對多、多對一和多對多的交互通信。網(wǎng)絡(luò)出現(xiàn)的擁塞不會使源主機(jī)的發(fā)送速率降低。這對某些實(shí)時應(yīng)用是很重要的。

端口是用報(bào)文隊(duì)列來實(shí)現(xiàn)UDP端口51000UDP端口69

出隊(duì)列入隊(duì)列出隊(duì)列入隊(duì)列TFTP服務(wù)器TFTP客戶UDP用戶數(shù)據(jù)報(bào)應(yīng)用層運(yùn)輸層服務(wù)器端用熟知端口,客戶端請求用一般端口7.3.2UDP用戶數(shù)據(jù)報(bào)的

首部格式偽首部源端口目的端口長度檢驗(yàn)和數(shù)據(jù)首部UDP長度源IP地址目的IP地址017IP數(shù)據(jù)報(bào)字節(jié)44112122222字節(jié)發(fā)送在前數(shù)據(jù)首部UDP用戶數(shù)據(jù)報(bào)偽首部源端口目的端口長度檢驗(yàn)和數(shù)據(jù)首部UDP長度源IP地址目的IP地址017IP數(shù)據(jù)報(bào)字節(jié)44112122222字節(jié)發(fā)送在前數(shù)據(jù)首部UDP用戶數(shù)據(jù)報(bào)用戶數(shù)據(jù)報(bào)UDP有兩個字段:數(shù)據(jù)字段和首部字段。首部字段有8個字節(jié),由4個字段組成,每個字段都是兩個字節(jié)。偽首部源端口目的端口長度檢驗(yàn)和數(shù)據(jù)首部UDP長度源IP地址目的IP地址017IP數(shù)據(jù)報(bào)字節(jié)44112122222字節(jié)發(fā)送在前數(shù)據(jù)首部UDP用戶數(shù)據(jù)報(bào)檢驗(yàn)和檢驗(yàn)部分包括首部和數(shù)據(jù)。在計(jì)算檢驗(yàn)和時,臨時把“偽首部”和UDP用戶數(shù)據(jù)報(bào)連接在一起。偽首部僅僅是為了計(jì)算檢驗(yàn)和。不向上和向下傳輸。1001100100010011→153.190000100001101000→8.1041010101100000011→171.30000111000001011→14.110000000000010001→0和170000000000001111→150000010000111111→10870000000000001101→130000000000001111→150000000000000000→0(檢驗(yàn)和)0101010001000101→數(shù)據(jù)0101001101010100→數(shù)據(jù)0100100101001110→數(shù)據(jù)0100011100000000→數(shù)據(jù)和0(填充)1001011011101011→求和得出的結(jié)果0110100100010100→檢驗(yàn)和04112字節(jié)偽首部8字節(jié)UDP首部7字節(jié)數(shù)據(jù)填充按二進(jìn)制反碼運(yùn)算求和將得出的結(jié)果求反碼全0171510871315全0數(shù)據(jù)數(shù)據(jù)數(shù)據(jù)數(shù)據(jù)數(shù)據(jù)數(shù)據(jù)數(shù)據(jù)全0TCP是面向連接的運(yùn)輸層協(xié)議。每一條TCP連接只能有兩個端點(diǎn)(endpoint),每一條TCP連接只能是點(diǎn)對點(diǎn)的(一對一)。TCP提供可靠交付的服務(wù)。

TCP提供全雙工通信。面向字節(jié)流。7.4傳輸控制協(xié)議TCP

7.4.1TCP概述768H

TCP面向流的概念

發(fā)送TCP報(bào)文段發(fā)送方接收方把字節(jié)寫入發(fā)送緩存從接收緩存讀取字節(jié)應(yīng)用進(jìn)程應(yīng)用進(jìn)程1230181716151419202145131211H109H加上TCP首部構(gòu)成TCP報(bào)文段TCPTCP字節(jié)流字節(jié)流H表示TCP報(bào)文段的首部x表示序號為x的數(shù)據(jù)字節(jié)TCP連接每一條TCP連接有兩個端點(diǎn)。TCP連接的端點(diǎn)不是主機(jī),不是主機(jī)的IP地址,不是應(yīng)用進(jìn)程,也不是運(yùn)輸層的協(xié)議端口。TCP連接的端點(diǎn)叫做套接字(socket)或插口。端口號拼接到(contatenatedwith)IP地址即構(gòu)成了套接字。套接字和端口、IP地址的關(guān)系是:IP地址3端口號15003,1500套接字(socket)TCP的連接socket有多種不同的意思應(yīng)用編程接口

API

稱為socketAPI,簡稱為socket。socketAPI中使用的一個函數(shù)名也叫作socket。調(diào)用socket函數(shù)的端點(diǎn)稱為socket。調(diào)用socket函數(shù)時其返回值稱為socket描述符,可簡稱為socket。在操作系統(tǒng)內(nèi)核中連網(wǎng)協(xié)議的Berkeley實(shí)現(xiàn),稱為socket實(shí)現(xiàn)。7.4.2可靠傳輸?shù)墓ぷ髟?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ào)文

(b)超時重傳tttt確認(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流水線傳輸發(fā)送方可連續(xù)發(fā)送多個分組,不必每發(fā)完一個分組就停頓下來等待對方的確認(rèn)。由于信道上一直有數(shù)據(jù)不間斷地傳送,這種傳輸方式可獲得很高的信道利用率。B分組ttAACK累積確認(rèn)接收方一般采用累積確認(rèn)的方式。即不必對收到的分組逐個發(fā)送確認(rèn),而是對按序到達(dá)的最后一個分組發(fā)送確認(rèn),這樣就表示:到這個分組為止的所有分組都已正確收到了。累積確認(rèn)有的優(yōu)點(diǎn)是:容易實(shí)現(xiàn),即使確認(rèn)丟失也不必重傳。缺點(diǎn)是:不能向發(fā)送方反映出接收方已經(jīng)正確收到的所有分組的信息。TCP可靠通信的具體實(shí)現(xiàn)TCP連接的每一端都必須設(shè)有兩個窗口——一個發(fā)送窗口和一個接收窗口。

TCP的可靠傳輸機(jī)制用字節(jié)的序號進(jìn)行控制。TCP所有的確認(rèn)都是基于序號而不是基于報(bào)文段。

TCP兩端的四個窗口經(jīng)常處于動態(tài)變化之中。TCP連接的往返時間RTT也不是固定不變的。需要使用特定的算法估算較為合理的重傳時間。TCP首部20字節(jié)的固定首部32bit比特08162431目的端口數(shù)據(jù)偏移檢驗(yàn)和選項(xiàng)(長度可變)源端口序號緊急指針窗口確認(rèn)號保留FINSYNRSTPSHACKURG填充TCP數(shù)據(jù)部分TCP首部TCP報(bào)文段IP數(shù)據(jù)部分IP首部發(fā)送在前7.4.3TCP報(bào)文段的首部格式TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗(yàn)和選項(xiàng)(長度可變)源端口序號緊急指針窗口確認(rèn)號保留FINSYNRSTPSHACKURG比特08162431填充源端口和目的端口字段——各占2字節(jié)。端口是運(yùn)輸層與應(yīng)用層的服務(wù)接口。運(yùn)輸層的復(fù)用和分用功能都要通過端口才能實(shí)現(xiàn)。TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗(yàn)和選項(xiàng)(長度可變)源端口序號緊急指針窗口確認(rèn)號保留FINSYNRSTPSHACKURG比特08162431填充序號字段——占4字節(jié)。TCP連接中傳送的數(shù)據(jù)流中的每一個字節(jié)都編上一個序號。序號字段的值則指的是本報(bào)文段所發(fā)送的數(shù)據(jù)的第一個字節(jié)的序號。TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗(yàn)和選項(xiàng)(長度可變)源端口序號緊急指針窗口確認(rèn)號保留FINSYNRSTPSHACKURG填充確認(rèn)號字段——占4字節(jié),是期望收到對方的下一個報(bào)文段的數(shù)據(jù)的第一個字節(jié)的序號。TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗(yàn)和選項(xiàng)(長度可變)源端口序號緊急指針窗口確認(rèn)號保留FINSYNRSTPSHACKURG填充數(shù)據(jù)偏移——占4bit,它指出TCP報(bào)文段的數(shù)據(jù)起始處距離TCP報(bào)文段的起始處有多遠(yuǎn)。“數(shù)據(jù)偏移”的單位是32bit字。TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗(yàn)和選項(xiàng)(長度可變)源端口序號緊急指針窗口確認(rèn)號保留FINSYNRSTPSHACKURG填充保留字段——占6bit,保留為今后使用,但目前應(yīng)置為0。TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗(yàn)和選項(xiàng)(長度可變)源端口序號緊急指針窗口確認(rèn)號保留FINSYNRSTPSHACKURG填充緊急比特URG——當(dāng)URG

1時,表明緊急指針字段有效。它告訴系統(tǒng)此報(bào)文段中有緊急數(shù)據(jù),應(yīng)盡快傳送(相當(dāng)于高優(yōu)先級的數(shù)據(jù))。TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗(yàn)和選項(xiàng)(長度可變)源端口序號緊急指針窗口確認(rèn)號保留FINSYNRSTPSHACKURG填充確認(rèn)比特ACK——只有當(dāng)ACK

1時確認(rèn)號字段才有效。當(dāng)ACK

0時,確認(rèn)號無效。TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗(yàn)和選項(xiàng)(長度可變)源端口序號緊急指針窗口確認(rèn)號保留FINSYNRSTPSHACKURG填充推送比特PSH(PuSH)——接收TCP收到推送比特置1的報(bào)文段,就盡快地交付給接收應(yīng)用進(jìn)程,而不再等到整個緩存都填滿了后再向上交付。TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗(yàn)和選項(xiàng)(長度可變)源端口序號緊急指針窗口確認(rèn)號保留FINSYNRSTPSHACKURG填充復(fù)位比特RST(ReSeT)——當(dāng)RST

1時,表明TCP連接中出現(xiàn)嚴(yán)重差錯(如由于主機(jī)崩潰或其他原因),必須釋放連接,然后再重新建立運(yùn)輸連接。TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗(yàn)和選項(xiàng)(長度可變)源端口序號緊急指針窗口確認(rèn)號保留FINSYNRSTPSHACKURG填充同步比特SYN——同步比特SYN置為1,就表示這是一個連接請求或連接接受報(bào)文。TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗(yàn)和選項(xiàng)(長度可變)源端口序號緊急指針窗口確認(rèn)號保留FINSYNRSTPSHACKURG填充終止比特FIN(FINal)——用來釋放一個連接。當(dāng)FIN

1時,表明此報(bào)文段的發(fā)送端的數(shù)據(jù)已發(fā)送完畢,并要求釋放運(yùn)輸連接。TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗(yàn)和選項(xiàng)(長度可變)源端口序號緊急指針窗口確認(rèn)號保留FINSYNRSTPSHACKURG填充窗口字段——占2字節(jié)。用來控制對方發(fā)送的數(shù)據(jù)量。端點(diǎn)根據(jù)設(shè)置的緩存空間大小確定自己接收窗口大小,然后通知對方以確定對方的發(fā)送窗口的上限。TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗(yàn)和選項(xiàng)(長度可變)源端口序號緊急指針窗口確認(rèn)號保留FINSYNRSTPSHACKURG填充檢驗(yàn)和——占2字節(jié)。檢驗(yàn)的范圍包括首部和數(shù)據(jù)這兩部分。在計(jì)算檢驗(yàn)和時,要在TCP報(bào)文段的前面加上12字節(jié)的偽首部。TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗(yàn)和選項(xiàng)(長度可變)源端口序號緊急指針窗口確認(rèn)號保留FINSYNRSTPSHACKURG填充緊急指針字段——占16bit。當(dāng)URG=1時,緊急指針指出在本報(bào)文段中的緊急數(shù)據(jù)的最后一個字節(jié)的序號。

TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗(yàn)和選項(xiàng)(長度可變)源端口序號緊急指針窗口確認(rèn)號保留FINSYNRSTPSHACKURG比特08162431填充選項(xiàng)字段——長度可變。TCP只規(guī)定了一種選項(xiàng),即最大報(bào)文段長度

MSS(MaximumSegmentSize)。MSS告訴對方TCP:“我的緩存所能接收的報(bào)文段的數(shù)據(jù)字段的最大長度是MSS個字節(jié)?!盡SS是TCP報(bào)文段中的數(shù)據(jù)字段的最大長度。數(shù)據(jù)字段加上TCP首部才等于整個的TCP報(bào)文段。選項(xiàng)字段

窗口擴(kuò)大選項(xiàng)——占3字節(jié),其中有一個字節(jié)表示移位值S。新的窗口值等于TCP首部中的窗口位數(shù)增大到(16+S),相當(dāng)于把窗口值向左移動S位后獲得實(shí)際的窗口大小。時間戳選項(xiàng)——占10字節(jié),其中最主要的字段時間戳值字段(4字節(jié))和時間戳回送回答字段(4字節(jié))。選擇確認(rèn)選項(xiàng)——在后面的5.6.3節(jié)介紹。選項(xiàng)字段舉例——選擇確認(rèn)SACK接收方收到了和前面的字節(jié)流不連續(xù)的兩個字節(jié)塊。如果這些字節(jié)的序號都在接收窗口之內(nèi),那么接收方就先收下這些數(shù)據(jù),但要把這些信息準(zhǔn)確地告訴發(fā)送方,使發(fā)送方不要再重復(fù)發(fā)送這些已收到的數(shù)據(jù)。如果要使用選擇確認(rèn),那么在建立TCP連接時,就要在TCP首部的選項(xiàng)中加上“允許SACK”的選項(xiàng),而雙方必須都事先商定好。首部中的“確認(rèn)號字段”的用法仍然不變。只是以后在TCP報(bào)文段的首部中都增加了SACK選項(xiàng),以便報(bào)告收到的不連續(xù)的字節(jié)塊的邊界。由于首部選項(xiàng)的長度最多只有40字節(jié),而指明一個邊界就要用掉4字節(jié),因此在選項(xiàng)中最多只能指明4個字節(jié)塊的邊界信息。110001501300035014500確認(rèn)號=1001L1=1501L2=3501R1=3001R1=4501接收到的字節(jié)流序號不連續(xù)……連續(xù)的字節(jié)流………第一個字節(jié)塊第二個字節(jié)塊

和前后字節(jié)不連續(xù)的每一個字節(jié)塊都有兩個邊界:左邊界和右邊界。用四個指針標(biāo)記這些邊界。第一個字節(jié)塊的左邊界L1=1501,但右邊界R1=3001。左邊界指出字節(jié)塊的第一個字節(jié)的序號,但右邊界減1才是字節(jié)塊中的最后一個序號。第二個字節(jié)塊的左邊界L2=3501,而右邊界R2=4501。TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗(yàn)和選項(xiàng)(長度可變)源端口序號緊急指針窗口確認(rèn)號保留FINSYNRSTPSHACKURG填充填充字段——這是為了使整個首部長度是4字節(jié)的整數(shù)倍。7.4.4TCP的流量控制與擁塞控制

一、流量控制的概念TCP采用可變的滑動窗口進(jìn)行流量控制。窗口的單位是字節(jié)。TCP報(bào)文段在首部的窗口字段寫入的數(shù)值就是當(dāng)前給對方設(shè)置的發(fā)送窗口數(shù)值的上限。發(fā)送窗口在連接建立時由雙方商定。但在通信的過程中,接收端可根據(jù)自己的資源情況,隨時動態(tài)地調(diào)整對方的發(fā)送窗口上限值(可增大或減小)。連接建立時,雙方要商定初始序號。TCP報(bào)文首部中的序號字段數(shù)值表示該報(bào)文段中的數(shù)據(jù)部分的第一個字節(jié)的序號。TCP的確認(rèn)是對接收到的數(shù)據(jù)的最高序號表示確認(rèn)。接收端返回的確認(rèn)號接收端期望下次收到的數(shù)據(jù)中的第一個數(shù)據(jù)字節(jié)的序號(已收到的數(shù)據(jù)的最高序號加1)。前移不允許發(fā)送已發(fā)送并收到確認(rèn)A的發(fā)送窗口=20允許發(fā)送的序號26272829303132333435363738394041424344454647484950515253545556B期望收到的序號前沿后沿前移收縮根據(jù)B給出的窗口值A(chǔ)構(gòu)造出自己的發(fā)送窗口TCP標(biāo)準(zhǔn)強(qiáng)烈不贊成發(fā)送窗口前沿向后收縮窗口控制的概念不允許發(fā)送已發(fā)送并收到確認(rèn)A的發(fā)送窗口位置不變允許發(fā)送但尚未發(fā)送262728293031323334353637383940414243444546474849505152535455已發(fā)送但未收到確認(rèn)56P1P2P3不允許接收已發(fā)送確認(rèn)并交付主機(jī)B的接收窗口允許接收26272829303132333435363738394041424344454647484950515253545556未按序收到可用窗口A發(fā)送了11個字節(jié)的數(shù)據(jù)P3–P1=A的發(fā)送窗口(又稱為通知窗口)P2–P1=已發(fā)送但尚未收到確認(rèn)的字節(jié)數(shù)P3–P2=允許發(fā)送但尚未發(fā)送的字節(jié)數(shù)(又稱為可用窗口)允許發(fā)送但尚未發(fā)送A的發(fā)送窗口向前滑動262728293031323334353637383940414243444546474849505152535455已發(fā)送并收到確認(rèn)不允許發(fā)送已發(fā)送但未收到確認(rèn)56P1P2P3允許接收B的接收窗口向前滑動262728293031323334353637383940414243444546474849505152535455已發(fā)送確認(rèn)并交付主機(jī)不允許接收56未按序收到A收到新的確認(rèn)號,發(fā)送窗口向前滑動先存下,等待缺少的數(shù)據(jù)的到達(dá)不允許發(fā)送已發(fā)送并收到確認(rèn)A的發(fā)送窗口已滿,有效窗口為零262728293031323334353637383940414243444546474849505152535455已發(fā)送但未收到確認(rèn)56P1P2P3A的發(fā)送窗口內(nèi)的序號都已用完,但還沒有再收到確認(rèn),必須停止發(fā)送。A的發(fā)送窗口并不總是和B的接收窗口一樣大(因?yàn)橛幸欢ǖ臅r間滯后)。TCP標(biāo)準(zhǔn)沒有規(guī)定對不按序到達(dá)的數(shù)據(jù)應(yīng)如何處理。通常是先臨時存放在接收窗口中,等到字節(jié)流中所缺少的字節(jié)收到后,再按序交付上層的應(yīng)用進(jìn)程。TCP要求接收方必須有累積確認(rèn)的功能,這樣可以減小傳輸開銷。發(fā)送緩存與接收緩存的作用發(fā)送緩存用來暫時存放:

發(fā)送應(yīng)用程序傳送給發(fā)送方TCP準(zhǔn)備發(fā)送的數(shù)據(jù);

TCP已發(fā)送出但尚未收到確認(rèn)的數(shù)據(jù)。接收緩存用來暫時存放:

按序到達(dá)的、但尚未被接收應(yīng)用程序讀取的數(shù)據(jù);不按序到達(dá)的數(shù)據(jù)。

seq=1,DATAseq=201,DATAseq=401,DATAseq=301,DATAseq=101,DATAseq=201,DATAseq=501,DATAACK=1,ack=201,rwnd=300ACK=1,ack=601,rwnd=0ACK=1,ack=501,rwnd=100AB允許A發(fā)送序號201至500共300字節(jié)A發(fā)送了序號101至200,還能發(fā)送200字節(jié)A發(fā)送了序號301至400,還能再發(fā)送100字節(jié)新數(shù)據(jù)A發(fā)送了序號1至100,還能發(fā)送300字節(jié)A發(fā)送了序號401至500,不能再發(fā)送新數(shù)據(jù)了A超時重傳舊的數(shù)據(jù),但不能發(fā)送新的數(shù)據(jù)允許A發(fā)送序號501至600共100字節(jié)A發(fā)送了序號501至600,不能再發(fā)送了不允許A再發(fā)送(到序號600為止的數(shù)據(jù)都收到了)丟失!流量控制舉例A向B發(fā)送數(shù)據(jù)。在連接建立時,

B告訴A:“我的接收窗口rwnd=400(字節(jié))”。持續(xù)計(jì)時器TCP為每一個連接設(shè)有一個持續(xù)計(jì)時器。只要TCP連接的一方收到對方的零窗口通知,就啟動持續(xù)計(jì)時器。若持續(xù)計(jì)時器設(shè)置的時間到期,就發(fā)送一個零窗口探測報(bào)文段(僅攜帶1字節(jié)的數(shù)據(jù)),而對方就在確認(rèn)這個探測報(bào)文段時給出了現(xiàn)在的窗口值。若窗口仍然是零,則收到這個報(bào)文段的一方就重新設(shè)置持續(xù)計(jì)時器。若窗口不是零,則死鎖的僵局就可以打破了。二、擁塞控制的一般原理擁塞控制是很難設(shè)計(jì)的,因?yàn)樗且粋€動態(tài)的(而不是靜態(tài)的)問題。當(dāng)前網(wǎng)絡(luò)正朝著高速化的方向發(fā)展,這很容易出現(xiàn)緩存不夠大而造成分組的丟失。但分組的丟失是網(wǎng)絡(luò)發(fā)生擁塞的征兆而不是原因。在許多情況下,甚至正是擁塞控制本身成為引起網(wǎng)絡(luò)性能惡化甚至發(fā)生死鎖的原因。這點(diǎn)應(yīng)特別引起重視。

TCP采用慢開始和擁塞避免法進(jìn)行擁塞控制慢開始和擁塞避免發(fā)送端的主機(jī)在確定發(fā)送報(bào)文段的速率時,既要根據(jù)接收端的接收能力,又要從全局考慮不要使網(wǎng)絡(luò)發(fā)生擁塞。因此,每一個TCP連接需要有以下兩個狀態(tài)變量:接收端窗口

rwnd(receiverwindow)又稱為通知窗口(advertisedwindow)。擁塞窗口

cwnd(congestionwindow)。接收端窗口rwnd和擁塞窗口cwnd接收端窗口rwnd這是接收端根據(jù)其目前的接收緩存大小所許諾的最新的窗口值,是來自接收端的流量控制。接收端將此窗口值放在TCP報(bào)文的首部中的窗口字段,傳送給發(fā)送端。擁塞窗口cwnd(congestionwindow)是發(fā)送端根據(jù)自己估計(jì)的網(wǎng)絡(luò)擁塞程度而設(shè)置的窗口值,是來自發(fā)送端的流量控制。發(fā)送窗口的上限值發(fā)送端的發(fā)送窗口的上限值應(yīng)當(dāng)取為接收端窗口rwnd和擁塞窗口cwnd這兩個變量中較小的一個,即應(yīng)按以下公式確定:發(fā)送窗口的上限值

Min[rwnd,cwnd]

當(dāng)rwnd<cwnd時,是接收端的接收能力限制發(fā)送窗口的最大值。當(dāng)cwnd<rwnd時,則是網(wǎng)絡(luò)的擁塞限制發(fā)送窗口的最大值。

慢開始算法的原理為了防止出現(xiàn)擁塞現(xiàn)象,需要對發(fā)送端的發(fā)送啟動速度進(jìn)行控制。在主機(jī)剛剛開始發(fā)送報(bào)文段時可先將擁塞窗口cwnd設(shè)置為一個最大報(bào)文段MSS的數(shù)值。在每收到一個對新的報(bào)文段的確認(rèn)后,將擁塞窗口增加一個MSS的數(shù)值。用這樣的方法逐步增大發(fā)送端的擁塞窗口cwnd,可以使分組注入到網(wǎng)絡(luò)的速率更加合理。發(fā)送方接收方發(fā)送M1

確認(rèn)M1發(fā)送M2~M3

確認(rèn)M2~M3發(fā)送M4~M7

確認(rèn)M4~M7cwnd=1cwnd=2cwnd=4發(fā)送M8~M15cwnd=8…tt發(fā)送方每收到一個對新報(bào)文段的確認(rèn)(重傳的不算在內(nèi))就使cwnd加1。輪次1輪次2輪次3傳輸輪次使用慢開始算法后,每經(jīng)過一個傳輸輪次,擁塞窗口cwnd就加倍。一個傳輸輪次所經(jīng)歷的時間其實(shí)就是往返時間RTT?!皞鬏斴喆巍备訌?qiáng)調(diào):把擁塞窗口cwnd所允許發(fā)送的報(bào)文段都連續(xù)發(fā)送出去,并收到了對已發(fā)送的最后一個字節(jié)的確認(rèn)。例如,擁塞窗口cwnd=4,這時的往返時間RTT就是發(fā)送方連續(xù)發(fā)送4個報(bào)文段,并收到這4個報(bào)文段的確認(rèn),總共經(jīng)歷的時間。設(shè)置慢開始門限狀態(tài)變量ssthresh慢開始門限ssthresh的用法如下:當(dāng)cwnd<ssthresh時,使用慢開始算法。當(dāng)cwnd>ssthresh時,停止使用慢開始算法而改用擁塞避免算法。當(dāng)cwnd=ssthresh時,既可使用慢開始算法,也可使用擁塞避免算法。擁塞避免算法的思路是讓擁塞窗口cwnd緩慢地增大,即每經(jīng)過一個往返時間RTT就把發(fā)送方的擁塞窗口cwnd加1,而不是加倍,使擁塞窗口cwnd按線性規(guī)律緩慢增長。當(dāng)網(wǎng)絡(luò)出現(xiàn)擁塞時無論在慢開始階段還是在擁塞避免階段,只要發(fā)送方判斷網(wǎng)絡(luò)出現(xiàn)擁塞(其根據(jù)就是沒有按時收到確認(rèn)),就要把慢開始門限ssthresh設(shè)置為出現(xiàn)擁塞時的發(fā)送方窗口值的一半(但不能小于2)。然后把擁塞窗口cwnd重新設(shè)置為1,執(zhí)行慢開始算法。這樣做的目的就是要迅速減少主機(jī)發(fā)送到網(wǎng)絡(luò)中的分組數(shù),使得發(fā)生擁塞的路由器有足夠時間把隊(duì)列中積壓的分組處理完畢。2216慢開始和擁塞避免算法的實(shí)現(xiàn)舉例當(dāng)TCP連接進(jìn)行初始化時,將擁塞窗口置為1。窗口單位不使用字節(jié)而使用報(bào)文段。慢開始門限的初始值設(shè)置為16個報(bào)文段,即ssthresh=16。“乘法減小”24681012141618200048122024擁塞窗口cwnd新的ssthresh值網(wǎng)絡(luò)擁塞指數(shù)規(guī)律增長ssthresh的初始值慢開始慢開始慢開始擁塞避免“加法增大”擁塞避免“加法增大”傳輸輪次慢開始和擁塞避免算法的實(shí)現(xiàn)舉例發(fā)送端的發(fā)送窗口不能超過擁塞窗口cwnd和接收端窗口rwnd中的最小值。我們假定接收端窗口足夠大,因此現(xiàn)在發(fā)送窗口的數(shù)值等于擁塞窗口的數(shù)值。2216“乘法減小”24681012141618200048122024擁塞窗口cwnd新的ssthresh值網(wǎng)絡(luò)擁塞指數(shù)規(guī)律增長ssthresh的初始值慢開始慢開始慢開始擁塞避免“加法增大”擁塞避免“加法增大”傳輸輪次慢開始和擁塞避免算法的實(shí)現(xiàn)舉例在執(zhí)行慢開始算法時,擁塞窗口cwnd的初始值為1,發(fā)送第一個報(bào)文段M0。

2216“乘法減小”24681012141618200048122024擁塞窗口cwnd新的ssthresh值網(wǎng)絡(luò)擁塞指數(shù)規(guī)律增長ssthresh的初始值慢開始慢開始擁塞避免“加法增大”擁塞避免“加法增大”傳輸輪次慢開始和擁塞避免算法的實(shí)現(xiàn)舉例發(fā)送端每收到一個確認(rèn),就把cwnd加1。于是發(fā)送端可以接著發(fā)送M1和M2兩個報(bào)文段。2216“乘法減小”24681012141618200048122024擁塞窗口cwnd新的ssthresh值網(wǎng)絡(luò)擁塞指數(shù)規(guī)律增長ssthresh的初始值慢開始慢開始慢開始擁塞避免“加法增大”擁塞避免“加法增大”傳輸輪次慢開始和擁塞避免算法的實(shí)現(xiàn)舉例接收端共發(fā)回兩個確認(rèn)。發(fā)送端每收到一個對新報(bào)文段的確認(rèn),就把發(fā)送端的cwnd加1?,F(xiàn)在cwnd從2增大到4,并可接著發(fā)送后面的4個報(bào)文段。2216“乘法減小”24681012141618200048122024擁塞窗口cwnd新的ssthresh值網(wǎng)絡(luò)擁塞指數(shù)規(guī)律增長ssthresh的初始值慢開始慢開始慢開始擁塞避免“加法增大”擁塞避免“加法增大”傳輸輪次慢開始和擁塞避免算法的實(shí)現(xiàn)舉例發(fā)送端每收到一個對新報(bào)文段的確認(rèn),就把發(fā)送端的擁塞窗口加1,因此擁塞窗口cwnd隨著傳輸輪次按指數(shù)規(guī)律增長。2216“乘法減小”24681012141618200048122024擁塞窗口cwnd新的ssthresh值網(wǎng)絡(luò)擁塞指數(shù)規(guī)律增長ssthresh的初始值慢開始慢開始慢開始擁塞避免“加法增大”擁塞避免“加法增大”傳輸輪次慢開始和擁塞避免算法的實(shí)現(xiàn)舉例當(dāng)擁塞窗口cwnd增長到慢開始門限值ssthresh時(即當(dāng)cwnd=16時),就改為執(zhí)行擁塞避免算法,擁塞窗口按線性規(guī)律增長。2216“乘法減小”24681012141618200048122024擁塞窗口cwnd新的ssthresh值網(wǎng)絡(luò)擁塞指數(shù)規(guī)律增長ssthresh的初始值慢開始慢開始慢開始擁塞避免“加法增大”擁塞避免“加法增大”傳輸輪次2216“乘法減小”24681012141618200048122024擁塞窗口cwnd新的ssthresh值網(wǎng)絡(luò)擁塞指數(shù)規(guī)律增長ssthresh的初始值慢開始慢開始慢開始擁塞避免“加法增大”擁塞避免“加法增大”慢開始和擁塞避免算法的實(shí)現(xiàn)舉例假定擁塞窗口的數(shù)值增長到24時,網(wǎng)絡(luò)出現(xiàn)超時,表明網(wǎng)絡(luò)擁塞了。傳輸輪次2216“乘法減小”24681012141618200048122024擁塞窗口cwnd新的ssthresh值網(wǎng)絡(luò)擁塞指數(shù)規(guī)律增長ssthresh的初始值慢開始慢開始慢開始擁塞避免“加法增大”擁塞避免“加法增大”慢開始和擁塞避免算法的實(shí)現(xiàn)舉例更新后的ssthresh值變?yōu)?2(即發(fā)送窗口數(shù)值24的一半),擁塞窗口再重新設(shè)置為1,并執(zhí)行慢開始算法。傳輸輪次2216“乘法減小”24681012141618200048122024擁塞窗口cwnd新的ssthresh值網(wǎng)絡(luò)擁塞指數(shù)規(guī)律增長ssthresh的初始值慢開始慢開始慢開始擁塞避免“加法增大”擁塞避免“加法增大”慢開始和擁塞避免算法的實(shí)現(xiàn)舉例當(dāng)cwnd=12時改為執(zhí)行擁塞避免算法,擁塞窗口按按線性規(guī)律增長,每經(jīng)過一個往返時延就增加一個MSS的大小。傳輸輪次擁塞避免的乘法減小與加法增大“乘法減小“是指不論在慢開始階段還是擁塞避免階段,只要出現(xiàn)一次超時(即出現(xiàn)一次網(wǎng)絡(luò)擁塞),就把慢開始門限值ssthresh設(shè)置為當(dāng)前的擁塞窗口值乘以0.5。當(dāng)網(wǎng)絡(luò)頻繁出現(xiàn)擁塞時,ssthresh值就下降得很快,以大大減少注入到網(wǎng)絡(luò)中的分組數(shù)?!凹臃ㄔ龃蟆笔侵笀?zhí)行擁塞避免算法后,當(dāng)收到對所有報(bào)文段的確認(rèn)就將擁塞窗口cwnd增加一個MSS大小,使擁塞窗口緩慢增大,以防止網(wǎng)絡(luò)過早出現(xiàn)擁塞。

擁塞控制算法中的快重傳和快恢復(fù)快重傳算法:發(fā)送端只要一連收到三個重復(fù)的ACK

即可斷定有分組丟失了,就立即重傳報(bào)文段而不必繼續(xù)等待重傳計(jì)時器的超時。快恢復(fù)算法:當(dāng)發(fā)送端收到連續(xù)三個重復(fù)的ACK時,就執(zhí)行“乘法減小”算法,把慢開始門限ssthresh減半。但接下去不執(zhí)行慢開始算法。由于發(fā)送方現(xiàn)在認(rèn)為網(wǎng)絡(luò)很可能沒有發(fā)生擁塞,因此現(xiàn)在不執(zhí)行慢開始算法,即擁塞窗口cwnd現(xiàn)在不設(shè)置為1,而是設(shè)置為慢開始門限ssthresh減半后的數(shù)值,然后開始執(zhí)行擁塞避免算法(“加法增大”),使擁塞窗口緩慢地線性增大。

24從連續(xù)收到三個重復(fù)的確認(rèn)

轉(zhuǎn)入擁塞避免2468101214161820220048121620傳輸輪次擁塞窗口cwnd收到3個重復(fù)的確認(rèn)執(zhí)行快重傳算法慢開始“乘法減小”擁塞避免“加法增大”TCPReno版本TCPTahoe版本(已廢棄不用)ssthresh的初始值擁塞避免“加法增大”新的ssthresh值慢開始快恢復(fù)快重傳舉例M1,M2ack2,ack3M4主機(jī)A主機(jī)BB確認(rèn)M1

M2A發(fā)送M1和M2A收到了三個重復(fù)的確認(rèn)ACK3,就立即重傳M3,而不必等待超時重傳。M3丟失!A發(fā)送M3但丟失了A發(fā)送M4ack3M5A發(fā)送M5ack3B發(fā)送第二個重復(fù)確認(rèn)

ACK3M6A發(fā)送M6ack3M3B發(fā)送第三個重復(fù)確認(rèn)

ACK3B只能再次確認(rèn)

M2(因?yàn)镸3

沒有收到)7.4.5TCP的重傳機(jī)制重傳機(jī)制是TCP中最重要和最復(fù)雜的問題之一。也是保證報(bào)文段可靠傳輸?shù)拇胧┲?。由于TCP的下層是一個互連網(wǎng)環(huán)境,IP數(shù)據(jù)報(bào)所選擇的路由變化很大。因而運(yùn)輸層的往返時延的方差很大。時間數(shù)據(jù)鏈路層運(yùn)輸層T1T2T3往返時延的概率分布往返時延的自適應(yīng)算法重發(fā)方法:TCP每發(fā)送一個報(bào)文段,就對這個報(bào)文段設(shè)置一次計(jì)時器。只要計(jì)時器設(shè)置的重傳時間到但還沒有收到確認(rèn),就重傳這一報(bào)文段。超時時間的選擇:運(yùn)輸層的往返時延的方差大,需采用自適應(yīng)算法?!瑫r重傳時間RTO略大于平均往返時延RTT。每測量到一個新的往返時延樣本,就按下式重新計(jì)算一次平均往返時延RTT:平均往返時延RTT

(舊的RTT)

(1

)

(新的往返時延樣本)0

1典型的

值為7/8

往返時延RTT?計(jì)時器的RTO應(yīng)略大于RTT,即:RTO

RTTTCP原先的標(biāo)準(zhǔn)推薦將

值取為2實(shí)際上往返時間的測量相當(dāng)復(fù)雜,特別是已經(jīng)重傳的條件下。

TCP報(bào)文段1沒有收到確認(rèn)。重傳(即報(bào)文段2)后,收到了確認(rèn)報(bào)文段ACK。如何判定此確認(rèn)報(bào)文段是對原來的報(bào)文段1的確認(rèn),還是對重傳的報(bào)文段2的確認(rèn)?發(fā)送一個TCP報(bào)文段超時重傳TCP報(bào)文段收到ACK時間12往返時延RTT?是對哪一個報(bào)文段的確認(rèn)?往返時延的自適應(yīng)算法Karn算法在計(jì)算平均往返時延RTT時,只要報(bào)文段重傳了,就不采用其往返時延樣本。這樣得出的平均往返時延RTT和重傳時間就較準(zhǔn)確。重傳時間無法更新報(bào)文段每重傳一次,就將重傳時間增大一些:新的重傳時間

(舊的重傳時間)系數(shù)

的典型值是2。當(dāng)不再發(fā)生報(bào)文段的重傳時,才根據(jù)報(bào)文段的往返時延更新平均往返時延RTT和重傳時間的數(shù)值。修正的Karn算法7.4.6TCP的運(yùn)輸連接管理

1.運(yùn)輸連接的三個階段

運(yùn)輸連接有三個階段,即:連接建立、數(shù)據(jù)傳送和連接釋放。連接建立過程中要解決以下三個問題:確知對方的存在協(xié)商參數(shù)(如最大報(bào)文段長度,最大窗口大小,服務(wù)質(zhì)量等)分配資源(如緩存大小,連接表中的項(xiàng)目等)TCP的連接和建立都是采用客戶服務(wù)器方式。主動發(fā)起連接建立的應(yīng)用進(jìn)程叫做客戶(client)。被動等待連接建立的應(yīng)用進(jìn)程叫做服務(wù)器(server)。

用三次握手建立TCP連接

SYN=1,seq=xCLOSEDCLOSED主動打開被動打開AB客戶服務(wù)器TCP的連接建立A的TCP向B發(fā)出連接請求報(bào)文段,其首部中的同步位SYN=1,并選擇序號seq=x,表明傳送數(shù)據(jù)時的第一個數(shù)據(jù)字節(jié)的序號是x。用三次握手建立TCP連接

SYN=1,seq=xCLOSEDCLOSED主動打開被動打開AB客戶服務(wù)器TCP的連接建立SYN=1,ACK=1,seq=y,ack=x

1B的TCP收到連接請求報(bào)文段后,如同意,則發(fā)回確認(rèn)。

B在確認(rèn)報(bào)文段中應(yīng)使SYN=1,使ACK=1,其確認(rèn)號ack=x

1,自己選擇的序號seq=y。SYN=1,seq=xACK=1,seq=x+1,ack=y

1CLOSEDCLOSED主動打開被動打開AB客戶服務(wù)器SYN=1,ACK=1,seq=y,ack=x

1A收到此報(bào)文段后向B給出確認(rèn),其ACK=1,確認(rèn)號ack=y

1。

A的TCP通知上層應(yīng)用進(jìn)程,連接已經(jīng)建立。SYN=1,seq=xACK=1,seq=x+1,ack=y

1CLOSEDCLOSED數(shù)據(jù)傳送主動打開被動打開AB客戶服務(wù)器SYN=1,ACK=1,seq=y,ack=x

1B的TCP收到主機(jī)A的確認(rèn)后,也通知其上層應(yīng)用進(jìn)程:TCP連接已經(jīng)建立。SYN-SENTESTAB-LISHEDSYN-RCVDLISTENESTAB-LISHED用三次握手建立TCP連接的各狀態(tài)

SYN=1,seq=xACK=1,seq=x+1,ack=y

1CLOSEDCLOSED數(shù)據(jù)傳送主動打開被動打開AB客戶服務(wù)器TCP的連接建立SYN=1,ACK=1,seq=y,ack=x

1FIN=1,seq=uCLOSED主動關(guān)閉數(shù)據(jù)傳送ESTAB-LISHEDESTAB-LISHEDAB客戶服務(wù)器CLOSEDTCP

的連接釋放

數(shù)據(jù)傳輸結(jié)束后,通信的雙方都可釋放連接?,F(xiàn)在A的應(yīng)用進(jìn)程先向其TCP發(fā)出連接釋放報(bào)文段,并停止再發(fā)送數(shù)據(jù),主動關(guān)閉TCP

連接。

A把連接釋放報(bào)文段首部的FIN=1,其序號

seq=u,等待B的確認(rèn)。FIN=1,seq=uACK=1,seq=v,ack=u

1主動關(guān)閉數(shù)據(jù)傳送通知應(yīng)用進(jìn)程ESTAB-LISHEDESTAB-LISHEDAB客戶服務(wù)器TCP

的連接釋放B發(fā)出確認(rèn),確認(rèn)號ack=u

1,而這個報(bào)文段自己的序號seq=v。

TCP服務(wù)器進(jìn)程通知高層應(yīng)用進(jìn)程。從A到B這個方向的連接就釋放了,TCP連接處于半關(guān)閉狀態(tài)。B若發(fā)送數(shù)據(jù),A仍要接收。FIN=1,seq=uACK=1,seq=v,ack=u

1FIN=1,ACK=1,seq=w,ack=u

1主動關(guān)閉被動關(guān)閉數(shù)據(jù)傳送通知應(yīng)用進(jìn)程ESTAB-LISHEDESTAB-LISHEDAB客戶服務(wù)器數(shù)據(jù)傳送TCP

的連接釋放

若B已經(jīng)沒有要向A發(fā)送的數(shù)據(jù),其應(yīng)用進(jìn)程就通知TCP釋放連接。FIN=1,seq=uACK=1,seq=v,ack=u

1FIN=1,ACK=1,seq=w,ack=u

1主動關(guān)閉被動關(guān)閉數(shù)據(jù)傳送通知應(yīng)用進(jìn)程ESTAB-LISHEDESTAB-LISHEDAB客戶服務(wù)器數(shù)據(jù)傳送TCP

的連接釋放A收到連接釋放報(bào)文段后,必須發(fā)出確認(rèn)。ACK=1,seq=u+1,ack=w

1FIN=1,seq=uACK=1,seq=v,ack=u

1FIN=1,ACK=1,seq=w,ack=u

1主動關(guān)閉被動關(guān)閉數(shù)據(jù)傳送通知應(yīng)用進(jìn)程ESTAB-LISHEDESTAB-LISHEDAB客戶服務(wù)器數(shù)據(jù)傳送TCP

的連接釋放

在確認(rèn)報(bào)文段中ACK=1,確認(rèn)號ack

w

1,自己的序號seq=u+1。ACK=1,seq=u+1,ack=w

1CLOSEDACK=1,seq=u+1,ack=w

1FIN=1,seq=uACK=1,seq=v,ack=u

1FIN=1,ACK=1,seq=w,ack=u

1FIN-WAIT-1CLOSE-WAITFIN-WAIT-2LAST-ACK等待TIME-WAIT

主動關(guān)閉被動關(guān)閉數(shù)據(jù)傳送通知應(yīng)用進(jìn)程ESTAB-LISHEDESTAB-LISHEDAB客戶服務(wù)器數(shù)據(jù)傳送CLOSED5.9.2TCP

的連接釋放TCP連接必須經(jīng)過一段時間后才真正釋放掉。A必須等待2MSL的時間第一,為了保證A發(fā)送的最后一個ACK報(bào)文段能夠到達(dá)B。第二,防止“已失效的連接請求報(bào)文段”出現(xiàn)在本連接中。A在發(fā)送完最后一個ACK報(bào)文段后,再經(jīng)過時間2MSL,就可以使本連接持續(xù)的時間內(nèi)所產(chǎn)生的所有報(bào)文段,都從網(wǎng)絡(luò)中消失。這樣就可以使下一個新的連接中不會出現(xiàn)這種舊的連接請求報(bào)文段。7.5流控制傳輸協(xié)議(SCTP)UTP:面向報(bào)文,不可靠TCP:面向字節(jié),可靠SCTP:面向報(bào)文,可靠。保留報(bào)文邊界檢測丟失數(shù)據(jù)、重復(fù)數(shù)據(jù)和失序數(shù)據(jù)擁塞控制、流量控制SCTP具有UTP和TCP最好的一些特點(diǎn)。被稱為超級TCPSCTP的服務(wù)進(jìn)程到進(jìn)程的通信SCTP使用TCP空間的所有熟知端口SCTP還使用一些外加的端口多重流SCTP中的一個關(guān)聯(lián)可以包含多重流協(xié)議端口號描述IUA9990在IP上運(yùn)行ISDNM2UA2904SS7電話信令M3UA2905SS7電話信令H.2482945媒體網(wǎng)關(guān)控制H.3231718,1719,1720,11720IP電話SIP5060IP電話SCTP的服務(wù)

多重流的概念發(fā)送進(jìn)程接收進(jìn)程數(shù)據(jù)塊的流使用SCTP協(xié)議

數(shù)據(jù)塊的流使用SCTP協(xié)議TCP每一個連接只能包含一個流,SCTP允許每一個關(guān)聯(lián)中使用多重流當(dāng)一個流被中斷時,其他流可繼續(xù)交付數(shù)據(jù)SCTP的服務(wù)連接多個網(wǎng)絡(luò)SCTP中的關(guān)聯(lián)允許每一端使用多個IP地址當(dāng)一對IP出現(xiàn)故障時,可選用另一對IP進(jìn)行通信全雙工通信面向連接的服務(wù)兩個SCTP建立關(guān)聯(lián)數(shù)據(jù)在兩個方向上交換關(guān)聯(lián)終止可靠的服務(wù)SCTP與TCP一樣,也使用確認(rèn)機(jī)制來提供可靠的服務(wù)SCTP的特點(diǎn)在SCTP中,數(shù)據(jù)塊用傳輸序號TSN編號為了區(qū)分不同的流,SCTP使用流標(biāo)識符SI為了區(qū)分屬于同一個流的不同數(shù)據(jù)塊,SCTP使用流序號SSNTCP有報(bào)文段,SCTP有分組,一個分組可攜帶多個數(shù)據(jù)塊SCTP的分組比TCP的報(bào)文簡單TCP的首部必要部分為20字節(jié)SCTP的通用首部只有12字節(jié)SCTP的控制信息和數(shù)據(jù)信息處在不同的塊中SCTP的分組TCP有報(bào)文段,SCTP有分組TCP的控制信息在首部SCTP的控制信息和數(shù)據(jù)信息處在不同的塊中SCTP的驗(yàn)證標(biāo)志是關(guān)聯(lián)標(biāo)識符目的端口源端口驗(yàn)證標(biāo)志控制塊檢驗(yàn)和數(shù)據(jù)塊目的端口數(shù)據(jù)偏移檢驗(yàn)和選項(xiàng)(長度可變)源端口序號緊急指針窗口確認(rèn)號保留填充控制標(biāo)志數(shù)據(jù)字節(jié)SCTP的分組格式SCTP分組有一個強(qiáng)制性的通用首部和一組塊兩類塊:控制塊控制和維護(hù)關(guān)聯(lián)數(shù)據(jù)塊攜帶用戶數(shù)據(jù)

控制塊在數(shù)據(jù)塊的前面

通用首部(12字節(jié))塊N(可變長度)塊1(可變長度)SCTP的分組格式通用首部通用首部(分組首部)定義分組屬于的每一個關(guān)聯(lián)源端口地址16位定義發(fā)送分組的進(jìn)程的端口號目的端口地址16位定義接收分組的進(jìn)程的端口號驗(yàn)證標(biāo)志使一個分組和一個關(guān)聯(lián)匹配驗(yàn)證標(biāo)志在每一個分組中重復(fù)使用檢驗(yàn)和的長度從16位(在UDP、TCP和IP中)增加到32位,因此可以使用CRC-32檢驗(yàn)和.

目的端口地址源端口地址驗(yàn)證標(biāo)志檢驗(yàn)和SCTP的分組格式塊控制信息和用戶數(shù)據(jù)信息都放在塊中前3個字段對所有的塊都是共同的;信息字段則與塊的類型有關(guān)類型字段可定義256種的塊類型,目前只定義了幾種標(biāo)志字段定義特定的塊可能需要的特殊標(biāo)志

長度字段定義以字節(jié)計(jì)算的塊總長度,包括類型、標(biāo)志和長度字段

長度類型標(biāo)志塊信息(4字節(jié)的倍數(shù))SCTP的分組格式類型字段SCTP的分組格式DATA塊標(biāo)志字段:有5位是保留的,只定義了3位:U、B和E當(dāng)U字段置為1時,表示不按序的數(shù)據(jù)B位(開始)和E位(結(jié)束)定義一個塊在分片報(bào)文中的位置當(dāng)B=1,E=1:沒有分片B=1和E=0:第一個分片。

B=0和E=1:最后一個分片

長度U類型:0傳輸序號協(xié)議標(biāo)識符流標(biāo)識符保留流序號數(shù)據(jù)字節(jié)EBSCTP的分組格式DATA塊傳輸序號(TSN):對于一個方向,序號在INIT塊中被初始化,對于相反的方向,序號在INITACK中被初始化。流標(biāo)識符(SI):定義在一個關(guān)聯(lián)中的每一個流。在一個方向?qū)儆谕粋€流的所有塊攜帶同樣的流標(biāo)識符長度U類型:0傳輸序號協(xié)議標(biāo)識符流標(biāo)識符保留流序號數(shù)據(jù)字節(jié)EBSCTP的分組格式DATA塊流序號(SSN):定義在一個方向的特定流中的一個塊。協(xié)議標(biāo)識符:由應(yīng)用程序使用的32位字段,定義數(shù)據(jù)類型用戶數(shù)據(jù):攜帶真正的用戶數(shù)據(jù)。長度U類型:0傳輸序號協(xié)議標(biāo)識符流標(biāo)識符保留流序號數(shù)據(jù)字節(jié)EB兒童慢性咳嗽與處理1急性咳嗽,時間短于4周單擊此處添加文本具體內(nèi)容2亞急性咳嗽,時間介于4-8周單擊此處添加文本具體內(nèi)容3慢性咳嗽,時間超過8周單擊此處添加文本具體內(nèi)容一.定義CONTENTSONE1二.咳嗽感受器與部位三種感受器

RARlike(快速適應(yīng)性感受器,機(jī)械刺激為主)

Nociceptive(傷害感受器,化學(xué)刺激為主)

Polymodal(咳嗽感受器,機(jī)械刺激與酸)有髓神經(jīng)纖維口咽部、喉、支氣管樹、外耳道與鼓膜A

神經(jīng)纖維C神經(jīng)纖維C類神經(jīng)纖維感受器(VR1)無髓神經(jīng)纖維通過釋放神經(jīng)多肽,刺激RARs主要位于支氣管Opioidreceptor阿片受體,有μ、κ、δ和σ亞型麻醉鎮(zhèn)痛劑通過某些肽類物質(zhì)(如β-內(nèi)啡肽)及μ阿片受體抑制咳嗽呼吸道中也存在μ受體,參與了芬太尼誘發(fā)嗆咳過程慢性咳嗽經(jīng)常(16~62%)同時由一種以上病因引起UACS,哮喘,GERD是各年齡慢性咳嗽最常見的三種原因慢性咳嗽是57%哮喘和75%GERD的唯一癥狀大多數(shù)慢性咳嗽能明確病因,使治療有效率達(dá)84~98%三.慢性咳嗽的常見病因上呼吸道咳嗽綜合癥(UACS)

慢性鼻竇炎慢性鼻炎,包括過敏性鼻炎增殖體肥大吸入綜合癥

胃食道反流病(GERD)

會厭功能障礙支氣管源性疾病哮喘綜合征病毒感染后咳嗽心因性疾病兒童慢性咳嗽(胸片正常)的常見原因常見的支氣管源性疾病是兒童慢性咳嗽的第一大原因支氣管哮喘咳嗽變異性哮喘(CVA)

非哮喘性嗜酸細(xì)胞性支氣管炎(NAEB)<一>哮喘綜合征有慢性氣道炎癥,氣道高反應(yīng),肺功能異常有咳嗽及喘息發(fā)作,以夜間和清晨為重有特應(yīng)性家族史對糖皮質(zhì)激素,抗白三烯受體拮抗藥及支氣管擴(kuò)張藥有效1.支氣管哮喘有慢性氣道炎癥,氣道高反應(yīng),肺功能大多正常;中央氣道慢性炎癥和支氣管反應(yīng)增高平滑肌收縮刺激肌梭內(nèi)咳嗽感受器以咳嗽為主,偶爾有喘息發(fā)作以夜間和清晨為重對糖皮質(zhì)激素,抗白三烯受體拮抗藥,支氣管擴(kuò)張藥有效2.咳嗽變異性哮喘又稱過敏性咳嗽有慢性氣道炎癥,痰液嗜酸細(xì)胞>2.5~5%無氣道高反應(yīng)和肺功能異常僅有咳嗽,無喘息發(fā)作對糖皮質(zhì)激素,抗白三烯受體拮抗藥有效;支氣管擴(kuò)張藥無效3.嗜酸細(xì)胞性支氣管炎激素敏感性咳嗽常用的相關(guān)檢查支氣管舒張?jiān)囼?yàn)支氣管激發(fā)試驗(yàn)3%NaCl霧化吸入誘導(dǎo)咳嗽痰液咳出或吸出處理后計(jì)數(shù)嗜酸細(xì)胞數(shù)痰液嗜酸細(xì)胞>2.5~5%誘導(dǎo)痰嗜酸細(xì)胞計(jì)數(shù)RSV毛細(xì)支氣管炎與慢性咳嗽有密切關(guān)系RSV導(dǎo)致支氣管結(jié)構(gòu)或功能的持續(xù)損害RSV改變神經(jīng)敏感閾值,咳嗽感受器閾值降低RSV誘導(dǎo)RSV-IgE形成,ECP增高RSV誘發(fā)咳嗽(哮喘、肺發(fā)育不全、氣道吸入)<二>病毒感染后咳嗽以夜間及清晨咳嗽為主,可伴有喘息發(fā)作多持續(xù)3-8周,但對于早產(chǎn)兒、小于3個月的嬰兒及伴有基礎(chǔ)疾病的患兒持續(xù)時間較長部分伴有特異體質(zhì)的患兒,對糖

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論