計算機網(wǎng)絡(luò)(第2版)傳輸層_第1頁
計算機網(wǎng)絡(luò)(第2版)傳輸層_第2頁
計算機網(wǎng)絡(luò)(第2版)傳輸層_第3頁
計算機網(wǎng)絡(luò)(第2版)傳輸層_第4頁
計算機網(wǎng)絡(luò)(第2版)傳輸層_第5頁
已閱讀5頁,還剩48頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

ComputerNetwork計算機網(wǎng)絡(luò)傳輸層2進程通信與端口傳輸層基本概念網(wǎng)絡(luò)服務(wù)質(zhì)量6.1傳輸層概述6.2用戶數(shù)據(jù)報協(xié)議UDP6.3傳輸控制協(xié)議TCP本章主要內(nèi)容TCP報文TCP連接管理TCP滑動窗口、流量控制TCP擁塞控制TCP計時器管理UDP基本概念UDP數(shù)據(jù)報6.1傳輸層概述3進程定義:進程是一個動態(tài)的概念,是一個程序?qū)δ硞€數(shù)據(jù)集的執(zhí)行過程。進程特性:進程具有并發(fā)特性,是分配計算機資源的基本單位。進程組成:進程控制塊(PCB)、有關(guān)程序段、對其操作的數(shù)據(jù)。端口:用于區(qū)分同一個主機上的不同進程,用端口號標(biāo)識網(wǎng)絡(luò)端口。端口號:用于標(biāo)識一個進程,是一個16比特的整數(shù)(0~65535)。TCP/IP協(xié)議中端口號一般分為3大類:熟知端口:0~1023,由公共域協(xié)議使用,由IANA分配,一般提供給服務(wù)器使用。注冊端口:1024~49151,需要向IANA注冊才能使用。動態(tài)和/或私有端口:49152~65535,一般由操作系統(tǒng)分配的臨時端口號,提供給程序或客戶端使用。進程與端口定義網(wǎng)絡(luò)服務(wù)質(zhì)量進程通信與端口傳輸層基本概念6.1傳輸層概述4端口號協(xié)議應(yīng)用層協(xié)議(進程)描述20/21TCPFTP-DATA/Control文件傳輸協(xié)議-數(shù)據(jù)連接/控制連接23TCPTelnet遠(yuǎn)程登錄25TCPSMTP簡單郵件傳輸協(xié)議53TCP/UDPDNSDNS服務(wù)器67/68UDPDHCPServer/ClientDHCP服務(wù)器/客戶69UDPTFTP簡單文件傳輸協(xié)議80TCPHTTP超文本傳輸協(xié)議110TCPPOP3郵局協(xié)議版本3443TCPHTTPS安全HTTPTCP/UDP熟知端口網(wǎng)絡(luò)服務(wù)質(zhì)量進程通信與端口傳輸層基本概念6.1傳輸層概述5套接字機制(socket

):網(wǎng)絡(luò)進程通信一般采用socket機制,也稱為套接字機制。socket

描述:采用

3元組描述

<協(xié)議,IP地址,端口號>socket

原理:TCP/IP網(wǎng)絡(luò)中,每個應(yīng)用進程首先創(chuàng)建一個socket,然后對該socket賦值,并將應(yīng)用進程與socket進行綁定。兩個應(yīng)用進程間通信:用一對socket標(biāo)識,一對socket是一個5元組

<協(xié)議,本地主機IP地址,本地端口,遠(yuǎn)程主機IP地址,遠(yuǎn)程端口>每個套接字(socket)在本地關(guān)聯(lián)一個端口號。網(wǎng)絡(luò)通信通過套接字(socket)中的IP地址和端口號識別某一臺主機中的某一進程。套接字機制網(wǎng)絡(luò)服務(wù)質(zhì)量進程通信與端口傳輸層基本概念6.1傳輸層概述6通過端口號識別進程

80…80主機接收到的IP報文TCP/UDP首部IP首部通過IP地址識別主機80傳輸層應(yīng)用層網(wǎng)絡(luò)層5325端口號網(wǎng)絡(luò)服務(wù)質(zhì)量進程通信與端口傳輸層基本概念套接字工作原理193.24.26.6193.24.26.86.1傳輸層概述網(wǎng)絡(luò)服務(wù)質(zhì)量進程通信與端口傳輸層基本概念傳輸層地位傳輸層位于應(yīng)用層和網(wǎng)絡(luò)層之間基于網(wǎng)絡(luò)層提供的服務(wù)數(shù)據(jù)轉(zhuǎn)發(fā)功能,向分布式應(yīng)用程序提供通信服務(wù)。按照因特網(wǎng)的“端到端”設(shè)計原則應(yīng)用程序只運行在終端上。因此,傳輸層只運行在端節(jié)點中,網(wǎng)絡(luò)通信設(shè)備(如路由器)不存在傳輸層。從應(yīng)用程序角度看傳輸層應(yīng)提供進程之間本地通信的抽象,即運行在不同終端上的應(yīng)用進程仿佛是直接連在一起的。applicationtransportnetworkdatalinkphysicalapplicationtransportnetworkdatalinkphysicalapplicationtransportnetworkdatalinkphysical7傳輸層功能:在網(wǎng)絡(luò)層提供主機通信的基礎(chǔ)之上實現(xiàn)進程通信功能。傳輸層基本服務(wù):將主機間交付擴展到進程間交付,通過復(fù)用和分用實現(xiàn)。processsocket傳輸層從多個套接字收集數(shù)據(jù),交給網(wǎng)絡(luò)層發(fā)送(發(fā)送端)復(fù)用:傳輸層應(yīng)用層物理層鏈路層網(wǎng)絡(luò)層P2P1傳輸層應(yīng)用層物理層鏈路層網(wǎng)絡(luò)層P4傳輸層應(yīng)用層物理層鏈路層網(wǎng)絡(luò)層P3傳輸層將從網(wǎng)絡(luò)層收到的數(shù)據(jù),交付給正確的套接字(接收端)分用:6.1傳輸層概述傳輸層功能8網(wǎng)絡(luò)服務(wù)質(zhì)量進程通信與端口傳輸層基本概念6.1傳輸層概述9傳輸層與網(wǎng)絡(luò)層的區(qū)別網(wǎng)絡(luò)層傳輸層為主機間提供邏輯通信為應(yīng)用進程間提供端到端的邏輯通信體系結(jié)構(gòu)中低三層的應(yīng)用,只提供相鄰節(jié)點間通信,即路由器最高層為網(wǎng)絡(luò)層,沒有傳輸層提供端到端的通信,即主機協(xié)議棧中才有傳輸層只檢查IP數(shù)據(jù)報首部而不檢查數(shù)據(jù)部分對整個報文進行差錯檢查通過IP地址識別通信主機通過端口號識別應(yīng)用進程提供“盡力而為”的服務(wù):盡最大努力在終端間交付分組,但不提供任何承諾:不保證交付,不保證按序交付,不保證數(shù)據(jù)完整,不保證延遲,不保證帶寬等提供“有所為、有所不為”的服務(wù):通過差錯恢復(fù)、重排序等手段提供可靠、按序的交付服務(wù),但傳輸層無法提供延遲保證、帶寬保證等服務(wù)網(wǎng)絡(luò)服務(wù)質(zhì)量進程通信與端口傳輸層基本概念6.1傳輸層概述10對于面向連接的傳輸層,衡量其服務(wù)質(zhì)量(QoS)的重要指標(biāo)如下:連接建立延遲/釋放延遲、連接建立/釋放失敗概率、傳輸延遲、吞吐率、殘留誤碼率、傳輸失敗概率、優(yōu)先級、恢復(fù)功能討論傳輸層服務(wù)質(zhì)量參數(shù)需要注意的問題服務(wù)質(zhì)量參數(shù)由傳輸層用戶在請求建立連接時設(shè)定。它表明希望得到和可以接受的最低限度要求。有些情況下,傳輸層通過檢查服務(wù)質(zhì)量參數(shù),若發(fā)現(xiàn)其中某些值無法達到。則傳輸層可拒絕與目的主機連接,通知傳輸用戶連接請求失敗,并報告失敗原因。有些情況下,若傳輸層發(fā)現(xiàn)不能達到用戶希望的質(zhì)量參數(shù),但可達到稍微低一些的要求,則它會降低要求,然后再請求建立連接。傳輸層服務(wù)質(zhì)量(QoS)網(wǎng)絡(luò)服務(wù)質(zhì)量進程通信與端口傳輸層基本概念11UDP概述UDP數(shù)據(jù)報用戶數(shù)據(jù)報協(xié)議UDP(UserDatagramProtocol):在IP提供的主機通信基礎(chǔ)上通過端口機制為端用戶提供進程通信功能。是一種無連接的、無擁塞控制、無糾錯、重傳、丟包、復(fù)制或重新排序的數(shù)據(jù)包檢測功能的不可靠的傳輸層協(xié)議。UDP提供的服務(wù)進程到進程之間的報文交付報文完整性檢查(可選):檢測并丟棄出錯的報文UDP應(yīng)用場合主要應(yīng)用于實時要求高、差錯要求低的場合。如IP電話、視頻會議、流媒體數(shù)據(jù)傳輸?shù)?。此外,路由選擇協(xié)議RIP、域名解析DNS、網(wǎng)絡(luò)管理協(xié)議SNMP、網(wǎng)絡(luò)文件服務(wù)NFS、網(wǎng)絡(luò)電話VoIP等應(yīng)用也都采用UDP。6.2

用戶數(shù)據(jù)報協(xié)議UDPUDP基本概念6.2

用戶數(shù)據(jù)報協(xié)議UDP12UDP不保證傳輸質(zhì)量:不隨意丟棄數(shù)據(jù)報,盡最大努力將數(shù)據(jù)包交付到目的主機、不保證投遞的可靠性和順序、不保證帶寬及延遲要求。UDP缺少流量控制功能,當(dāng)路由器擁塞時將導(dǎo)致大量的數(shù)據(jù)包丟失。UDP具有將分片的數(shù)據(jù)包重組的功能。UDP使用端口號(識別應(yīng)用進程)與服務(wù)器進行通信。UDP沒有連接建立過程、系統(tǒng)開銷很小,非常適用于查詢/響應(yīng)等實時應(yīng)用。UDP傳輸數(shù)據(jù)是面向報文的。UDP的首部開銷小,只有8個字節(jié),比TCP的20個字節(jié)首部短。UDP特性UDP概述UDP數(shù)據(jù)報6.2

用戶數(shù)據(jù)報協(xié)議UDP13發(fā)送方應(yīng)用進程應(yīng)用層數(shù)據(jù)UDP數(shù)據(jù)UDP首部IP數(shù)據(jù)部分IP首部幀的數(shù)據(jù)部分幀首部幀尾0111111001000111010……0011001111110接收方應(yīng)用進程應(yīng)用層數(shù)據(jù)UDP數(shù)據(jù)UDP首部IP數(shù)據(jù)部分IP首部幀的數(shù)據(jù)部分幀首部幀尾0111111001000111010……0011001111110物理層數(shù)據(jù)鏈路層網(wǎng)絡(luò)層傳輸層應(yīng)用層UDP數(shù)據(jù)報傳輸過程UDP概述UDP數(shù)據(jù)報8字節(jié)20字節(jié)6.2

用戶數(shù)據(jù)報協(xié)議UDP14UDP數(shù)據(jù)報組成報文首部:攜帶協(xié)議處理需要的信息,8個字節(jié)數(shù)據(jù)部分:攜帶的上層數(shù)據(jù)UDP報文各字段含義源端口號:標(biāo)識發(fā)送端進程,取值

1~65535目的端口號:標(biāo)識接收端進程,取值

1~65535報文總長度:包含首部和數(shù)據(jù),取值

8~65535字節(jié)校驗和:可選,若不計算校驗和,該字段填入0UDP報文格式UDP概述UDP數(shù)據(jù)報UDP數(shù)據(jù)報格式32bits源端口號目的端口號應(yīng)用層數(shù)據(jù)(message)報文長度校驗和UDP首部(8字節(jié))UDP數(shù)據(jù)6.2

用戶數(shù)據(jù)報協(xié)議UDP15計算UDP校驗和時,需包含UDP偽首部、UDP首部和UDP數(shù)據(jù)3個部分UDP偽首部取自IP首部,包括:源IP地址,目的IP地址UDP協(xié)議號:取值為17UDP報文段總長度計算校驗和時包含偽首部:為避免由于IP地址錯誤等造成誤投遞UDP校驗和字段可選,若不計算校驗和,該字段填入0UDP概述UDP數(shù)據(jù)報UDP校驗和計算源IP地址(32位)目的IP地址(32位)0(8位)協(xié)議(8位)報文總長度(16位)源端口號(16位)目的端口號(16位)報文總長度(16位)校驗和(16位)UDP報文數(shù)據(jù)UDP偽首部UDP首部6.2

用戶數(shù)據(jù)報協(xié)議UDP16UDP概述UDP數(shù)據(jù)報UDP校驗和計算舉例05001715108713150TESTING填充010011001000100100000100001101001101010110000001000001110000010100000000000010001000000000000111100000100001111110000000000001101000000000000111100000000000000000000000000000000010101000100010101010011010101000100100101001110010001110000000010010110111010110110100100010100153.188.105171.214.100and17151087131500(校驗和初值)TandESandTIandNGand0(填充)求和校驗和

【例6-1】UDP報文及偽首部內(nèi)容如下:試計算校驗和?!窘狻?.2

用戶數(shù)據(jù)報協(xié)議UDP17UDP概述UDP數(shù)據(jù)報UDP例題【例6-2】一個UDP用戶數(shù)據(jù)的數(shù)據(jù)字段為8192Byte,假定IP數(shù)據(jù)報為固定首部,數(shù)據(jù)鏈路層采用以太網(wǎng)傳送。

問題:(1)應(yīng)當(dāng)劃分為幾個IP數(shù)據(jù)報片?

(2)說明每一個IP數(shù)據(jù)報數(shù)據(jù)字段長度和片偏移字段的值。UDP報文段820IP數(shù)據(jù)報以太網(wǎng)數(shù)據(jù)幀1480181500UDP報文數(shù)字字段長度8192Bytes148014801480148014808000185370555740925【解】(1)UDP數(shù)據(jù)報總長度為:8192+8=8200Byte

以太網(wǎng)數(shù)據(jù)幀的數(shù)據(jù)字段最大長度為1500Byte,其中含IP固定首部20Byte

因此,IP數(shù)據(jù)報的數(shù)據(jù)字段最大長度為1480Bytes

因為8200/1480≈5.54,向上取整,所以,需要劃分為6個IP數(shù)據(jù)報片。(2)各IP數(shù)據(jù)報片數(shù)據(jù)字段長度:前5片均為1480Byte,最后1片為800Byte各IP數(shù)據(jù)報片片偏移字段分別為:0,185,370,555,740,9256.2

用戶數(shù)據(jù)報協(xié)議UDP18UDP概述UDP數(shù)據(jù)報UDP例題【例6-3】一個應(yīng)用程序用UDP傳輸,到IP層將數(shù)據(jù)報劃分為4個數(shù)據(jù)報片發(fā)送,結(jié)果前2個數(shù)據(jù)報片丟失,后2個到達目的站。過了一段時間應(yīng)用程序重傳UDP報文,IP層仍然劃分為4個數(shù)據(jù)報片傳送,結(jié)果這次前2個到達目的站而后2個丟失。

問題:在目的站能否將這兩次傳輸?shù)?個數(shù)據(jù)報片組裝成完整的數(shù)據(jù)報?假定目的站第一次收到的后2個數(shù)據(jù)報片仍然保存在目的站的緩存中?!窘狻坎豢梢浴?/p>

因為,IP數(shù)據(jù)報重組時,僅當(dāng)標(biāo)識相同的IP數(shù)據(jù)報片才能組裝成一個IP數(shù)據(jù)報。

但IP數(shù)據(jù)報重傳時,其標(biāo)識字段會發(fā)生改變,因此,前后兩次傳輸?shù)臉?biāo)識不相同。

前2個IP數(shù)據(jù)報片標(biāo)識符與后2個IP數(shù)據(jù)報片標(biāo)識不同,因此,不能組裝成一個IP數(shù)據(jù)報。6.3

傳輸控制協(xié)議TCP19TCP概述TCP報文連接管理差錯控制流量控制擁塞控制計時器管理TCP是一個面向連接的、提供可靠的、端到端傳輸、全雙工通信服務(wù)的傳輸協(xié)議。TCP基本概念TCP提供的功能(特點)提供面向連接服務(wù):兩個應(yīng)用進程通信前,相互發(fā)送一些預(yù)備報文段完成連接建立,為本次通信創(chuàng)建數(shù)據(jù)傳輸所需的狀態(tài)(套接字、緩存、變量等)。注意:TCP連接狀態(tài)保留在端系統(tǒng)(發(fā)送方和接收方)中,即TCP只在端系統(tǒng)中運行,不在中間網(wǎng)絡(luò)元素(路由器)中運行,中間網(wǎng)絡(luò)元素不會維持TCP連接狀態(tài),它們不知TCP連接,因此它們面對的是數(shù)據(jù)報,不是連接。提供端到端的全雙工通信:僅涉及一對通信進程,可同時雙向傳輸數(shù)據(jù)。支持可靠、有序的字節(jié)流傳輸:在一對通信的進程之間提供一條理想的字節(jié)流管道,不保留報文邊界。提供差錯控制、流量控制與擁塞控制。20TCP概述TCP報文連接管理差錯控制流量控制擁塞控制計時器管理6.3

傳輸控制協(xié)議TCP源端口號、目的端口號:與UDP含義相同序號:發(fā)送端發(fā)送報文數(shù)據(jù)部分的首字節(jié)編號確認(rèn)號:接收端對已正確接收報文的確認(rèn),其值

為希望接收報文的首字節(jié)編號首部長度:TCP報文首部的長度,以4B為單位通告窗口:接收端還可以接收的字節(jié)數(shù)

校驗和:校驗完整報文(首部+數(shù)據(jù)+偽首部)6個標(biāo)志位:URG=1:數(shù)據(jù)中包含緊急數(shù)據(jù)(一般未用)ACK=1:表示確認(rèn)號有效PSH=1:表示立即發(fā)送數(shù)據(jù)(一般未用)RST=1:表示TCP連接出現(xiàn)異常,終止重啟SYN,FIN:用于連接建立和連接釋放TCP報文格式32bitsTCP首部(20~60B)TCP數(shù)據(jù)部分選項固定部分(20B)源端口號目的端口號應(yīng)用層數(shù)據(jù)(長度可變)序號確認(rèn)號通告窗口緊急指針校驗和U首部長度保留選項(長度可變)APRSFTCP固定首部字段說明21最大段長度(MSS)TCP段中可以攜帶的最大數(shù)據(jù)字節(jié)數(shù)建立連接時,每個主機可聲明自己能夠接受的MSS,缺省為536字節(jié)窗口比例因子(windowscale)建立連接時,雙方可以協(xié)商一個窗口比例因子實際接收窗口大小=windowsize*2windowscale選擇確認(rèn)(SACK)最初的TCP協(xié)議只使用累積確認(rèn)改進的TCP協(xié)議引入選擇確認(rèn),允許接收端指出缺失的數(shù)據(jù)字節(jié)TCP首部重要選項說明6.3

傳輸控制協(xié)議TCPTCP概述TCP報文連接管理差錯控制流量控制擁塞控制計時器管理22發(fā)送序號:數(shù)據(jù)載荷中第一個字節(jié)在字節(jié)流中的序號確認(rèn)號:期望接收的下一個字節(jié)的序號初始序號ISN的選取:每個TCP實體維護一個32位計數(shù)器,該計數(shù)器每4微秒增1,建立連接時從中讀取計數(shù)器當(dāng)前值(依賴具體實現(xiàn),見連接管理)初始序號ISNTCPA(發(fā)送端)TCPB(接收端)6.3

傳輸控制協(xié)議TCPTCP概述TCP報文連接管理差錯控制流量控制擁塞控制計時器管理TCP報文序號與確認(rèn)號位置數(shù)據(jù)數(shù)據(jù)23舉例1:主機A正確接收主機B發(fā)送的0~535字節(jié)報文段,等待主機B發(fā)送536及后續(xù)字節(jié)。

則主機A發(fā)送確認(rèn)報文,確認(rèn)號=536,表示期望主機B發(fā)送536及后續(xù)字節(jié)。舉例2:主機A正確接收主機B發(fā)送的0~535字節(jié)報文段,以及900~1000字節(jié)報文段,但未收到536~899字節(jié)報文段,則主機A將繼續(xù)等待536及其后字節(jié)。

則,主機A發(fā)送確認(rèn)報文,確認(rèn)號=536

因為,TCP提供累計確認(rèn),TCP只確認(rèn)數(shù)據(jù)流中至第一個丟失字節(jié)為止的字節(jié)。失序報文段處理:第3個報文段(900~1000字節(jié))失序到達。接收方丟棄失序報文段;接收方保留失序報文段,等待缺失的報文段。12305355368999001000TCP概述TCP報文連接管理差錯控制流量控制擁塞控制計時器管理6.3

傳輸控制協(xié)議TCPTCP報文序號與確認(rèn)號位置舉例1053524TCP連接建立采用3次握手機制。握手:客戶端和服務(wù)器間的報文交換。SYNbit=1,Seq=x選擇初始序號x,發(fā)送SYN(x)報文SYNbit=1,Seq=yACKbit=1,ACKnum=x+1收到SYN報文選擇初始序號y,發(fā)送SYN+ACK報文,響應(yīng)收到的SYN報文ACKbit=1,ACKnum=y+1收到SYN+ACK(x)

報文(服務(wù)器激活)發(fā)送ACK報文,響應(yīng)收到的SYN+ACK報文收到

ACK(y)報文

(客戶機激活)客戶端服務(wù)器端客戶端發(fā)送建立連接請求客戶端選擇報文的起始序號x向服務(wù)器發(fā)送SYN報文段不包含數(shù)據(jù)服務(wù)器端響應(yīng)連接建立請求服務(wù)器選擇報文的起始序號y向客戶端發(fā)送SYN+ACK報文段確認(rèn)客戶端的起始序號x不包含數(shù)據(jù)客戶端確認(rèn)連接建立請求向服務(wù)器發(fā)送ACK報文段確認(rèn)服務(wù)器的起始序號y可能包含數(shù)據(jù)TCP概述TCP報文連接管理差錯控制流量控制擁塞控制計時器管理6.3

傳輸控制協(xié)議TCPTCP連接建立

TCP連接建立(三次握手)過程25初始序號一般不從0開始:若在不同時間、同一對套接字間建立連接,則新、舊連接上的序號有重疊,舊連接上重傳的報文段會被誤以為是新連接上的報文段初始序號一般也不隨機選?。喝粼诓煌瑫r間、同一對套接字間建立連接,且新、舊連接上隨機選擇的初始序號x、y相差不大,則新、舊連接上傳輸?shù)男蛱柸匀豢赡苤丿B因此,初始序號選取要求:必須避免新、舊連接上的序號產(chǎn)生重疊TCP初始序號常用的選取方法:基于時鐘的初始序號選取算法使用主機時鐘,每隔ΔT(ΔT取較小值:4微秒,確保發(fā)送序號的增長速度,不會超過初始序號的增長速度)時間計數(shù)器加1新建一個連接時,以本地計數(shù)器值的最低32位(確保序號回繞的時間遠(yuǎn)大于分組在網(wǎng)絡(luò)中的最長壽命)作為初始序號該方法確保TCP連接的初始序號隨時間單調(diào)增長TCP概述TCP報文連接管理差錯控制流量控制擁塞控制計時器管理6.3

傳輸控制協(xié)議TCPTCP初始序號的選取

26TCP連接釋放一般是對稱活動,雙方獨立關(guān)閉連接。即一方已經(jīng)完成了關(guān)閉連接,不再發(fā)送數(shù)據(jù),另一方卻保持著雙向連接的另一半連接繼續(xù)發(fā)送數(shù)據(jù)。TCP連接釋放一般采用4次握手機制,TCP連接關(guān)閉分半關(guān)閉和全關(guān)閉2個階段。半關(guān)閉階段:當(dāng)客戶端沒有數(shù)據(jù)向服務(wù)器發(fā)送時,客戶端向服務(wù)器發(fā)出釋放連接的請求,服務(wù)器收到后向客戶端發(fā)回確認(rèn)。則客戶端關(guān)閉向服務(wù)器的TCP連接,進入半關(guān)閉狀態(tài)。此時,服務(wù)器可繼續(xù)向客戶端發(fā)送數(shù)據(jù)。全關(guān)閉階段:當(dāng)服務(wù)器也沒有數(shù)據(jù)向客戶端發(fā)送時,服務(wù)器向客戶端發(fā)出釋放連接請求,客戶端收到后向服務(wù)器發(fā)回確認(rèn)。至此服務(wù)器關(guān)閉向客戶端的TCP連接,當(dāng)服務(wù)器收到來自客戶端的確認(rèn)后,進入全關(guān)閉狀態(tài)。TCP概述TCP報文連接管理差錯控制流量控制擁塞控制計時器管理6.3

傳輸控制協(xié)議TCPTCP連接釋放27FINbit=1,ACKnum=u+1seq=wACKbit=1;ACKnum=w+1seq=u+1ACKbit=1;ACKnum=u+1seq=v半關(guān)閉:收到ACK報文(客戶端到服務(wù)器端連接關(guān)閉)等待服務(wù)器關(guān)閉收到FIN報文發(fā)送ACK報文仍可繼續(xù)發(fā)送數(shù)據(jù)被動關(guān)閉:發(fā)送FIN+ACK報文不再發(fā)送數(shù)據(jù)收到FIN+ACK報文發(fā)送ACK報文等待2倍生存期,進入全關(guān)閉狀態(tài)全關(guān)閉:收到ACK報文不再發(fā)送數(shù)據(jù)FINbit=1,seq=u不能再發(fā)送數(shù)據(jù)但仍可接收數(shù)據(jù)主動關(guān)閉:發(fā)送FIN報文

客戶端服務(wù)器端TCP概述TCP報文連接管理差錯控制流量控制擁塞控制計時器管理6.3

傳輸控制協(xié)議TCPTCP連接建立采用4次握手機制。TCP連接釋放28CLOSED:無連接狀態(tài),又稱為關(guān)閉狀態(tài)。LISTEN:偵聽狀態(tài),收到了被動打開請求,等待連接請求SYN。SYN-SENT:已發(fā)送連接請求SYN,等待ACK。SYN-RCVD:收到連接請求SYN,并發(fā)送SYN+ACK,等待ACK。ESTABLISHED:已建立連接,數(shù)據(jù)傳輸狀態(tài)。FIN-WAIT-1:一方要求關(guān)閉連接,已發(fā)出斷開請求FIN,等待ACK。FIN-WAIT-2:已收到第1個FIN的確認(rèn)ACK,等待第2個FIN。CLOSE-WAIT:收到第1個FIN,已發(fā)送ACK,等待來自應(yīng)用程序的關(guān)閉請求。TIME-WAIT:收到第2個FIN,已發(fā)送ACK,等待超時。LAST-ACK:已發(fā)送第2個FIN,等待關(guān)閉確認(rèn)ACK。TCP概述TCP報文連接管理差錯控制流量控制擁塞控制計時器管理6.3

傳輸控制協(xié)議TCPTCP的狀態(tài)29CLOSEDTIME_WAITSYN_SENTESTABLISHEDFIN_WAIT_1FIN_WAIT_2接收SYN&ACK,發(fā)送ACK發(fā)送FIN接收ACK,不發(fā)送接收FIN,發(fā)送ACK等待30s客戶請求建立連接客戶請求關(guān)閉連接CLOSEDLAST_ACKLISTENSYN_RCVDESTABISHEDCLOSE_WAIT接收SYN,發(fā)送SYN&ACK接收ACK,不發(fā)送接收FIN,發(fā)送ACK發(fā)送FIN接收ACK,不發(fā)送服務(wù)器建立一個監(jiān)聽socketTCP概述TCP報文連接管理差錯控制流量控制擁塞控制計時器管理6.3

傳輸控制協(xié)議TCPTCP的狀態(tài)變換客戶端生命周期服務(wù)器端生命周期30TCP使用差錯控制機制保證可靠傳輸,包括檢測出錯、丟失、失序和重復(fù)的報文段,以及檢測出差錯后糾正差錯的機制。TCP的差錯控制機制:確認(rèn)和重傳。確認(rèn)機制:采用“累計確認(rèn)”機制。接收方確認(rèn)已收到的最長的、連續(xù)的字節(jié)計數(shù)。TCP報文的每個確認(rèn)序號字段指出下一個希望接收的字節(jié),它也是對已經(jīng)接收到的所有字節(jié)的確認(rèn)。超時重傳機制:發(fā)送方TCP為了恢復(fù)丟失或者損壞的報文段,每發(fā)送一個TCP報文段,就啟動一個重傳定時器,如果在規(guī)定的時間內(nèi)沒有收到接收方TCP返回的確認(rèn)報文,則重傳定時器超時,發(fā)送方就重傳該TCP報文段。TCP概述TCP報文連接管理差錯控制流量控制擁塞控制計時器管理6.3

傳輸控制協(xié)議TCPTCP差錯控制概述31報文段出錯、丟失、重復(fù)、亂序處理。報文段出錯、丟失處理如圖所示。報文段重復(fù):丟棄重復(fù)的報文段。報文段亂序:接收方對亂序報文段不確認(rèn),直到收到亂序報文段之前的所有報文段為止。確認(rèn)報文段丟失:TCP的確認(rèn)機制采用累計確認(rèn)方法。報文段出錯或丟失處理發(fā)送方接收方seq=1201;Len=200Byteseq=1401;Len=200Byteseq=1601;Len=200Byte報文段1報文段2報文段3ACKnum=1601報文段3損壞或丟失seq=1601;Len=200Byte報文段3重傳超時ACKnum=1801時間時間TCP概述TCP報文連接管理差錯控制流量控制擁塞控制計時器管理6.3

傳輸控制協(xié)議TCPTCP差錯處理過程32TCP流量控制機制:滑動窗口。26273132333435373839364041424344454647495051485253545556282930窗口后沿窗口前沿已發(fā)送已確認(rèn)序號B期望收到的序號不允許發(fā)送的序號收縮前移前移允許發(fā)送的序號A的

發(fā)送窗口=20TCP概述TCP報文連接管理差錯控制流量控制擁塞控制計時器管理6.3

傳輸控制協(xié)議TCPTCP流量控制TCP滑動窗口:大小不固定,由TCP報文的通告窗口通告。通告窗口大小:接收方根據(jù)分配的緩沖區(qū)大小為通告窗口選擇一個合適值,該值就是接收窗口值(rwnd),即

通告窗口=rwnd。發(fā)送窗口構(gòu)造:發(fā)送方根據(jù)通告窗口大小構(gòu)造,滿足:發(fā)送窗口

通告窗口【例6-3】主機A根據(jù)主機B給出的通告窗口值構(gòu)造自己的發(fā)送窗口大小。假定A收到B發(fā)送的ACK報文,其中通告窗口=20(Byte),ACKnum=31。則:主機A構(gòu)造發(fā)送窗口過程如下圖所示。33【例6-4】在【例6-3】基礎(chǔ)上,假定主機A發(fā)送了序號為31~41的數(shù)據(jù),但發(fā)送窗口未改變,主機B收到的數(shù)據(jù)中,32~33號數(shù)據(jù)未按序收到。

試畫出:主機A發(fā)送窗口內(nèi)部變化和主機B接收窗口狀態(tài)。26273132333435373839364041424344454647495051485253545556282930窗口后沿窗口前沿P1不允許發(fā)送序號允許發(fā)送的序號A的發(fā)送窗口位置不變A的可用窗口已發(fā)送已確認(rèn)P2P3已發(fā)送未確認(rèn)26273132333435373839364041424344454647495051485253545556282930窗口后沿窗口前沿未按序到達不允許接收的序號允許接收的序號B的接收窗口已發(fā)送確認(rèn)報文并交付主機TCP概述TCP報文連接管理差錯控制流量控制擁塞控制計時器管理6.3

傳輸控制協(xié)議TCPTCP流量控制34網(wǎng)絡(luò)擁塞的定義:由于報文到達路由器的速率大于路由器轉(zhuǎn)發(fā)速率,使得路由器中排隊報文過多,緩沖區(qū)溢出,路由器丟棄報文,導(dǎo)致網(wǎng)絡(luò)性能下降的現(xiàn)象。網(wǎng)絡(luò)擁塞產(chǎn)生的原因:對資源的需求>可用資源網(wǎng)絡(luò)擁塞造成的后果:丟包:由路由器緩存溢出造成分組延遲增大:鏈路接近滿載造成網(wǎng)絡(luò)擁塞使大量網(wǎng)絡(luò)資源被用于:重傳丟失的分組、(不必要地)重傳延遲過大的分組,導(dǎo)致網(wǎng)絡(luò)性能下降。TCP概述TCP報文連接管理差錯控制流量控制擁塞控制計時器管理6.3

傳輸控制協(xié)議TCP網(wǎng)絡(luò)擁塞概念35擁塞控制:網(wǎng)絡(luò)節(jié)點采取措施避免擁塞發(fā)生或?qū)σ寻l(fā)生的擁塞做出響應(yīng)。擁塞控制機制包括兩個部分:擁塞避免和擁塞控制擁塞避免:“主動”機制,目標(biāo)是使網(wǎng)絡(luò)運行在高吞吐量、低延遲的狀態(tài),避免網(wǎng)絡(luò)進入擁塞狀態(tài)。擁塞控制:“響應(yīng)”機制,功能是將網(wǎng)絡(luò)從擁塞狀態(tài)恢復(fù)出來,消除已經(jīng)發(fā)生的擁塞,或者避免擁塞的發(fā)生。衡量擁塞控制機制的有效性度量指標(biāo)主要包括:吞吐量、利用率、效率、延遲、隊列長度、有效吞吐量等。TCP概述TCP報文連接管理差錯控制流量控制擁塞控制計時器管理6.3

傳輸控制協(xié)議TCP擁塞控制概念36飽和0吞吐量網(wǎng)絡(luò)負(fù)載理想的擁塞控制實際的擁塞控制無擁塞控制死鎖輕度擁塞擁塞TCP概述TCP報文連接管理差錯控制流量控制擁塞控制計時器管理6.3

傳輸控制協(xié)議TCP負(fù)載、吞吐量及擁塞控制的關(guān)系37TCP實現(xiàn)擁塞控制需要解決以下3個問題:發(fā)送方如何感知網(wǎng)絡(luò)擁塞?利用丟包事件感知擁塞:擁塞造成丟包和分組延遲增大,丟包事件包括:重傳定時器超時、發(fā)送方收到3個重復(fù)的ACK。發(fā)送方采用什么機制來限制發(fā)送速率?使用擁塞窗口cwnd限制發(fā)送速率:待發(fā)送字節(jié)數(shù)

cwnd注意:cwnd隨發(fā)送方感知的網(wǎng)絡(luò)擁塞程度而變化。發(fā)送方感知到網(wǎng)絡(luò)擁塞后,采取什么策略調(diào)節(jié)發(fā)送速率?TCP概述TCP報文連接管理差錯控制流量控制擁塞控制計時器管理6.3

傳輸控制協(xié)議TCPTCP擁塞控制原理TCP端到端擁塞控制:發(fā)送方根據(jù)自己感知的擁塞程度,限制其發(fā)送速率。38發(fā)送方感知到擁塞,可采取

擁塞窗口調(diào)節(jié)(AIMD)策略調(diào)節(jié)發(fā)送速率。cwnd呈鋸齒狀變化XXXX發(fā)送速率時間加法增大乘法減小TCP概述TCP報文連接管理差錯控制流量控制擁塞控制計時器管理6.3

傳輸控制協(xié)議TCPTCP擁塞控制原理加法增大(AdditiveIncrease)若無丟包,每經(jīng)過一個RTT,將cwnd增大一個MSS,直到檢測到丟包目的:緩慢增大發(fā)送速率,避免振蕩乘法減小(MultiplicativeDecrease)發(fā)送方檢測到丟包后,將cwnd的大小減半(但不能小于一個MSS)目的:迅速減小發(fā)送速率,緩解擁塞TCP擁塞控制原理39慢啟動基本思想:當(dāng)主機開始發(fā)送數(shù)據(jù)時,網(wǎng)絡(luò)負(fù)荷情況不明,若立即將大量數(shù)據(jù)發(fā)送到網(wǎng)絡(luò),有可能引起網(wǎng)絡(luò)擁塞,因此,一般采用試探方式由小到大逐漸增大發(fā)送窗口(擁塞窗口數(shù)值)。慢啟動策略:初始cwnd=1,每經(jīng)過一個RTT,將cwnd加倍慢啟動的實施:每收到一個ACK段,cwnd增加一個MSS只要發(fā)送窗口允許,發(fā)送端立即發(fā)送下一個報文段慢啟動特點:以一個很低的速率開始,按指數(shù)增大發(fā)送速率。

慢啟動傳輸過程示意圖

1segmentRTTtime2segments4segmentstimecwnd=1cwnd=2cwnd=4cwnd=3TCP概述TCP報文連接管理差錯控制流量控制擁塞控制計時器管理6.3

傳輸控制協(xié)議TCPTCP擁塞控制:慢啟動主機A主機Bcwnd=6cwnd=5cwnd=8cwnd=740擁塞避免的基本思想cwnd線性增長(加法增大)擁塞避免的實現(xiàn)方法慢啟動使擁塞窗口一直成倍增長,為避免擁塞窗口cwnd增長過快,設(shè)置一個慢啟動門限值(又稱為閾值)ssthresh,設(shè)初始ssthresh=16。當(dāng)cwnd≥ssthresh時,TCP傳輸進入擁塞避免階段。cwnd不再加倍,改為線性增長,一旦出現(xiàn)數(shù)據(jù)超時,則重置cwnd=1,再次開始慢啟動。擁塞避免算法示意圖主機A8segments主機Btime16segments17segmentstimecwnd=8cwnd=16cwnd=17cwnd=18TCP概述TCP報文連接管理差錯控制流量控制擁塞控制計時器管理6.3

傳輸控制協(xié)議TCPTCP擁塞控制:擁塞避免………………………………慢啟動cwnd=ssthresh進入擁塞避免41初始設(shè)置:cwnd=1,ssthresh=Xssthresh是從慢啟動轉(zhuǎn)為擁塞避免的分水嶺cwnd<ssthresh時,執(zhí)行慢啟動cwnd≥ssthresh時,執(zhí)行擁塞避免擁塞避免階段,擁塞窗口線性增長每當(dāng)收到ACK,

cwnd=cwnd+MSS*(MSS/cwnd)若擁塞發(fā)生,則報文將被丟棄(丟包),重傳定時器超時,進入擁塞解決階段設(shè)置新門限值:ssthresh=cwnd/2設(shè)置擁塞窗口:cwnd=1,重新執(zhí)行慢啟動TCP概述TCP報文連接管理差錯控制流量控制擁塞控制計時器管理6.3

傳輸控制協(xié)議TCPTCP慢啟動-擁塞避免機制42慢啟動慢啟動擁塞避免擁塞避免傳輸輪次024861012161418202224指數(shù)增加線性增加ssthresh=16更新后ssthresh=12發(fā)生網(wǎng)絡(luò)擁塞超時重傳進入擁塞避免進入擁塞避免04812162024cwnd線性增加指數(shù)增加TCP概述TCP報文連接管理差錯控制流量控制擁塞控制計時器管理6.3

傳輸控制協(xié)議TCPTCP慢啟動-擁塞避免機制43快速重傳:收到連續(xù)3個重復(fù)ACK時,啟動快速重傳。設(shè)置門限值ssthresh=cwnd/2設(shè)置擁塞窗口

cwnd=ssthresh或

cwnd=ssthresh+3執(zhí)行快速恢復(fù)快速重傳與快速恢復(fù)示意圖04812162024慢啟動快速恢復(fù)傳輸輪次擁塞避免cwnd024861012161418202224指數(shù)增加(指數(shù)增大)ssthresh=16更新后

ssthresh=12收到3個重復(fù)ACK執(zhí)行快速重傳進入擁塞避免快速恢復(fù)ssthresh+3擁塞避免線性增加擁塞避免線性增加TCP概述TCP報文連接管理差錯控制流量控制擁塞控制計時器管理6.3

傳輸控制協(xié)議TCPTCP快速重傳和快速恢復(fù)44重傳計時器:為了解決丟失或丟棄報文段問題。TCP設(shè)置重傳計時器,確定報文段是否需要重傳。當(dāng)TCP發(fā)送報文段時,創(chuàng)建該報文段的重傳計時器。堅持(持續(xù))計時器:為了打破TCP傳輸過程中的死鎖問題,發(fā)送方TCP對建立的每一個TCP連接設(shè)置一個堅持計時器。?;钣嫊r器:為了解決TCP連接長時間空閑的問題,服務(wù)器上的TCP引入了?;钣嫊r器。等待計時器:為了避免釋放連接出錯,TCP設(shè)置了等待計時器。當(dāng)被動釋放傳輸連接的一方發(fā)出同意釋放傳輸連接的報文段時,打開等待計時器。TCP概述TCP報文連接管理差錯控制流量控制擁塞控制計時器管理6.3

傳輸控制協(xié)議TCPTCP計時器45【例6-5】主機A向主機B利用TCP傳送

512字節(jié)數(shù)據(jù)。假設(shè):1)發(fā)送窗口為100字節(jié)2)TCP報文段每次傳送100字節(jié)數(shù)據(jù)3)發(fā)送端和接收端的起始序號分別選為100和200。問題:試畫出TCP工作示意圖(交互圖)。要求畫出連接建立到連接釋放。tSYN=1,Seq=100t主機A主機B因特網(wǎng)SYN=1,ACK=1,Seq=200,ack=101ACK=1,Seq=101,ack=201連接建立Seq=102,ack=201,data=100Seq=201,ack=202數(shù)據(jù)傳輸Seq=202,ack=202,data=100Seq=202,ack=302Seq=302,ack=203,data=100Seq=203,ack=402Seq=402,ack=204,data=100Seq=204,ack=502Seq=502,ack=205,data=100Seq=205,ack=602Seq=602,ack=206,data=12Seq=206,ack=614tFIN=1,Seq=614,ack=207t主機A主機B因特網(wǎng)ACK=1,Seq=207,ack=615ACK=1,Seq=615,ack=209連接釋放FIN=1,ACK=1,Seq=208,ack=6156.3

傳輸控制協(xié)議TCP例題46【例6-6】主機A向主機B連續(xù)發(fā)送了2個TCP報文段,其序號分別為70和100。

問題:(1)第1個報文段攜帶了多少個字節(jié)的數(shù)據(jù)?(2)主機B收到第1個報文段后發(fā)回的確認(rèn)中的確認(rèn)號應(yīng)當(dāng)是多少?(3)如果主機B收到第2個報文段后發(fā)回的確認(rèn)中的確認(rèn)號是180,則A發(fā)送的第2個報文段中的數(shù)據(jù)有多少字節(jié)?(4)如果A發(fā)送的第1個報文段丟失了,但第2個報文段到達了B,B在第2個報文段到達后向A發(fā)送確認(rèn),則這個確認(rèn)號應(yīng)為多少?tSeq=70t主機A主機B【解】(1)攜帶30字節(jié)數(shù)據(jù)(2)確認(rèn)號為100(3)80字節(jié)數(shù)據(jù)(4)確認(rèn)號為70Seq=100數(shù)據(jù)=?ack=?因特網(wǎng)數(shù)據(jù)=?ack=180tSeq=70t主機A主機BSeq=100因特網(wǎng)ack=?丟失6.3

傳輸控制協(xié)議TCP例題47【例6-7】已知主機A收到主機B發(fā)來的確認(rèn)報文段,其中窗口字段值為15Byte,確認(rèn)序號為31。應(yīng)用滑動窗口機制完成以下各問題:(1)構(gòu)造主機A的發(fā)送窗口。(2)若T1時刻主機A按從小到大的順序發(fā)送11Byte數(shù)據(jù),試畫出此時主機A的發(fā)送窗口,并指出可用窗口的范圍。(3)若T2時刻主機A收到了對T1時刻發(fā)送出去的前5Byte數(shù)據(jù)的確認(rèn),試畫出此時主機A的發(fā)送窗口和可用窗口。31323334353637383940414243444546474849505152(1)主機A的發(fā)送窗口15Byte(2)T1時刻【解】31323334353637383940414243444546474849505152主機A的發(fā)送窗口15Byte已發(fā)送未確認(rèn)11Byte可用窗口4Byte(3)T2時刻31323334353637383940414243444546474849505152主機A的發(fā)送窗口15Byte已確認(rèn)數(shù)據(jù)5Byte已發(fā)送未確認(rèn)6Byte可用窗口9Byte主機A的發(fā)送窗口15Byte6.3

傳輸控制協(xié)議TCP例題48【例6-8】設(shè)TCP門限值

ssthresh的初始值為8(單位為報文段)。當(dāng)擁塞窗口上升到12時網(wǎng)絡(luò)發(fā)生了超時,TCP使用慢開始和擁塞避免。試分別求出第1次~第15次傳輸?shù)母鲹砣翱诖笮 !窘狻繐砣翱诖笮》謩e為:1,2,4,8,9,10,11,12,1,2,4,6,7,8,9。傳輸輪次12345678

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論