




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
傳輸層2025/4/13計(jì)算機(jī)網(wǎng)絡(luò)講義2主要內(nèi)容基本概念TCP協(xié)議UDP協(xié)議基本概念NAT(網(wǎng)絡(luò)地址轉(zhuǎn)換)的基本概念基本概念2025/4/13計(jì)算機(jī)網(wǎng)絡(luò)講義3傳輸層1)傳輸層的職責(zé)是在兩個(gè)不同系統(tǒng)的進(jìn)程之間提供一種交換數(shù)據(jù)的可靠機(jī)制,協(xié)議具有端到端的意義。2)用戶(hù)不能對(duì)通信子網(wǎng)加以控制,故無(wú)法采用更好的通信處理機(jī)制來(lái)解決網(wǎng)絡(luò)層服務(wù)質(zhì)量低劣的問(wèn)題,更不可能通過(guò)改進(jìn)數(shù)據(jù)鏈路層糾錯(cuò)能力來(lái)改善低層的條件。3)傳輸層的存在使得傳輸服務(wù)比網(wǎng)絡(luò)服務(wù)更可靠,報(bào)文丟失、殘缺等錯(cuò)誤都可以被傳輸層檢測(cè)到并可以采取相應(yīng)的補(bǔ)救措施。2025/4/13計(jì)算機(jī)網(wǎng)絡(luò)講義4傳輸層傳輸協(xié)議(Transportprotocol)是整個(gè)網(wǎng)絡(luò)體系結(jié)構(gòu)中的關(guān)鍵協(xié)議之一實(shí)現(xiàn)進(jìn)程到進(jìn)程的可靠通信服務(wù)將多對(duì)進(jìn)程通信復(fù)用到一條網(wǎng)絡(luò)連接上向高層用戶(hù)屏蔽了低層通信子網(wǎng)的細(xì)節(jié)(網(wǎng)絡(luò)拓?fù)?、協(xié)議等)傳輸層為應(yīng)用進(jìn)程之間提供邏輯通信,網(wǎng)絡(luò)層為主機(jī)之間提供邏輯通信2025/4/13計(jì)算機(jī)網(wǎng)絡(luò)講義5傳輸層在系統(tǒng)中的位置WebIEHostAHostBNetworkLayerLinkLayerApplicationLayerTransportLayerO.S.O.S.HeaderDataHeaderDataHDHDHDHDHDHD2025/4/13計(jì)算機(jī)網(wǎng)絡(luò)講義6傳輸層功能連接管理定義允許兩個(gè)用戶(hù)象直接連接一樣交談的規(guī)則流量控制(FlowControl)傳輸層定義了端用戶(hù)之間的流量控制,數(shù)據(jù)鏈路協(xié)議定義了兩個(gè)中間相鄰接點(diǎn)的流量控制差錯(cuò)檢測(cè)(ErrorDetection)數(shù)據(jù)鏈路層提供了可靠的鏈路傳輸,但在路由器將含有分組的幀重新格式化,可能會(huì)出現(xiàn)影響分組內(nèi)容的錯(cuò)誤。幀校驗(yàn)和是在新幀創(chuàng)建后計(jì)算的,包含了錯(cuò)誤數(shù)據(jù)。傳輸層的差錯(cuò)檢測(cè)用于檢測(cè)此錯(cuò)誤。對(duì)用戶(hù)請(qǐng)求的響應(yīng)包括發(fā)送和接收數(shù)據(jù)建立無(wú)連接和面向連接的通信擁塞控制(congestioncontrol)2025/4/13計(jì)算機(jī)網(wǎng)絡(luò)講義7AP2傳輸層網(wǎng)絡(luò)層鏈路層物理層AP5傳輸層網(wǎng)絡(luò)層鏈路層物理層通信子網(wǎng)傳輸層:進(jìn)程到進(jìn)程的通信網(wǎng)絡(luò)AP1AP2AP3AP4AP5AP6主機(jī)A主機(jī)BAP為應(yīng)用網(wǎng)絡(luò)層:主機(jī)到主機(jī)的通信2025/4/13計(jì)算機(jī)網(wǎng)絡(luò)講義8以FTP舉例NetworkLinkTransportApplicationPresentationSessionTransportNetworkLinkPhysicalThe7-layerOSIModelThe4-layerInternetmodelApplicationFTPASCII/BinaryIPTCPEthernet2025/4/13計(jì)算機(jī)網(wǎng)絡(luò)講義9applicationtransportnetworkdatalinkphysicalapplicationtransportnetworkdatalinkphysicalnetworkdatalinkphysicalnetworkdatalinkphysicalnetworkdatalinkphysicalnetworkdatalinkphysicalnetworkdatalinkphysicallogicalend-endtransport2025/4/13計(jì)算機(jī)網(wǎng)絡(luò)講義10解決的問(wèn)題不可靠的網(wǎng)絡(luò)層服務(wù)可靠的通訊需求
Clickhere2025/4/13計(jì)算機(jī)網(wǎng)絡(luò)講義11提供兩種服務(wù)TCP和UDP適應(yīng)不同的應(yīng)用需求2025/4/13計(jì)算機(jī)網(wǎng)絡(luò)講義12傳輸層協(xié)議可靠的,面向連接的,單播(Unicast)協(xié)議:TCP擁塞控制(CongestionControl)流控制(FlowControl)有連接(ConnectionManagement)不可靠的(Best-effort),面向無(wú)連接的,單播、多播或廣播(multicast、broadcast)的協(xié)議:UDP應(yīng)用協(xié)議TCPUDPIP鏈路層物理層2025/4/13計(jì)算機(jī)網(wǎng)絡(luò)講義13apptransportnetworkMP2apptransportnetworkreceiverHtHnsegmentsegmentMapptransportnetworkP1MMMP3P4segmentheaderapplication-layerdata復(fù)用2025/4/13計(jì)算機(jī)網(wǎng)絡(luò)講義14端口號(hào)定義傳輸層根據(jù)端口號(hào)來(lái)決定把報(bào)文提交給某個(gè)應(yīng)用進(jìn)層熟知端口(Well-knownport):IANA負(fù)責(zé)分配給一些常用的應(yīng)用程序,范圍:1~1024。如ftp21,telnet23,smtp25等。注冊(cè)端口:1024~49151。IANA不指派也不控制??稍贗ANA注冊(cè)以防止重復(fù)。動(dòng)態(tài)端口:49152~65535。IANA不指派也不控制。客戶(hù)端進(jìn)程動(dòng)態(tài)生成。2025/4/13計(jì)算機(jī)網(wǎng)絡(luò)講義152025/4/13計(jì)算機(jī)網(wǎng)絡(luò)講義16IPTCPUDPWWWSMTPTELNETSNMPTFTP應(yīng)用80252316169通過(guò)IP協(xié)議確定主機(jī)通過(guò)端口確定進(jìn)程2025/4/13計(jì)算機(jī)網(wǎng)絡(luò)講義17復(fù)用/分用:舉例hostAserverBsourceport:xdest.port:23sourceport:23dest.port:xportuse:simpletelnetappWebclienthostAWebserverBWebclienthostCSourceIP:CDestIP:Bsourceport:xdest.port:80SourceIP:CDestIP:Bsourceport:ydest.port:80portuse:WebserverSourceIP:ADestIP:Bsourceport:xdest.port:802025/4/13計(jì)算機(jī)網(wǎng)絡(luò)講義18端口與連接端口標(biāo)志的是應(yīng)用一個(gè)應(yīng)用連接用目的與源的IP地址+端口來(lái)標(biāo)識(shí):源IP地址,源端口號(hào);目的IP地址,目的端口號(hào),如:(0,1025)和(0,23)102510268023801025服務(wù)器:客戶(hù)1:客戶(hù)2:連接1連接2連接3連接1:,1025;,80連接2:,1026;,23連接3:,1025;,80以上概念同時(shí)適用于TCP與UDP,IP地址與端口對(duì)即構(gòu)成套接字Socket2025/4/13計(jì)算機(jī)網(wǎng)絡(luò)講義19(協(xié)議、源地址、目的地址、源端口號(hào)、目的端口號(hào))
利用這樣一個(gè)五元組就來(lái)唯一標(biāo)識(shí)一次傳輸層通信2025/4/13計(jì)算機(jī)網(wǎng)絡(luò)講義20TCP/IP協(xié)議族中的傳輸層協(xié)議用戶(hù)數(shù)據(jù)報(bào)協(xié)議UDP和傳輸控制協(xié)議TCPUDP和TCP都使用IP協(xié)議,即他們的協(xié)議數(shù)據(jù)單元都作為IP數(shù)據(jù)報(bào)的數(shù)據(jù)
UDP是無(wú)連接的
TCP提供的是面向連接的服務(wù)。2025/4/13計(jì)算機(jī)網(wǎng)絡(luò)講義21主要內(nèi)容基本概念TCP協(xié)議UDP協(xié)議基本概念NAT(網(wǎng)絡(luò)地址轉(zhuǎn)換)的基本概念TCP協(xié)議2025/4/13計(jì)算機(jī)網(wǎng)絡(luò)講義22TCP協(xié)議概述報(bào)文格式連接管理流量控制狀態(tài)圖概述2025/4/13計(jì)算機(jī)網(wǎng)絡(luò)講義23TCP協(xié)議最早由斯坦福大學(xué)的兩名研究人員于1973年提出。1983年,TCP/IP被Unix4.2BSD系統(tǒng)采用。隨著Unix的成功,TCP/IP逐步成為Unix機(jī)器的標(biāo)準(zhǔn)網(wǎng)絡(luò)協(xié)議。取代ARPANET最初使用的NCP(NetworkControlProtocol)協(xié)議,成為Internet的標(biāo)準(zhǔn)協(xié)議。2025/4/13計(jì)算機(jī)網(wǎng)絡(luò)講義24TCP協(xié)議是專(zhuān)門(mén)設(shè)計(jì)用于在不可靠的網(wǎng)絡(luò)當(dāng)中提供可靠的、端對(duì)端的字節(jié)流通信協(xié)議。TCP協(xié)議能夠滿(mǎn)足不同的拓?fù)浣Y(jié)構(gòu)、帶寬、延遲、分組大小以及其他特性。TCP協(xié)議在RFC793當(dāng)中定義,在RFC1122和RFC1323當(dāng)中得到修訂和改進(jìn)運(yùn)輸實(shí)體:負(fù)責(zé)管理TCP流以及同IP層的接口2025/4/13計(jì)算機(jī)網(wǎng)絡(luò)講義25TCP協(xié)議具有優(yōu)良的性能雖然TCP中包含許多比其它運(yùn)輸層更為復(fù)雜的任務(wù),但分析表明,其性能并沒(méi)有因此而降低。幾個(gè)最大吞吐量的理論計(jì)算值(或測(cè)得的):在以太網(wǎng)(10M)上:8兆在FDDI(100M)上:80-90兆兩臺(tái)GrayY-MP計(jì)算機(jī)在800兆的高速通道上:781兆2025/4/13計(jì)算機(jī)網(wǎng)絡(luò)講義26TCP最主要的特點(diǎn)TCP是面向連接的運(yùn)輸層協(xié)議。每一條TCP連接只能有兩個(gè)端點(diǎn)(endpoint),每一條TCP連接只能是點(diǎn)對(duì)點(diǎn)的(一對(duì)一)。TCP提供可靠交付的服務(wù)。
TCP提供全雙工通信。面向字節(jié)流。2025/4/13計(jì)算機(jī)網(wǎng)絡(luò)講義27應(yīng)當(dāng)注意TCP連接是一條虛連接而不是一條真正的物理連接。TCP對(duì)應(yīng)用進(jìn)程一次把多長(zhǎng)的報(bào)文發(fā)送到TCP的緩存中是不關(guān)心的。TCP根據(jù)對(duì)方給出的窗口值和當(dāng)前網(wǎng)絡(luò)擁塞的程度來(lái)決定一個(gè)報(bào)文段應(yīng)包含多少個(gè)字節(jié)(UDP發(fā)送的報(bào)文長(zhǎng)度是應(yīng)用進(jìn)程給出的)。TCP可把太長(zhǎng)的數(shù)據(jù)塊劃分短一些再傳送。TCP也可等待積累有足夠多的字節(jié)后再構(gòu)成報(bào)文段發(fā)送出去。2025/4/13計(jì)算機(jī)網(wǎng)絡(luò)講義28TCP的連接TCP把連接作為最基本的抽象。每一條TCP連接有兩個(gè)端點(diǎn)。TCP連接的端點(diǎn)不是主機(jī),不是主機(jī)的IP地址,不是應(yīng)用進(jìn)程,也不是運(yùn)輸層的協(xié)議端口。TCP連接的端點(diǎn)叫做套接字(socket)或插口。端口號(hào)拼接到(contatenatedwith)IP地址即構(gòu)成了套接字。2025/4/13計(jì)算機(jī)網(wǎng)絡(luò)講義29套接字(socket)
套接字socket=(IP地址:端口號(hào))每一條TCP連接唯一地被通信兩端的兩個(gè)端點(diǎn)(即兩個(gè)套接字)所確定。即:
TCP連接::={socket1,socket2}={(IP1:port1),(IP2:port2)}2025/4/13計(jì)算機(jī)網(wǎng)絡(luò)講義30同一個(gè)名詞socket
有多種不同的意思應(yīng)用編程接口
API
稱(chēng)為socketAPI,簡(jiǎn)稱(chēng)為socket。socketAPI中使用的一個(gè)函數(shù)名也叫作socket。調(diào)用socket函數(shù)的端點(diǎn)稱(chēng)為socket。調(diào)用socket函數(shù)時(shí)其返回值稱(chēng)為socket描述符,可簡(jiǎn)稱(chēng)為socket。在操作系統(tǒng)內(nèi)核中連網(wǎng)協(xié)議的Berkeley實(shí)現(xiàn),稱(chēng)為socket實(shí)現(xiàn)。2025/4/13計(jì)算機(jī)網(wǎng)絡(luò)講義31TCP協(xié)議概述報(bào)文格式連接管理流量控制狀態(tài)圖報(bào)文格式2025/4/13計(jì)算機(jī)網(wǎng)絡(luò)講義32TCP首部20字節(jié)的固定首部目的端口數(shù)據(jù)偏移檢驗(yàn)和選項(xiàng)(長(zhǎng)度可變)源端口序號(hào)緊急指針窗口確認(rèn)號(hào)保留FIN32位SYNRSTPSHACKURG位08162431填充TCP數(shù)據(jù)部分TCP首部TCP報(bào)文段IP數(shù)據(jù)部分IP首部發(fā)送在前TCP報(bào)文段的首部格式
2025/4/13計(jì)算機(jī)網(wǎng)絡(luò)講義33TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗(yàn)和選項(xiàng)(長(zhǎng)度可變)源端口序號(hào)緊急指針窗口確認(rèn)號(hào)保留FINSYNRSTPSHACKURG位08162431填充源端口和目的端口字段——各占2字節(jié)。端口是運(yùn)輸層與應(yīng)用層的服務(wù)接口。運(yùn)輸層的復(fù)用和分用功能都要通過(guò)端口才能實(shí)現(xiàn)。2025/4/13計(jì)算機(jī)網(wǎng)絡(luò)講義34TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗(yàn)和選項(xiàng)(長(zhǎng)度可變)源端口序號(hào)緊急指針窗口確認(rèn)號(hào)保留FINSYNRSTPSHACKURG位08162431填充序號(hào)字段——占4字節(jié)。TCP連接中傳送的數(shù)據(jù)流中的每一個(gè)字節(jié)都編上一個(gè)序號(hào)。序號(hào)字段的值則指的是本報(bào)文段所發(fā)送的數(shù)據(jù)的第一個(gè)字節(jié)的序號(hào)。2025/4/13計(jì)算機(jī)網(wǎng)絡(luò)講義35TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗(yàn)和選項(xiàng)(長(zhǎng)度可變)源端口序號(hào)緊急指針窗口確認(rèn)號(hào)保留FINSYNRSTPSHACKURG位08162431填充確認(rèn)號(hào)字段——占4字節(jié),是期望收到對(duì)方的下一個(gè)報(bào)文段的數(shù)據(jù)的第一個(gè)字節(jié)的序號(hào)。2025/4/13計(jì)算機(jī)網(wǎng)絡(luò)講義36TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗(yàn)和選項(xiàng)(長(zhǎng)度可變)源端口序號(hào)緊急指針窗口確認(rèn)號(hào)保留FINSYNRSTPSHACKURG位08162431填充數(shù)據(jù)偏移(即首部長(zhǎng)度)——占4位,它指出TCP報(bào)文段的數(shù)據(jù)起始處距離TCP報(bào)文段的起始處有多遠(yuǎn)?!皵?shù)據(jù)偏移”的單位是32位字(以4字節(jié)為計(jì)算單位)。2025/4/13計(jì)算機(jī)網(wǎng)絡(luò)講義37TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗(yàn)和選項(xiàng)(長(zhǎng)度可變)源端口序號(hào)緊急指針窗口確認(rèn)號(hào)保留FINSYNRSTPSHACKURG位08162431填充保留字段——占6位,保留為今后使用,但目前應(yīng)置為0。2025/4/13計(jì)算機(jī)網(wǎng)絡(luò)講義38TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗(yàn)和選項(xiàng)(長(zhǎng)度可變)源端口序號(hào)緊急指針窗口確認(rèn)號(hào)保留FINSYNRSTPSHACKURG位08162431填充緊急URG——當(dāng)URG
1時(shí),表明緊急指針字段有效。它告訴系統(tǒng)此報(bào)文段中有緊急數(shù)據(jù),應(yīng)盡快傳送(相當(dāng)于高優(yōu)先級(jí)的數(shù)據(jù))。2025/4/13計(jì)算機(jī)網(wǎng)絡(luò)講義39TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗(yàn)和選項(xiàng)(長(zhǎng)度可變)源端口序號(hào)緊急指針窗口確認(rèn)號(hào)保留FINSYNRSTPSHACKURG位08162431填充確認(rèn)ACK——只有當(dāng)ACK
1時(shí)確認(rèn)號(hào)字段才有效。當(dāng)ACK
0時(shí),確認(rèn)號(hào)無(wú)效。2025/4/13計(jì)算機(jī)網(wǎng)絡(luò)講義40TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗(yàn)和選項(xiàng)(長(zhǎng)度可變)源端口序號(hào)緊急指針窗口確認(rèn)號(hào)保留FINSYNRSTPSHACKURG位08162431填充推送PSH(PuSH)——接收TCP收到PSH=1的報(bào)文段,就盡快地交付接收應(yīng)用進(jìn)程,而不再等到整個(gè)緩存都填滿(mǎn)了后再向上交付。2025/4/13計(jì)算機(jī)網(wǎng)絡(luò)講義41TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗(yàn)和選項(xiàng)(長(zhǎng)度可變)源端口序號(hào)緊急指針窗口確認(rèn)號(hào)保留FINSYNRSTPSHACKURG位08162431填充復(fù)位RST(ReSeT)——當(dāng)RST
1時(shí),表明TCP連接中出現(xiàn)嚴(yán)重差錯(cuò)(如由于主機(jī)崩潰或其他原因),必須釋放連接,然后再重新建立運(yùn)輸連接。2025/4/13計(jì)算機(jī)網(wǎng)絡(luò)講義42TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗(yàn)和選項(xiàng)(長(zhǎng)度可變)源端口序號(hào)緊急指針窗口確認(rèn)號(hào)保留FINSYNRSTPSHACKURG位08162431填充同步SYN——同步SYN=1表示這是一個(gè)連接請(qǐng)求或連接接受報(bào)文。2025/4/13計(jì)算機(jī)網(wǎng)絡(luò)講義43TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗(yàn)和選項(xiàng)(長(zhǎng)度可變)源端口序號(hào)緊急指針窗口確認(rèn)號(hào)保留FINSYNRSTPSHACKURG位08162431填充終止FIN(FINis)——用來(lái)釋放一個(gè)連接。FIN
1表明此報(bào)文段的發(fā)送端的數(shù)據(jù)已發(fā)送完畢,并要求釋放運(yùn)輸連接。2025/4/13計(jì)算機(jī)網(wǎng)絡(luò)講義44TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗(yàn)和選項(xiàng)(長(zhǎng)度可變)源端口序號(hào)緊急指針窗口確認(rèn)號(hào)保留FINSYNRSTPSHACKURG位08162431填充窗口字段——
占2字節(jié),用來(lái)讓對(duì)方設(shè)置發(fā)送窗口的依據(jù),單位為字節(jié)。2025/4/13計(jì)算機(jī)網(wǎng)絡(luò)講義45TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗(yàn)和選項(xiàng)(長(zhǎng)度可變)源端口序號(hào)緊急指針窗口確認(rèn)號(hào)保留FINSYNRSTPSHACKURG位08162431填充檢驗(yàn)和——占2字節(jié)。檢驗(yàn)和字段檢驗(yàn)的范圍包括首部和數(shù)據(jù)這兩部分。在計(jì)算檢驗(yàn)和時(shí),要在TCP報(bào)文段的前面加上12字節(jié)的偽首部。2025/4/13計(jì)算機(jī)網(wǎng)絡(luò)講義46TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗(yàn)和選項(xiàng)(長(zhǎng)度可變)源端口序號(hào)緊急指針窗口確認(rèn)號(hào)保留FINSYNRSTPSHACKURG位08162431填充緊急指針字段——占16位,指出在本報(bào)文段中緊急數(shù)據(jù)共有多少個(gè)字節(jié)(緊急數(shù)據(jù)放在本報(bào)文段數(shù)據(jù)的最前面)。
2025/4/13計(jì)算機(jī)網(wǎng)絡(luò)講義47TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗(yàn)和選項(xiàng)(長(zhǎng)度可變)源端口序號(hào)緊急指針窗口確認(rèn)號(hào)保留FINSYNRSTPSHACKURG比特08162431填充選項(xiàng)字段——長(zhǎng)度可變。TCP最初只規(guī)定了一種選項(xiàng),即最大報(bào)文段長(zhǎng)度
MSS。MSS告訴對(duì)方TCP:“我的緩存所能接收的報(bào)文段的數(shù)據(jù)字段的最大長(zhǎng)度是MSS個(gè)字節(jié)?!盡SS(MaximumSegmentSize)是TCP報(bào)文段中的數(shù)據(jù)字段的最大長(zhǎng)度。數(shù)據(jù)字段加上TCP首部才等于整個(gè)的TCP報(bào)文段。2025/4/13計(jì)算機(jī)網(wǎng)絡(luò)講義48其他選項(xiàng)窗口擴(kuò)大選項(xiàng)——占3字節(jié),其中有一個(gè)字節(jié)表示移位值S。新的窗口值等于TCP首部中的窗口位數(shù)增大到(16+S),相當(dāng)于把窗口值向左移動(dòng)S位后獲得實(shí)際的窗口大小。時(shí)間戳選項(xiàng)——占10字節(jié),其中最主要的字段時(shí)間戳值字段(4字節(jié))和時(shí)間戳回送回答字段(4字節(jié))。選擇確認(rèn)選項(xiàng)——在后面的5.6.3節(jié)介紹。2025/4/13計(jì)算機(jī)網(wǎng)絡(luò)講義49TCP首部20字節(jié)固定首部目的端口數(shù)據(jù)偏移檢驗(yàn)和選項(xiàng)(長(zhǎng)度可變)源端口序號(hào)緊急指針窗口確認(rèn)號(hào)保留FINSYNRSTPSHACKURG位08162431填充填充字段——這是為了使整個(gè)首部長(zhǎng)度是4字節(jié)的整數(shù)倍。2025/4/13計(jì)算機(jī)網(wǎng)絡(luò)講義50偽首部并不真正傳輸,但是參與計(jì)算校驗(yàn)和。在計(jì)算校驗(yàn)和的時(shí)候臨時(shí)生成,同TCP報(bào)文連接在一起,得到一個(gè)過(guò)渡報(bào)文,用來(lái)計(jì)算校驗(yàn)和格式:
4字節(jié)4字節(jié)1字節(jié)1字節(jié)2字節(jié)計(jì)算方法將得到的臨時(shí)報(bào)文看作n個(gè)16bit的字(如果數(shù)據(jù)字段為奇數(shù)個(gè)字節(jié)就補(bǔ)上一個(gè)全零的字節(jié),但是不發(fā)送),得到所有這些16bit的字的反碼和,校驗(yàn)值就是該和的反碼。校驗(yàn)方法接受到報(bào)文后,連同偽首部和可能的填充字節(jié),進(jìn)行反碼求和運(yùn)算。如果無(wú)錯(cuò)誤應(yīng)該得到全1,否則表明有錯(cuò)誤出現(xiàn)。2025/4/13計(jì)算機(jī)網(wǎng)絡(luò)講義51標(biāo)識(shí)位有六個(gè)標(biāo)識(shí):緊急位(URG):緊急指針有效,緊急指針是一個(gè)正的偏移量,與序號(hào)字段的值相加等于該數(shù)據(jù)的最后一個(gè)字節(jié)的序號(hào)。
確認(rèn)位(ACK):表示確認(rèn)序號(hào)字段有意義急迫位(PSH):表示請(qǐng)求接收端的傳輸實(shí)體盡快交付應(yīng)用層重建位(RST):表示出現(xiàn)嚴(yán)重差錯(cuò),必須釋放連接重建同步位(SYN):SYN=1,ACK=0表示連接請(qǐng)求消息
SYN=1,ACK=1表示同意建立連接消息終止位(FIN):表示數(shù)據(jù)已發(fā)送完,要求釋放連接圣誕樹(shù)攻擊:全部6個(gè)標(biāo)識(shí)位置一2025/4/13計(jì)算機(jī)網(wǎng)絡(luò)講義52TCP協(xié)議概述報(bào)文格式連接管理流量控制狀態(tài)圖連接管理2025/4/13計(jì)算機(jī)網(wǎng)絡(luò)講義53連接管理連接的建立通信雙方知道對(duì)方存在協(xié)商通信參數(shù)分配運(yùn)輸實(shí)體資源連接的釋放保證數(shù)據(jù)被正確接收釋放所申請(qǐng)資源2025/4/13計(jì)算機(jī)網(wǎng)絡(luò)講義54TCP連接建立過(guò)程三段握手協(xié)議(Three-wayHandshaking):主機(jī)A主機(jī)B主動(dòng)打開(kāi)被動(dòng)打開(kāi)(PassiveOpen)SYN,SEQ=XSYN,SEQ=Y,ACK=X+1ACK=Y+1防止失效的連接請(qǐng)求報(bào)文的復(fù)活。
SynFlooding攻擊
雙方聲明:ISN,初始序列號(hào);MSS,最大報(bào)文段長(zhǎng)度2025/4/13計(jì)算機(jī)網(wǎng)絡(luò)講義55兩軍問(wèn)題兩支藍(lán)軍欲同時(shí)發(fā)動(dòng)進(jìn)攻,而且唯一的通信方式是派遣信使步行奔過(guò)山谷去傳遞信息。在山谷中,信使有可能被俘虜而丟失信件。問(wèn)題:存在使藍(lán)軍獲勝的協(xié)議嗎?2025/4/13計(jì)算機(jī)網(wǎng)絡(luò)講義56結(jié)論是:不存在使藍(lán)軍必勝的通信約定證明:假如存在某種協(xié)議的話(huà),那么,協(xié)議中最后一條信息要么是必要的,要么不是。如果不是,可以刪除它,直到剩下的每條消息都是至關(guān)重要的。若最后一條消息沒(méi)有安全到達(dá)目的地,則會(huì)怎樣呢?剛才說(shuō)過(guò)每條信息都是必要的,因此,若它丟了,則進(jìn)攻不會(huì)如期進(jìn)行。由于最后發(fā)出信息的指揮官永遠(yuǎn)無(wú)法確定該信息能否安全到達(dá),所以,他不會(huì)冒險(xiǎn)發(fā)動(dòng)攻擊。同樣,另一支藍(lán)軍也明白這個(gè)道理,所以也不會(huì)發(fā)動(dòng)進(jìn)攻。釋放一個(gè)可能有數(shù)據(jù)丟失的網(wǎng)絡(luò)連接并不像人們初看起來(lái)那樣簡(jiǎn)單。2025/4/13計(jì)算機(jī)網(wǎng)絡(luò)講義57TCP連接釋放過(guò)程主機(jī)A主機(jī)B應(yīng)用進(jìn)程釋放連接通知應(yīng)用進(jìn)程FIN,SEQ=XACK=X+1ACK=Y+1
半關(guān)閉(Half-Close)FIN,SEQ=Y,ACK=X+1應(yīng)用進(jìn)程釋放連接2025/4/13計(jì)算機(jī)網(wǎng)絡(luò)講義58TCP協(xié)議概述報(bào)文格式連接管理流量控制狀態(tài)圖流量控制TCP序號(hào)與確認(rèn)滑動(dòng)窗口慢啟動(dòng)算法2025/4/13計(jì)算機(jī)網(wǎng)絡(luò)講義59可靠傳輸?shù)墓ぷ髟?a)無(wú)差錯(cuò)情況A發(fā)送M1確認(rèn)M1B發(fā)送M2發(fā)送M3確認(rèn)M2確認(rèn)M3A發(fā)送M1B超時(shí)重傳M1發(fā)送M2確認(rèn)M1丟棄有差錯(cuò)的報(bào)文
(b)超時(shí)重傳tttt2025/4/13計(jì)算機(jī)網(wǎng)絡(luò)講義60請(qǐng)注意在發(fā)送完一個(gè)分組后,必須暫時(shí)保留已發(fā)送的分組的副本。分組和確認(rèn)分組都必須進(jìn)行編號(hào)。超時(shí)計(jì)時(shí)器的重傳時(shí)間應(yīng)當(dāng)比數(shù)據(jù)在分組傳輸?shù)钠骄禃r(shí)間更長(zhǎng)一些。2025/4/13計(jì)算機(jī)網(wǎng)絡(luò)講義61確認(rèn)丟失和確認(rèn)遲到A發(fā)送M1B超時(shí)重傳M1發(fā)送M2丟棄重復(fù)的M1重傳確認(rèn)M1
(a)確認(rèn)丟失確認(rèn)M1A發(fā)送M1B超時(shí)重傳M1發(fā)送M2丟棄重復(fù)的M1重傳確認(rèn)M1
(b)確認(rèn)遲到確認(rèn)M1收下遲到的確認(rèn)但什么也不做tttt2025/4/13計(jì)算機(jī)網(wǎng)絡(luò)講義62可靠通信的實(shí)現(xiàn)使用上述的確認(rèn)和重傳機(jī)制,我們就可以在不可靠的傳輸網(wǎng)絡(luò)上實(shí)現(xiàn)可靠的通信。這種可靠傳輸協(xié)議常稱(chēng)為自動(dòng)重傳請(qǐng)求ARQ(AutomaticRepeatreQuest)。ARQ表明重傳的請(qǐng)求是自動(dòng)進(jìn)行的。接收方不需要請(qǐng)求發(fā)送方重傳某個(gè)出錯(cuò)的分組。2025/4/13計(jì)算機(jī)網(wǎng)絡(luò)講義63信道利用率停止等待協(xié)議的優(yōu)點(diǎn)是簡(jiǎn)單,但缺點(diǎn)是信道利用率太低。TDRTTATD+RTT+TAB分組確認(rèn)tt分組確認(rèn)2025/4/13計(jì)算機(jī)網(wǎng)絡(luò)講義64信道的利用率U
2025/4/13計(jì)算機(jī)網(wǎng)絡(luò)講義65流水線(xiàn)傳輸發(fā)送方可連續(xù)發(fā)送多個(gè)分組,不必每發(fā)完一個(gè)分組就停頓下來(lái)等待對(duì)方的確認(rèn)。由于信道上一直有數(shù)據(jù)不間斷地傳送,這種傳輸方式可獲得很高的信道利用率。B分組ttAACK2025/4/13計(jì)算機(jī)網(wǎng)絡(luò)講義66TCP的序號(hào)與確認(rèn)TCP協(xié)議是面向字節(jié)的。TCP將要傳送的整個(gè)報(bào)文看作一個(gè)字節(jié)流,并且使每一個(gè)字節(jié)對(duì)應(yīng)一個(gè)編號(hào)。對(duì)要傳輸?shù)拿總€(gè)字節(jié)進(jìn)行編號(hào);發(fā)送方序號(hào):數(shù)據(jù)部分的第一個(gè)字節(jié)的序號(hào);接受方的確認(rèn)期望下一次收到的數(shù)據(jù)當(dāng)中的異地個(gè)字節(jié)的序號(hào);2025/4/13計(jì)算機(jī)網(wǎng)絡(luò)講義67以字節(jié)為單位的滑動(dòng)窗口前移不允許發(fā)送已發(fā)送并收到確認(rèn)A的發(fā)送窗口=20允許發(fā)送的序號(hào)26272829303132333435363738394041424344454647484950515253545556B期望收到的序號(hào)前沿后沿前移收縮根據(jù)B給出的窗口值A(chǔ)構(gòu)造出自己的發(fā)送窗口TCP標(biāo)準(zhǔn)強(qiáng)烈不贊成發(fā)送窗口前沿向后收縮2025/4/13計(jì)算機(jī)網(wǎng)絡(luò)講義68不允許發(fā)送已發(fā)送并收到確認(rèn)A的發(fā)送窗口位置不變?cè)试S發(fā)送但尚未發(fā)送262728293031323334353637383940414243444546474849505152535455已發(fā)送但未收到確認(rèn)56P1P2P3不允許接收已發(fā)送確認(rèn)并交付主機(jī)B的接收窗口允許接收26272829303132333435363738394041424344454647484950515253545556未按序收到可用窗口A(yíng)發(fā)送了11個(gè)字節(jié)的數(shù)據(jù)P3–P1=A的發(fā)送窗口(又稱(chēng)為通知窗口)P2–P1=已發(fā)送但尚未收到確認(rèn)的字節(jié)數(shù)P3–P2=允許發(fā)送但尚未發(fā)送的字節(jié)數(shù)(又稱(chēng)為可用窗口)2025/4/13計(jì)算機(jī)網(wǎng)絡(luò)講義69允許發(fā)送但尚未發(fā)送A的發(fā)送窗口向前滑動(dòng)262728293031323334353637383940414243444546474849505152535455已發(fā)送并收到確認(rèn)不允許發(fā)送已發(fā)送但未收到確認(rèn)56P1P2P3允許接收B的接收窗口向前滑動(dòng)262728293031323334353637383940414243444546474849505152535455已發(fā)送確認(rèn)并交付主機(jī)不允許接收56未按序收到A收到新的確認(rèn)號(hào),發(fā)送窗口向前滑動(dòng)先存下,等待缺少的數(shù)據(jù)的到達(dá)2025/4/13計(jì)算機(jī)網(wǎng)絡(luò)講義70不允許發(fā)送已發(fā)送并收到確認(rèn)A的發(fā)送窗口已滿(mǎn),有效窗口為零262728293031323334353637383940414243444546474849505152535455已發(fā)送但未收到確認(rèn)56P1P2P3A的發(fā)送窗口內(nèi)的序號(hào)都已用完,但還沒(méi)有再收到確認(rèn),必須停止發(fā)送。2025/4/13計(jì)算機(jī)網(wǎng)絡(luò)講義71發(fā)送緩存最后被確認(rèn)的字節(jié)發(fā)送應(yīng)用程序發(fā)送緩存最后發(fā)送的字節(jié)發(fā)送窗口已發(fā)送TCP序號(hào)增大2025/4/13計(jì)算機(jī)網(wǎng)絡(luò)講義72接收緩存接收應(yīng)用程序已收到接收窗口TCP接收緩存下一個(gè)讀取的字節(jié)序號(hào)增大下一個(gè)期望收到的字節(jié)(確認(rèn)號(hào))2025/4/13計(jì)算機(jī)網(wǎng)絡(luò)講義73發(fā)送緩存與接收緩存的作用發(fā)送緩存用來(lái)暫時(shí)存放:
發(fā)送應(yīng)用程序傳送給發(fā)送方TCP準(zhǔn)備發(fā)送的數(shù)據(jù);
TCP已發(fā)送出但尚未收到確認(rèn)的數(shù)據(jù)。接收緩存用來(lái)暫時(shí)存放:
按序到達(dá)的、但尚未被接收應(yīng)用程序讀取的數(shù)據(jù);
不按序到達(dá)的數(shù)據(jù)。
2025/4/13計(jì)算機(jī)網(wǎng)絡(luò)講義74需要強(qiáng)調(diào)三點(diǎn)A的發(fā)送窗口并不總是和B的接收窗口一樣大(因?yàn)橛幸欢ǖ臅r(shí)間滯后)。TCP標(biāo)準(zhǔn)沒(méi)有規(guī)定對(duì)不按序到達(dá)的數(shù)據(jù)應(yīng)如何處理。通常是先臨時(shí)存放在接收窗口中,等到字節(jié)流中所缺少的字節(jié)收到后,再按序交付上層的應(yīng)用進(jìn)程。TCP要求接收方必須有累積確認(rèn)的功能,這樣可以減小傳輸開(kāi)銷(xiāo)。2025/4/13計(jì)算機(jī)網(wǎng)絡(luò)講義75超時(shí)重傳時(shí)間的選擇重傳機(jī)制是TCP中最重要和最復(fù)雜的問(wèn)題之一。TCP每發(fā)送一個(gè)報(bào)文段,就對(duì)這個(gè)報(bào)文段設(shè)置一次計(jì)時(shí)器。只要計(jì)時(shí)器設(shè)置的重傳時(shí)間到但還沒(méi)有收到確認(rèn),就要重傳這一報(bào)文段。2025/4/13計(jì)算機(jī)網(wǎng)絡(luò)講義76往返時(shí)延的方差很大由于TCP的下層是一個(gè)互聯(lián)網(wǎng)環(huán)境,IP數(shù)據(jù)報(bào)所選擇的路由變化很大。因而運(yùn)輸層的往返時(shí)間的方差也很大。時(shí)間數(shù)據(jù)鏈路層運(yùn)輸層T1T2T3往返時(shí)間的概率分布2025/4/13計(jì)算機(jī)網(wǎng)絡(luò)講義77加權(quán)平均往返時(shí)間TCP保留了RTT的一個(gè)加權(quán)平均往返時(shí)間
RTTS(這又稱(chēng)為平滑的往返時(shí)間)。第一次測(cè)量到RTT樣本時(shí),RTTS值就取為所測(cè)量到的RTT樣本值。以后每測(cè)量到一個(gè)新的RTT樣本,就按下式重新計(jì)算一次RTTS:
新的RTTS
(1
)
(舊的RTTS)
(新的RTT樣本)式中,0
1。若
很接近于零,表示RTT值更新較慢。若選擇
接近于1,則表示RTT值更新較快。RFC2988推薦的
值為1/8,即0.125。2025/4/13計(jì)算機(jī)網(wǎng)絡(luò)講義78超時(shí)重傳時(shí)間RTO(RetransmissionTime-Out)
RTO應(yīng)略大于上面得出的加權(quán)平均往返時(shí)間RTTS。RFC2988建議使用下式計(jì)算RTO:
RTO
RTTS+4
RTTD
RTTD是RTT的偏差的加權(quán)平均值。RFC2988建議這樣計(jì)算RTTD。第一次測(cè)量時(shí),RTTD值取為測(cè)量到的RTT樣本值的一半。在以后的測(cè)量中,則使用下式計(jì)算加權(quán)平均的RTTD:新的RTTD=(1
)
(舊的RTTD)+
RTTS
新的RTT樣本
是個(gè)小于1的系數(shù),其推薦值是1/4,即0.25。2025/4/13計(jì)算機(jī)網(wǎng)絡(luò)講義79往返時(shí)間RTT?往返時(shí)間的測(cè)量相當(dāng)復(fù)雜TCP報(bào)文段1沒(méi)有收到確認(rèn)。重傳(即報(bào)文段2)后,收到了確認(rèn)報(bào)文段ACK。如何判定此確認(rèn)報(bào)文段是對(duì)原來(lái)的報(bào)文段1的確認(rèn),還是對(duì)重傳的報(bào)文段2的確認(rèn)?發(fā)送一個(gè)TCP報(bào)文段超時(shí)重傳TCP報(bào)文段收到ACK時(shí)間12往返時(shí)間RTT?是對(duì)哪一個(gè)報(bào)文段的確認(rèn)?2025/4/13計(jì)算機(jī)網(wǎng)絡(luò)講義80Karn
算法在計(jì)算平均往返時(shí)間RTT時(shí),只要報(bào)文段重傳了,就不采用其往返時(shí)間樣本。這樣得出的加權(quán)平均平均往返時(shí)間RTTS
和超時(shí)重傳時(shí)間RTO就較準(zhǔn)確。2025/4/13計(jì)算機(jī)網(wǎng)絡(luò)講義81報(bào)文段每重傳一次,就把RTO增大一些:新的RTO
(舊的RTO)系數(shù)
的典型值是2。當(dāng)不再發(fā)生報(bào)文段的重傳時(shí),才根據(jù)報(bào)文段的往返時(shí)延更新平均往返時(shí)延RTT和超時(shí)重傳時(shí)間RTO的數(shù)值。實(shí)踐證明,這種策略較為合理。修正的Karn
算法2025/4/13計(jì)算機(jī)網(wǎng)絡(luò)講義82選擇確認(rèn)SACK
(SelectiveACK)
接收方收到了和前面的字節(jié)流不連續(xù)的兩個(gè)字節(jié)塊。如果這些字節(jié)的序號(hào)都在接收窗口之內(nèi),那么接收方就先收下這些數(shù)據(jù),但要把這些信息準(zhǔn)確地告訴發(fā)送方,使發(fā)送方不要再重復(fù)發(fā)送這些已收到的數(shù)據(jù)。2025/4/13計(jì)算機(jī)網(wǎng)絡(luò)講義83110001501300035014500確認(rèn)號(hào)=1001L1=1501L2=3501R1=3001R1=4501接收到的字節(jié)流序號(hào)不連續(xù)……連續(xù)的字節(jié)流………第一個(gè)字節(jié)塊第二個(gè)字節(jié)塊
和前后字節(jié)不連續(xù)的每一個(gè)字節(jié)塊都有兩個(gè)邊界:左邊界和右邊界。圖中用四個(gè)指針標(biāo)記這些邊界。第一個(gè)字節(jié)塊的左邊界L1=1501,但右邊界R1=3001。左邊界指出字節(jié)塊的第一個(gè)字節(jié)的序號(hào),但右邊界減1才是字節(jié)塊中的最后一個(gè)序號(hào)。第二個(gè)字節(jié)塊的左邊界L2=3501,而右邊界R2=4501。2025/4/13計(jì)算機(jī)網(wǎng)絡(luò)講義84RFC2018的規(guī)定如果要使用選擇確認(rèn),那么在建立TCP連接時(shí),就要在TCP首部的選項(xiàng)中加上“允許SACK”的選項(xiàng),而雙方必須都事先商定好。如果使用選擇確認(rèn),那么原來(lái)首部中的“確認(rèn)號(hào)字段”的用法仍然不變。只是以后在TCP報(bào)文段的首部中都增加了SACK選項(xiàng),以便報(bào)告收到的不連續(xù)的字節(jié)塊的邊界。由于首部選項(xiàng)的長(zhǎng)度最多只有40字節(jié)(TCP首部最長(zhǎng)為60字節(jié),其中固定長(zhǎng)度為20字節(jié)),而指明一個(gè)邊界就要用掉4字節(jié),因此在選項(xiàng)中最多只能指明4個(gè)字節(jié)塊的邊界信息。2025/4/13計(jì)算機(jī)網(wǎng)絡(luò)講義85TCP的流量控制
利用滑動(dòng)窗口實(shí)現(xiàn)流量控制一般說(shuō)來(lái),我們總是希望數(shù)據(jù)傳輸?shù)酶煲恍?。但如果發(fā)送方把數(shù)據(jù)發(fā)送得過(guò)快,接收方就可能來(lái)不及接收,這就會(huì)造成數(shù)據(jù)的丟失。流量控制(flowcontrol)就是讓發(fā)送方的發(fā)送速率不要太快,既要讓接收方來(lái)得及接收,也不要使網(wǎng)絡(luò)發(fā)生擁塞。利用滑動(dòng)窗口機(jī)制可以很方便地在TCP連接上實(shí)現(xiàn)流量控制。2025/4/13計(jì)算機(jī)網(wǎng)絡(luò)講義86seq=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ā)送序號(hào)201至500共300字節(jié)A發(fā)送了序號(hào)101至200,還能發(fā)送200字節(jié)A發(fā)送了序號(hào)301至400,還能再發(fā)送100字節(jié)新數(shù)據(jù)A發(fā)送了序號(hào)1至100,還能發(fā)送300字節(jié)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ā)送了不允許A再發(fā)送(到序號(hào)600為止的數(shù)據(jù)都收到了)丟失!流量控制舉例A向B發(fā)送數(shù)據(jù)。在連接建立時(shí),
B告訴A:“我的接收窗口rwnd=400(字節(jié))”。2025/4/13計(jì)算機(jī)網(wǎng)絡(luò)講義87持續(xù)計(jì)時(shí)器
(persistencetimer)。TCP為每一個(gè)連接設(shè)有一個(gè)持續(xù)計(jì)時(shí)器。只要TCP連接的一方收到對(duì)方的零窗口通知,就啟動(dòng)持續(xù)計(jì)時(shí)器。若持續(xù)計(jì)時(shí)器設(shè)置的時(shí)間到期,就發(fā)送一個(gè)零窗口探測(cè)報(bào)文段(僅攜帶1字節(jié)的數(shù)據(jù)),而對(duì)方就在確認(rèn)這個(gè)探測(cè)報(bào)文段時(shí)給出了現(xiàn)在的窗口值。若窗口仍然是零,則收到這個(gè)報(bào)文段的一方就重新設(shè)置持續(xù)計(jì)時(shí)器。若窗口不是零,則死鎖的僵局就可以打破了。2025/4/13計(jì)算機(jī)網(wǎng)絡(luò)講義88必須考慮傳輸效率可以用不同的機(jī)制來(lái)控制TCP報(bào)文段的發(fā)送時(shí)機(jī):第一種機(jī)制是TCP維持一個(gè)變量,它等于最大報(bào)文段長(zhǎng)度MSS。只要緩存中存放的數(shù)據(jù)達(dá)到MSS字節(jié)時(shí),就組裝成一個(gè)TCP報(bào)文段發(fā)送出去。第二種機(jī)制是由發(fā)送方的應(yīng)用進(jìn)程指明要求發(fā)送報(bào)文段,即TCP支持的推送(push)操作。第三種機(jī)制是發(fā)送方的一個(gè)計(jì)時(shí)器期限到了,這時(shí)就把當(dāng)前已有的緩存數(shù)據(jù)裝入報(bào)文段(但長(zhǎng)度不能超過(guò)MSS)發(fā)送出去。2025/4/13計(jì)算機(jī)網(wǎng)絡(luò)講義89TCP的擁塞控制
擁塞控制的一般原理
在某段時(shí)間,若對(duì)網(wǎng)絡(luò)中某資源的需求超過(guò)了該資源所能提供的可用部分,網(wǎng)絡(luò)的性能就要變壞——產(chǎn)生擁塞(congestion)。出現(xiàn)資源擁塞的條件:
對(duì)資源需求的總和>可用資源
若網(wǎng)絡(luò)中有許多資源同時(shí)產(chǎn)生擁塞,網(wǎng)絡(luò)的性能就要明顯變壞,整個(gè)網(wǎng)絡(luò)的吞吐量將隨輸入負(fù)荷的增大而下降。2025/4/13計(jì)算機(jī)網(wǎng)絡(luò)講義90擁塞控制與流量控制的關(guān)系擁塞控制所要做的都有一個(gè)前提,就是網(wǎng)絡(luò)能夠承受現(xiàn)有的網(wǎng)絡(luò)負(fù)荷。擁塞控制是一個(gè)全局性的過(guò)程,涉及到所有的主機(jī)、所有的路由器,以及與降低網(wǎng)絡(luò)傳輸性能有關(guān)的所有因素。流量控制往往指在給定的發(fā)送端和接收端之間的點(diǎn)對(duì)點(diǎn)通信量的控制。流量控制所要做的就是抑制發(fā)送端發(fā)送數(shù)據(jù)的速率,以便使接收端來(lái)得及接收。擁塞控制是尋找使得不等式(5-7)不再成立的條件,或者是增大網(wǎng)絡(luò)可用資源,或者是減少用戶(hù)資源需求2025/4/13計(jì)算機(jī)網(wǎng)絡(luò)講義91擁塞控制所起的作用提供的負(fù)載吞吐量理想的擁塞控制實(shí)際的擁塞控制0死鎖(吞吐量=0)無(wú)擁塞控制擁塞輕度擁塞2025/4/13計(jì)算機(jī)網(wǎng)絡(luò)講義92擁塞控制的一般原理?yè)砣刂剖呛茈y設(shè)計(jì)的,因?yàn)樗且粋€(gè)動(dòng)態(tài)的問(wèn)題。當(dāng)前網(wǎng)絡(luò)正朝著高速化的方向發(fā)展,這很容易出現(xiàn)緩存不夠大而造成分組的丟失。但分組的丟失是網(wǎng)絡(luò)發(fā)生擁塞的征兆而不是原因。在許多情況下,甚至正是擁塞控制本身成為引起網(wǎng)絡(luò)性能惡化甚至發(fā)生死鎖的原因。這點(diǎn)應(yīng)特別引起重視。2025/4/13計(jì)算機(jī)網(wǎng)絡(luò)講義93開(kāi)環(huán)控制和閉環(huán)控制開(kāi)環(huán)控制方法就是在設(shè)計(jì)網(wǎng)絡(luò)時(shí)事先將有關(guān)發(fā)生擁塞的因素考慮周到,力求網(wǎng)絡(luò)在工作時(shí)不產(chǎn)生擁塞。閉環(huán)控制是基于反饋環(huán)路的概念。屬于閉環(huán)控制的有以下幾種措施:監(jiān)測(cè)網(wǎng)絡(luò)系統(tǒng)以便檢測(cè)到擁塞在何時(shí)、何處發(fā)生。將擁塞發(fā)生的信息傳送到可采取行動(dòng)的地方。調(diào)整網(wǎng)絡(luò)系統(tǒng)的運(yùn)行以解決出現(xiàn)的問(wèn)題。2025/4/13計(jì)算機(jī)網(wǎng)絡(luò)講義94幾種擁塞控制方法慢開(kāi)始、擁塞避免發(fā)送方由小到大逐漸加大發(fā)送窗口(增加的速度很快);發(fā)送窗口緩慢增加;快重傳、快恢復(fù)重復(fù)序號(hào)立即確認(rèn),不等待確認(rèn)捎帶;接收方收到三個(gè)重復(fù)確認(rèn)立即重傳,不等待超時(shí)到達(dá)。加法增大2025/4/13計(jì)算機(jī)網(wǎng)絡(luò)講義95慢開(kāi)始和擁塞避免發(fā)送方維持一個(gè)叫做擁塞窗口cwnd(congestionwindow)的狀態(tài)變量。擁塞窗口的大小取決于網(wǎng)絡(luò)的擁塞程度,并且動(dòng)態(tài)地在變化。發(fā)送方讓自己的發(fā)送窗口等于擁塞窗口。如再考慮到接收方的接收能力,則發(fā)送窗口還可能小于擁塞窗口。發(fā)送方控制擁塞窗口的原則是:只要網(wǎng)絡(luò)沒(méi)有出現(xiàn)擁塞,擁塞窗口就再增大一些,以便把更多的分組發(fā)送出去。但只要網(wǎng)絡(luò)出現(xiàn)擁塞,擁塞窗口就減小一些,以減少注入到網(wǎng)絡(luò)中的分組數(shù)。2025/4/13計(jì)算機(jī)網(wǎng)絡(luò)講義96擁塞窗口的設(shè)置算法流程:在建立連接時(shí)設(shè)置慢啟動(dòng)門(mén)限sstrhresh
(slowstartthreshold)的初始值在開(kāi)始新的連接,擁塞窗口的初始值為1慢啟動(dòng)算法:擁塞窗口按指數(shù)增加,即每連續(xù)正確發(fā)送了N個(gè)數(shù)據(jù)后擁塞窗口值為2N,窗口增大到慢啟動(dòng)門(mén)限后按照線(xiàn)形增加(每次加1)。擁塞控制算法:檢測(cè)到網(wǎng)絡(luò)發(fā)送擁塞后:慢啟動(dòng)門(mén)限置為當(dāng)前擁塞窗口的一半,同時(shí)擁塞窗口變?yōu)?注意:當(dāng)cwnd=ssthresh
時(shí),既可使用慢開(kāi)始算法,也可使用擁塞避免算法。2025/4/13計(jì)算機(jī)網(wǎng)絡(luò)講義972216慢開(kāi)始和擁塞避免算法的實(shí)現(xiàn)舉例當(dāng)TCP連接進(jìn)行初始化時(shí),將擁塞窗口置為1。圖中的窗口單位不使用字節(jié)而使用報(bào)文段。慢開(kāi)始門(mén)限的初始值設(shè)置為16個(gè)報(bào)文段,即ssthresh=16。“乘法減小”24681012141618200048122024擁塞窗口cwnd新的ssthresh
值網(wǎng)絡(luò)擁塞指數(shù)規(guī)律增長(zhǎng)ssthresh
的初始值慢開(kāi)始慢開(kāi)始慢開(kāi)始擁塞避免“加法增大”擁塞避免“加法增大”傳輸輪次2025/4/13計(jì)算機(jī)網(wǎng)絡(luò)講義98TCP的流量控制發(fā)送窗口=Min[通知窗口,擁塞窗口]通知窗口(advertisedwindow)接收端根據(jù)資源情況許諾的窗口值擁塞窗口(congestionwindow)發(fā)送端根據(jù)網(wǎng)絡(luò)擁賽情況得到的窗口值2025/4/13計(jì)算機(jī)網(wǎng)絡(luò)講義99慢啟動(dòng):報(bào)文段慢慢注入網(wǎng)絡(luò)(每次超時(shí)擁塞窗口減為1)乘法減?。撼霈F(xiàn)頻繁超時(shí)時(shí),擁塞窗口指數(shù)減小(每次超時(shí),門(mén)限窗口減半)加法增大:避免網(wǎng)絡(luò)擁塞,線(xiàn)形增加。(達(dá)到門(mén)限值后線(xiàn)性增加)2025/4/13計(jì)算機(jī)網(wǎng)絡(luò)講義100必須強(qiáng)調(diào)指出“擁塞避免”并非指完全能夠避免了擁塞。利用以上的措施要完全避免網(wǎng)絡(luò)擁塞還是不可能的?!皳砣苊狻笔钦f(shuō)在擁塞避免階段把擁塞窗口控制為按線(xiàn)性規(guī)律增長(zhǎng),使網(wǎng)絡(luò)比較不容易出現(xiàn)擁塞。2025/4/13計(jì)算機(jī)網(wǎng)絡(luò)講義101快重傳和快恢復(fù)快重傳算法首先要求接收方每收到一個(gè)失序的報(bào)文段后就立即發(fā)出重復(fù)確認(rèn)。這樣做可以讓發(fā)送方及早知道有報(bào)文段沒(méi)有到達(dá)接收方。發(fā)送方只要一連收到三個(gè)重復(fù)確認(rèn)就應(yīng)當(dāng)立即重傳對(duì)方尚未收到的報(bào)文段。不難看出,快重傳并非取消重傳計(jì)時(shí)器,而是在某些情況下可更早地重傳丟失的報(bào)文段。2025/4/13計(jì)算機(jī)網(wǎng)絡(luò)講義102快重傳舉例發(fā)送方接收方發(fā)送M1
確認(rèn)M1t
確認(rèn)M2發(fā)送M2發(fā)送M3發(fā)送M4
?發(fā)送M5發(fā)送M6
重復(fù)確認(rèn)M2立即重傳M3
重復(fù)確認(rèn)M2
重復(fù)確認(rèn)M2t發(fā)送M7收到三個(gè)連續(xù)的對(duì)M2
的重復(fù)確認(rèn)立即重傳M3丟失2025/4/13計(jì)算機(jī)網(wǎng)絡(luò)講義103快恢復(fù)算法(1)當(dāng)發(fā)送端收到連續(xù)三個(gè)重復(fù)的確認(rèn)時(shí),就執(zhí)行“乘法減小”算法,把慢開(kāi)始門(mén)限ssthresh
減半。但接下去不執(zhí)行慢開(kāi)始算法。(2)由于發(fā)送方現(xiàn)在認(rèn)為網(wǎng)絡(luò)很可能沒(méi)有發(fā)生擁塞,因此現(xiàn)在不執(zhí)行慢開(kāi)始算法,即擁塞窗口cwnd
現(xiàn)在不設(shè)置為1,而是設(shè)置為慢開(kāi)始門(mén)限ssthresh
減半后的數(shù)值,然后開(kāi)始執(zhí)行擁塞避免算法(“加法增大”),使擁塞窗口緩慢地線(xiàn)性增大。2025/4/13計(jì)算機(jī)網(wǎng)絡(luò)講義10424從連續(xù)收到三個(gè)重復(fù)的確認(rèn)
轉(zhuǎn)入擁塞避免2468101214161820220048121620傳輸輪次擁塞窗口cwnd收到3個(gè)重復(fù)的確認(rèn)執(zhí)行快重傳算法慢開(kāi)始“乘法減小”擁塞避免“加法增大”TCPReno版本TCPTahoe版本(已廢棄不用)ssthresh
的初始值擁塞避免“加法增大”新的ssthresh
值慢開(kāi)始快恢復(fù)2025/4/13計(jì)算機(jī)網(wǎng)絡(luò)講義105發(fā)送窗口的上限值發(fā)送方的發(fā)送窗口的上限值應(yīng)當(dāng)取為接收方窗口rwnd
和擁塞窗口cwnd
這兩個(gè)變量中較小的一個(gè),即應(yīng)按以下公式確定:發(fā)送窗口的上限值
Min[rwnd,cwnd]當(dāng)rwnd<cwnd
時(shí),是接收方的接收能力限制發(fā)送窗口的最大值。當(dāng)cwnd<rwnd
時(shí),則是網(wǎng)絡(luò)的擁塞限制發(fā)送窗口的最大值。
2025/4/13計(jì)算機(jī)網(wǎng)絡(luò)講義106TCP協(xié)議概述報(bào)文格式連接管理流量控制狀態(tài)圖狀態(tài)圖2025/4/13計(jì)算機(jī)網(wǎng)絡(luò)講義107TCP的有限狀態(tài)機(jī)TCP有限狀態(tài)機(jī)的圖中每一個(gè)方框都是TCP可能具有的狀態(tài)。每個(gè)方框中的大寫(xiě)英文字符串是TCP標(biāo)準(zhǔn)所使用的TCP連接狀態(tài)名。狀態(tài)之間的箭頭表示可能發(fā)生的狀態(tài)變遷。箭頭旁邊的字,表明引起這種變遷的原因,或表明發(fā)生狀態(tài)變遷后又出現(xiàn)什么動(dòng)作。圖中有三種不同的箭頭。粗實(shí)線(xiàn)箭頭表示對(duì)客戶(hù)進(jìn)程的正常變遷。粗虛線(xiàn)箭頭表示對(duì)服務(wù)器進(jìn)程的正常變遷。另一種細(xì)線(xiàn)箭頭表示異常變遷。
2025/4/13計(jì)算機(jī)網(wǎng)絡(luò)講義108TCP
的
有
限
狀
態(tài)
機(jī)CLOSEDESTABLISHEDLISTENCLOSE_WAITFIN_WAIT_1SYN_RCVDFIN_WAIT_2CLOSINGTIME_WAITSYN_SENTLAST_ACK主動(dòng)打開(kāi)被動(dòng)打開(kāi)被動(dòng)關(guān)閉主動(dòng)關(guān)閉起點(diǎn)被動(dòng)打開(kāi)主動(dòng)打開(kāi)發(fā)送SYN同時(shí)打開(kāi)收到SYN,發(fā)送SYN,ACK收到ACK數(shù)據(jù)傳送階段
關(guān)閉發(fā)送FIN
關(guān)閉發(fā)送FIN
關(guān)閉發(fā)送FIN收到RST
收到SYN發(fā)送SYN,ACK
關(guān)閉或超時(shí)收到ACK
收到SYN,ACK發(fā)送ACK收到ACK收到ACK收到FIN發(fā)送ACK收到FIN,ACK
發(fā)送ACK收到FIN發(fā)送ACK同時(shí)關(guān)閉收到FIN發(fā)送ACK發(fā)送SYN定時(shí)經(jīng)過(guò)兩倍報(bào)文段壽命后關(guān)閉2025/4/13計(jì)算機(jī)網(wǎng)絡(luò)講義109主要內(nèi)容基本概念TCP協(xié)議UDP協(xié)議基本概念NAT(網(wǎng)絡(luò)地址轉(zhuǎn)換)的基本概念UDP協(xié)議基本概念2025/4/13計(jì)算機(jī)網(wǎng)絡(luò)講義110UDPUserDatagramProtocol為什么需要UDP協(xié)議:不需建立連接(連接會(huì)增加延時(shí))簡(jiǎn)單:發(fā)方與收方均不需要維護(hù)連接狀態(tài)包頭更小特性不可靠(BestEffort),UDP包可能:丟失(Lost)重復(fù)(duplicated)錯(cuò)序(Deliveredoutoforder)無(wú)連接發(fā)方與收方之間無(wú)需握手每個(gè)UDP包均單獨(dú)處理UDP與IP比較:只是在IP基礎(chǔ)上增加了端口號(hào)2025/4/13計(jì)算機(jī)網(wǎng)絡(luò)講義111UDP是一個(gè)簡(jiǎn)單的面向數(shù)據(jù)報(bào)的運(yùn)輸層的協(xié)議,它提供協(xié)議端口,使得應(yīng)用進(jìn)程能夠向其他進(jìn)程發(fā)送數(shù)據(jù)報(bào),進(jìn)行進(jìn)程間的數(shù)據(jù)通信。UDP數(shù)據(jù)報(bào)是無(wú)連接、不可靠的。不提供確認(rèn)、消息反饋控制,與IP數(shù)據(jù)報(bào)相同??煽啃砸枰蓱?yīng)用程序本身提供。UDP規(guī)范(RFC-768,1980)。UDP利用IP進(jìn)行主機(jī)到主機(jī)的數(shù)據(jù)報(bào)傳輸。UDP數(shù)據(jù)封裝:2025/4/13計(jì)算機(jī)網(wǎng)絡(luò)講義112UDP報(bào)頭:源端口可選,若無(wú),則必須全為零。報(bào)文長(zhǎng)度以8位組計(jì)算,包括UDP報(bào)頭和數(shù)據(jù),最小值為8,即僅有報(bào)頭。檢校和也是可選的,方法與TCP頭檢驗(yàn)和計(jì)算方法相同:16位累加和求補(bǔ)UDP包長(zhǎng)度:為整個(gè)UDP包的長(zhǎng)度,包括頭部通常一個(gè)UDP包的長(zhǎng)度最大為512字節(jié)頭,2025/4/13計(jì)算機(jī)網(wǎng)絡(luò)講義113UDP應(yīng)用多媒體應(yīng)用對(duì)丟包不敏感多播UDP常見(jiàn)應(yīng)用DNS:域名服務(wù)SNMP:簡(jiǎn)單網(wǎng)絡(luò)管理協(xié)議RIP:路由信息協(xié)議P2P:點(diǎn)對(duì)點(diǎn)通信UDP上的可靠傳輸2025/4/13
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年秦皇島市撫寧區(qū)選聘教師考試筆試試題(含答案)
- 2025年洛陽(yáng)市中小學(xué)教師招聘考試筆試試題(含答案)
- 安徽省屯溪第一中學(xué)2026屆化學(xué)高一第一學(xué)期期中教學(xué)質(zhì)量檢測(cè)模擬試題含解析
- 村文書(shū)考試題庫(kù)及答案
- 美容學(xué)員考試題庫(kù)及答案
- 2025-2030中國(guó)抽油桿行業(yè)發(fā)展現(xiàn)狀及趨勢(shì)預(yù)測(cè)分析報(bào)告
- 2026屆永州市重點(diǎn)中學(xué)化學(xué)高一第一學(xué)期期中達(dá)標(biāo)測(cè)試試題含解析
- 2026屆浙江省溫州市共美聯(lián)盟化學(xué)高三上期中達(dá)標(biāo)檢測(cè)試題含解析
- 南寧市第四十七中學(xué)2026屆化學(xué)高一第一學(xué)期期末質(zhì)量跟蹤監(jiān)視模擬試題含解析
- 2026屆廣東省東莞市第五高級(jí)中學(xué)化學(xué)高二上期末監(jiān)測(cè)模擬試題含答案
- 2025至2030年中國(guó)互聯(lián)網(wǎng)數(shù)據(jù)中心應(yīng)用行業(yè)市場(chǎng)深度評(píng)估及投資戰(zhàn)略規(guī)劃報(bào)告
- 八師兵團(tuán)職工考試題庫(kù)及答案
- 2025臨時(shí)工合同協(xié)議書(shū)模板
- 2025年學(xué)習(xí)貫徹全國(guó)教育大會(huì)精神網(wǎng)絡(luò)培訓(xùn)考試答案
- 推拿學(xué)基礎(chǔ)題庫(kù)及答案
- 水利工程檔案驗(yàn)收項(xiàng)目法人自檢工作報(bào)告
- 工資管理課件
- 電商客服培訓(xùn) 課件
- 2025社區(qū)治理一表通應(yīng)用規(guī)范
- 中國(guó)古詩(shī)詞歌曲課件
- 中考英語(yǔ)688高頻詞大綱詞頻表
評(píng)論
0/150
提交評(píng)論