第5運(yùn)輸層ppt課件_第1頁
第5運(yùn)輸層ppt課件_第2頁
第5運(yùn)輸層ppt課件_第3頁
第5運(yùn)輸層ppt課件_第4頁
第5運(yùn)輸層ppt課件_第5頁
已閱讀5頁,還剩103頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、第 5 章 運(yùn)輸層運(yùn)輸層是整個網(wǎng)絡(luò)體系結(jié)構(gòu)中的關(guān)鍵層次之一,本章主要討論tcp/ip體系中運(yùn)輸層最重要的兩個協(xié)議udp和tcp,tcp比udp復(fù)雜的多。5.1 運(yùn)輸層協(xié)議概述5.1.1 進(jìn)程之間的通信n進(jìn)程是正在運(yùn)行的一個程序。n當(dāng)網(wǎng)絡(luò)的邊緣部分中的兩個主機(jī)使用網(wǎng)絡(luò)的核心部分的功能進(jìn)行端到端的通信時,只有位于網(wǎng)絡(luò)邊緣部分的主機(jī)的協(xié)議棧才有運(yùn)輸層,而網(wǎng)絡(luò)核心部分中的路由器在轉(zhuǎn)發(fā)分組時都只用到下三層的功能,如下圖所示: 運(yùn)輸層為相互通信的應(yīng)用進(jìn)程提供了邏輯通信 54321運(yùn)輸層提供應(yīng)用進(jìn)程間的邏輯通信主機(jī) a主機(jī) b應(yīng)用進(jìn)程應(yīng)用進(jìn)程路由器 1路由器 2ap1lan2wanap2ap3ap4ip 層

2、lan1ap1ap2ap4端口端口54321ip 協(xié)議的作用范圍運(yùn)輸層協(xié)議 tcp 和 udp 的作用范圍ap3應(yīng)用進(jìn)程之間的通信 運(yùn)輸層的一個很重要的功能就是復(fù)用和分用。應(yīng)用層不同進(jìn)程的報文通過不同的端口向下交到運(yùn)輸層,再往下就共用網(wǎng)絡(luò)層提供的服務(wù)。 “運(yùn)輸層提供應(yīng)用進(jìn)程間的邏輯通信”。“邏輯通信”的意思是:運(yùn)輸層之間的通信好像是沿水平方向傳送數(shù)據(jù)。但事實(shí)上這兩個運(yù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)n當(dāng)運(yùn)輸層采用面向連接的t

3、cp協(xié)議時,盡管下面的網(wǎng)絡(luò)是不可靠的,但這種邏輯通信信道就相當(dāng)于一條全雙工的可靠信道。 n但當(dāng)運(yùn)輸層采用無連接的udp協(xié)議時,這種邏輯通信信道仍然是一條不可靠信道。tcp/ip 的運(yùn)輸層有兩個不同的協(xié)議:(1) 用戶數(shù)據(jù)報協(xié)議 udp (user datagram protocol)(2) 傳輸控制協(xié)議 tcp (transmission control protocol)5.1.2 運(yùn)輸層的兩個主要協(xié)議 tcp/ip 體系中的運(yùn)輸層協(xié)議 tcpudpip應(yīng)用層與各種網(wǎng)絡(luò)接口運(yùn)輸層tcp 與 udp nudp 在傳送數(shù)據(jù)之前不需要先建立連接。對方的運(yùn)輸層在收到 udp 報文后,不需要給出任何確

4、認(rèn)。雖然 udp 不提供可靠交付,但在某些情況下 udp 是一種最有效的工作方式。ntcp 則提供面向連接的服務(wù)。tcp 不提供廣播或多播服務(wù)。由于 tcp 要提供可靠的、面向連接的運(yùn)輸服務(wù),因此不可避免地增加了許多的開銷。這不僅使協(xié)議數(shù)據(jù)單元的首部增大很多,還要占用許多的處理機(jī)資源。 使用udp和tcp協(xié)議的各種應(yīng)用和應(yīng)用層協(xié)議n如表51所示:應(yīng)用應(yīng)用應(yīng)用層協(xié)議應(yīng)用層協(xié)議運(yùn)輸層協(xié)議運(yùn)輸層協(xié)議名字轉(zhuǎn)換名字轉(zhuǎn)換dnsudp文件傳送文件傳送tftpudp路由選擇協(xié)議路由選擇協(xié)議ripudpip地址配置地址配置bootp,dhcpudp網(wǎng)絡(luò)管理網(wǎng)絡(luò)管理snmpudp遠(yuǎn)程文件服務(wù)器遠(yuǎn)程文件服務(wù)器nfs

5、udpip電話電話專用協(xié)議專用協(xié)議udp流式多媒體通信流式多媒體通信專用協(xié)議專用協(xié)議udp電子郵件電子郵件smtptcp遠(yuǎn)程終端接入遠(yuǎn)程終端接入telnettcp萬維網(wǎng)萬維網(wǎng)httptcp文件文件ftptcp5.1.3 運(yùn)輸層的端口 n復(fù)用:應(yīng)用層所有的應(yīng)用進(jìn)程都可以通過運(yùn)輸層再傳送到ip層,這就是復(fù)用。n分用:運(yùn)輸層從ip層收到數(shù)據(jù)后必須交付給指明的應(yīng)用進(jìn)程,這就是分用。n在單個計算機(jī)中的進(jìn)程是用進(jìn)程標(biāo)識符來標(biāo)志的,但是在因特網(wǎng)環(huán)境下,用計算機(jī)操作系統(tǒng)所指派的這種進(jìn)程標(biāo)識符來標(biāo)志運(yùn)行在應(yīng)用層的各種應(yīng)用進(jìn)程是不行的。n這是因?yàn)樵谝蛱鼐W(wǎng)上使用的計算機(jī)的操作系統(tǒng)種類很多,而不同的操作系統(tǒng)又使用不同

6、格式的進(jìn)程標(biāo)識符。n為了使運(yùn)行不同操作系統(tǒng)的計算機(jī)的應(yīng)用進(jìn)程能夠互相通信,就必須用統(tǒng)一的方法對 tcp/ip 體系的應(yīng)用進(jìn)程進(jìn)行標(biāo)志。 n方法就是在運(yùn)輸層使用協(xié)議端口號(protocol port number),或簡稱為端口(port)。n這就是說:雖然通信的終點(diǎn)是應(yīng)用進(jìn)程,但我們只要把要傳送的報文交到目的主機(jī)的某一個合適的目的端口,剩下的工作(即最后交付給目的進(jìn)程)就由 tcp 來完成。軟件端口與硬件端口n在協(xié)議棧層間的抽象的協(xié)議端口是軟件端口。n路由器或交換機(jī)上的端口是硬件端口。n硬件端口是不同硬件設(shè)備進(jìn)行交互的接口,而軟件端口是應(yīng)用層的各種協(xié)議進(jìn)程與運(yùn)輸實(shí)體進(jìn)行層間交互的一種地址。 t

7、cp 的端口 n端口用一個 16 位端口號進(jìn)行標(biāo)志。n端口號只具有本地意義,即端口號只是為了標(biāo)志本計算機(jī)應(yīng)用層中的各進(jìn)程。在因特網(wǎng)中不同計算機(jī)的相同端口號是沒有聯(lián)系的。運(yùn)輸層的端口號分為兩大類 1、服務(wù)器端使用的端口號:(1)熟知端口號或系統(tǒng)端口號,數(shù)值一般為 01023。(2)登記端口號,數(shù)值為102449151,為沒有熟知端口號的應(yīng)用程序使用的。使用這個范圍的端口號必須在 iana 登記,以防止重復(fù)。2、客戶端使用的端口號:叫客戶端口號或短暫端口號,數(shù)值為4915265535,留給客戶進(jìn)程選擇暫時使用。 5.2 用戶數(shù)據(jù)報協(xié)議 udp 5.2.1 udp 概述 nudp 只在 ip 數(shù)據(jù)報

8、服務(wù)之上增加了很少一點(diǎn)的功能,即:n復(fù)用n分用n差錯檢測udp 的主要特點(diǎn) 1、udp 是無連接的,即發(fā)送數(shù)據(jù)之前不需要建立連接。2、udp 使用盡最大努力交付,即不保證可靠交付,同時也不使用擁塞控制。3、udp 是面向報文的。udp 的主要特點(diǎn)(續(xù))3、面向報文的 udpn發(fā)送方 udp 對應(yīng)用程序交下來的報文,在添加首部后就向下交付 ip 層。udp 對應(yīng)用層交下來的報文,既不合并,也不拆分,而是保留這些報文的邊界。n應(yīng)用層交給 udp 多長的報文,udp 就照樣發(fā)送,即一次發(fā)送一個報文。n接收方 udp 對 ip 層交上來的 udp 用戶數(shù)據(jù)報,在去除首部后就原封不動地交付上層的應(yīng)用進(jìn)程

9、,一次交付一個完整的報文。n應(yīng)用程序必須選擇合適大小的報文。udp 的主要特點(diǎn)(續(xù))3、面向報文的 udpip 數(shù)據(jù)報的數(shù)據(jù)部分ip 首部ip 層udp 首部udp 用戶數(shù)據(jù)報的數(shù)據(jù)部分運(yùn)輸層應(yīng)用層報文應(yīng)用層udp 的主要特點(diǎn)(續(xù))4、udp 沒有擁塞控制,很適合多媒體通信的要求。 5、udp 支持一對一、一對多、多對一和多對多的交互通信。6、udp 的首部開銷小,只有 8 個字節(jié)。5.2.2 udp 的首部格式 偽首部源端口目的端口長 度檢驗(yàn)和數(shù) 據(jù)首 部udp長度源 ip 地址目的 ip 地址017ip 數(shù)據(jù)報字節(jié)44112122222字節(jié)發(fā)送在前數(shù) 據(jù)首 部udp 用戶數(shù)據(jù)報udp 基于

10、端口的分用 ip 層udp 數(shù)據(jù)報到達(dá)端口 2端口 3端口 1udp 分用5.3 傳輸控制協(xié)議 tcp 概述 5.3.1 tcp 最主要的特點(diǎn) 1、tcp 是面向連接的運(yùn)輸層協(xié)議。2、每一條 tcp 連接只能有兩個端點(diǎn)(endpoint),每一條 tcp 連接只能是點(diǎn)對點(diǎn)的(一對一)。 3、tcp 提供可靠交付的服務(wù)。4、tcp 提供全雙工通信。5、面向字節(jié)流:其含義是: 7 68h含義:雖然應(yīng)用程序和tcp的交互是一次一個數(shù)據(jù)塊,但tcp把應(yīng)用程序交下來的數(shù)據(jù)看成僅僅是一連串的無結(jié)構(gòu)的字節(jié)流。tcp 并不知道字節(jié)流的含義。 發(fā)送 tcp 報文段發(fā)送方接收方把字節(jié)寫入發(fā)送緩存從接收緩存讀取字節(jié)

11、應(yīng)用進(jìn)程應(yīng)用進(jìn)程1230181716151419202145131211h109 h加上 tcp 首部構(gòu)成 tcp 報文段tcptcp字節(jié)流字節(jié)流h表示 tcp 報文段的首部x表示序號為 x 的數(shù)據(jù)字節(jié)tcp 連接應(yīng)當(dāng)注意ntcp 連接是一條虛連接而不是一條真正的物理連接。ntcp 對應(yīng)用進(jìn)程一次把多長的報文發(fā)送到tcp 的緩存中是不關(guān)心的。ntcp 根據(jù)對方給出的窗口值和當(dāng)前網(wǎng)絡(luò)擁塞的程度來決定一個報文段應(yīng)包含多少個字節(jié)(udp 發(fā)送的報文長度是應(yīng)用進(jìn)程給出的)。ntcp 可把太長的數(shù)據(jù)塊劃分短一些再傳送。tcp 也可等待積累有足夠多的字節(jié)后再構(gòu)成報文段發(fā)送出去。 5.3.2 tcp 的連接

12、 ntcp 把連接作為最基本的抽象。每一條 tcp 連接有兩個端點(diǎn)。端點(diǎn)是什么?ntcp 連接的端點(diǎn)不是主機(jī),不是主機(jī)的ip 地址,不是應(yīng)用進(jìn)程,也不是運(yùn)輸層的協(xié)議端口。tcp 連接的端點(diǎn)叫做套接字(socket)或插口。什么是套接字:n 端口號拼接到(contatenated with) ip 地址即構(gòu)成了套接字。即: 套接字 socket = (ip地址: 端口號) (5-1)如:192,168,4,5:80n每一條 tcp 連接唯一地被通信兩端的兩個端點(diǎn)(即兩個套接字)所確定。即: tcp 連接 := socket1, socket2 = (ip1: port1), (ip2: port

13、2) (5-2)nendn上節(jié)課講了udp和tcp的區(qū)別:nudp是面向報文的,tcp是面向字節(jié)流的,所謂面向報文指的是udp對應(yīng)用層交下來的報文,既不合并,也不拆分,而是保留這些報文的邊界。面向字節(jié)流指的是雖然應(yīng)用程序和tcp的交互是一次一個數(shù)據(jù)塊(大小不等),但tcp把應(yīng)用程序交下來的數(shù)據(jù)看成僅僅是一連串的無結(jié)構(gòu)的字節(jié)流。tcp根據(jù)對方給出的窗口值和當(dāng)前網(wǎng)絡(luò)擁塞程度來決定一個報文段應(yīng)包含多少個字節(jié),如果應(yīng)用進(jìn)程傳送到tcp緩存的數(shù)據(jù)塊太長,tcp可以把它劃分的短一些。如果應(yīng)用進(jìn)程一次只發(fā)來一個字節(jié),tcp也可以等待積累到足夠多的字節(jié)后再構(gòu)成報文段發(fā)送出去。5.4 可靠傳輸?shù)墓ぷ髟砦覀冎?/p>

14、,tcp發(fā)送的報文是交給ip層傳送的,但ip層提供的是盡最大努力交付,也就是說ip層提供的是不可靠傳輸,因此,tcp必須采用適當(dāng)?shù)拇胧┎拍苁沟脙蓚€運(yùn)輸層之間的通信變得可靠。理想的傳輸條件有兩個:(1)傳輸信道不產(chǎn)生差錯(2)不管發(fā)送發(fā)以多快的速度發(fā)送數(shù)據(jù),接收方總是來得及處理收到的數(shù)據(jù)。但實(shí)際的網(wǎng)絡(luò)并不具備以上條件。我們可以使用一些可靠傳輸協(xié)議,當(dāng)出現(xiàn)差錯時讓發(fā)送方重傳,當(dāng)接收方來不及處理收到的數(shù)據(jù)時,及時告訴發(fā)送方適當(dāng)降低發(fā)送速率。5.4.1 停止等待協(xié)議 “停止等待”就是每發(fā)送完一個分組就停止發(fā)送,等待對方的確認(rèn)。1、無差錯情況和超時重傳(a) 無差錯情況a發(fā)送 m1確認(rèn) m1b發(fā)送 m2

15、發(fā)送 m3確認(rèn) m2確認(rèn) m3a發(fā)送 m1b超時重傳 m1發(fā)送 m2確認(rèn) m1丟棄有差錯的報文(b) 超時重傳tttt2、出現(xiàn)差錯時注意三點(diǎn)(1)在發(fā)送完一個分組后,必須暫時保留已發(fā)送的分組的副本,收到確認(rèn)后清除。(2)分組和確認(rèn)分組都必須進(jìn)行編號。(3)超時計時器設(shè)置的重傳時間應(yīng)當(dāng)比數(shù)據(jù)在分組傳輸?shù)钠骄禃r間更長一些。 3、確認(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可靠通信的實(shí)現(xiàn)n使用上述的確認(rèn)和

16、重傳機(jī)制,我們就可以在不可靠的傳輸網(wǎng)絡(luò)上實(shí)現(xiàn)可靠的通信。n這種可靠傳輸協(xié)議常稱為自動重傳請求arq (automatic repeat request)。narq 表明重傳的請求是自動進(jìn)行的。接收方不需要請求發(fā)送方重傳某個出錯的分組 。4、信道利用率 n停止等待協(xié)議的優(yōu)點(diǎn)是簡單,但缺點(diǎn)是信道利用率太低。n利用率td /td+rtt+tatdrttatd + rtt + tab分組確認(rèn)tt分組確認(rèn)為了提高信道利用率,發(fā)送方可以采用流水線傳輸,如下圖所示:為了提高信道利用率,發(fā)送方可以采用流水線傳輸,如下圖所示:流水線傳輸 n發(fā)送方可連續(xù)發(fā)送多個分組,不必每發(fā)完一個分組就停頓下來等待對方的確認(rèn)。n

17、由于信道上一直有數(shù)據(jù)不間斷地傳送,這種傳輸方式可獲得很高的信道利用率。 b分組ttaackntcp 連接的每一端都必須設(shè)有兩個窗口:一個發(fā)送窗口和一個接收窗口。n tcp 兩端的四個窗口經(jīng)常處于動態(tài)變化之中。ntcp連接的往返時間 rtt 也不是固定不變的。需要使用特定的算法估算較為合理的重傳時間。 5.4.2 連續(xù) arq 協(xié)議 123456789101112(a) 發(fā)送方維持發(fā)送窗口(發(fā)送窗口是 5)發(fā)送窗口(b) 收到一個確認(rèn)后發(fā)送窗口向前滑動向前123456789101112發(fā)送窗口累積確認(rèn) n接收方一般采用累積確認(rèn)的方式。即不必對收到的分組逐個發(fā)送確認(rèn),而是對按序到達(dá)的最后一個分組發(fā)

18、送確認(rèn),這樣就表示:到這個分組為止的所有分組都已正確收到了。n累積確認(rèn)有的優(yōu)點(diǎn)是:容易實(shí)現(xiàn),即使確認(rèn)丟失也不必重傳。缺點(diǎn)是:不能向發(fā)送方反映出接收方已經(jīng)正確收到的所有分組的信息。例如:go-back-n(回退 n) n如果發(fā)送方發(fā)送了前 5 個分組,而中間的第 3 個分組丟失了。這時接收方只能對前兩個分組發(fā)出確認(rèn)。發(fā)送方無法知道后面三個分組的下落,而只好把后面的三個分組都再重傳一次。這就叫做 go-back-n(回退 n),表示需要再退回來重傳已發(fā)送過的 n 個分組。n可見當(dāng)通信線路質(zhì)量不好時,連續(xù) arq 協(xié)議會帶來負(fù)面的影響。 ntcp雖然是面向字節(jié)流的,但tcp傳送的數(shù)據(jù)單元卻是報文段。

19、一個tcp報文段分為首部和數(shù)據(jù)兩個部分。n首部的前20個字節(jié)是固定的,后面的4n字節(jié)是根據(jù)需要增加的選項(xiàng)(n是整數(shù)),如下圖所示:5.5 tcp 報文段的首部格式 tcp首部20 字節(jié)的固定首部目 的 端 口數(shù)據(jù)偏移檢 驗(yàn) 和選 項(xiàng) (長 度 可 變)源 端 口序 號緊 急 指 針窗 口確 認(rèn) 號保 留fin32 位synrstpshackurg位 0 8 16 24 31填 充tcp 數(shù)據(jù)部分tcp 首部tcp 報文段ip 數(shù)據(jù)部分ip 首部發(fā)送在前tcp首部20字節(jié)固定首部目 的 端 口數(shù)據(jù)偏移檢 驗(yàn) 和選 項(xiàng) (長 度 可 變)源 端 口序 號緊 急 指 針窗 口確 認(rèn) 號保 留fins

20、ynrstpshackurg位 0 8 16 24 31填 充源端口和目的端口字段各占 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位 0 8 16 24 31填 充序號字段占 4 字節(jié)。tcp 連接中傳送的數(shù)據(jù)流中的每一個字節(jié)都編上一個序號。序號字段的值則指的是本報文段所發(fā)送的數(shù)據(jù)的第一個字節(jié)的序號。 tcp首部20字節(jié)固定首部目 的 端 口數(shù)據(jù)偏移檢 驗(yàn) 和選 項(xiàng) (長 度 可

21、 變)源 端 口序 號緊 急 指 針窗 口確 認(rèn) 號保 留finsynrstpshackurg位 0 8 16 24 31填 充確認(rèn)號字段占 4 字節(jié),是期望收到對方的下一個報文段的數(shù)據(jù)的第一個字節(jié)的序號。 tcp首部20字節(jié)固定首部目 的 端 口數(shù)據(jù)偏移檢 驗(yàn) 和選 項(xiàng) (長 度 可 變)源 端 口序 號緊 急 指 針窗 口確 認(rèn) 號保 留finsynrstpshackurg位 0 8 16 24 31填 充數(shù)據(jù)偏移(即首部長度)占 4 位,它指出 tcp 報文段的數(shù)據(jù)起始處距離 tcp 報文段的起始處有多遠(yuǎn)。“數(shù)據(jù)偏移”的單位是 32 位字(以 4 字節(jié)為計算單位)。 tcp首部20字節(jié)固

22、定首部目 的 端 口數(shù)據(jù)偏移檢 驗(yàn) 和選 項(xiàng) (長 度 可 變)源 端 口序 號緊 急 指 針窗 口確 認(rèn) 號保 留finsynrstpshackurg位 0 8 16 24 31填 充保留字段占 6 位,保留為今后使用,但目前應(yīng)置為 0。 tcp首部20字節(jié)固定首部目 的 端 口數(shù)據(jù)偏移檢 驗(yàn) 和選 項(xiàng) (長 度 可 變)源 端 口序 號緊 急 指 針窗 口確 認(rèn) 號保 留finsynrstpshackurg位 0 8 16 24 31填 充緊急 urg 當(dāng) urg 1 時,表明緊急指針字段有效。它告訴系統(tǒng)此報文段中有緊急數(shù)據(jù),應(yīng)盡快傳送(相當(dāng)于高優(yōu)先級的數(shù)據(jù))。 tcp首部20字節(jié)固定首部

23、目 的 端 口數(shù)據(jù)偏移檢 驗(yàn) 和選 項(xiàng) (長 度 可 變)源 端 口序 號緊 急 指 針窗 口確 認(rèn) 號保 留finsynrstpshackurg位 0 8 16 24 31填 充確認(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位 0 8 16 24 31填 充推送 psh (push) 接收 tcp 收到 psh = 1 的報文段,就盡快地交付接收應(yīng)用進(jìn)程,而不再等到整個緩存都填滿了

24、后再向上交付。 tcp首部20字節(jié)固定首部目 的 端 口數(shù)據(jù)偏移檢 驗(yàn) 和選 項(xiàng) (長 度 可 變)源 端 口序 號緊 急 指 針窗 口確 認(rèn) 號保 留finsynrstpshackurg位 0 8 16 24 31填 充復(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位 0 8 16 24 31填 充同步 syn 同步

25、syn = 1 表示這是一個連接請求或連接接受報文。 tcp首部20字節(jié)固定首部目 的 端 口數(shù)據(jù)偏移檢 驗(yàn) 和選 項(xiàng) (長 度 可 變)源 端 口序 號緊 急 指 針窗 口確 認(rèn) 號保 留finsynrstpshackurg位 0 8 16 24 31填 充終止 fin (finis) 用來釋放一個連接。fin 1 表明此報文段的發(fā)送端的數(shù)據(jù)已發(fā)送完畢,并要求釋放運(yùn)輸連接。 tcp首部20字節(jié)固定首部目 的 端 口數(shù)據(jù)偏移檢 驗(yàn) 和選 項(xiàng) (長 度 可 變)源 端 口序 號緊 急 指 針窗 口確 認(rèn) 號保 留finsynrstpshackurg位 0 8 16 24 31填 充窗口字段 占

26、2 字節(jié),用來讓對方設(shè)置發(fā)送窗口的依據(jù),單位為字節(jié)。tcp首部20字節(jié)固定首部目 的 端 口數(shù)據(jù)偏移檢 驗(yàn) 和選 項(xiàng) (長 度 可 變)源 端 口序 號緊 急 指 針窗 口確 認(rèn) 號保 留finsynrstpshackurg位 0 8 16 24 31填 充檢驗(yàn)和 占 2 字節(jié)。檢驗(yàn)和字段檢驗(yàn)的范圍包括首部和數(shù)據(jù)這兩部分。在計算檢驗(yàn)和時,要在 tcp 報文段的前面加上 12 字節(jié)的偽首部。tcp首部20字節(jié)固定首部目 的 端 口數(shù)據(jù)偏移檢 驗(yàn) 和選 項(xiàng) (長 度 可 變)源 端 口序 號緊 急 指 針窗 口確 認(rèn) 號保 留finsynrstpshackurg位 0 8 16 24 31填 充緊

27、急指針字段 占 16 位,指出在本報文段中緊急數(shù)據(jù)共有多少個字節(jié)(緊急數(shù)據(jù)放在本報文段數(shù)據(jù)的最前面)。 tcp首部20字節(jié)固定首部目 的 端 口數(shù)據(jù)偏移檢 驗(yàn) 和選 項(xiàng) (長 度 可 變)源 端 口序 號緊 急 指 針窗 口確 認(rèn) 號保 留finsynrstpshackurg比特 0 8 16 24 31填 充選項(xiàng)字段 長度可變。tcp 最初只規(guī)定了一種選項(xiàng),即最大報文段長度 mss。mss 告訴對方 tcp:“我的緩存所能接收的報文段的數(shù)據(jù)字段的最大長度是 mss 個字節(jié)?!?mss (maximum segment size)是 tcp 報文段中的數(shù)據(jù)字段的最大長度。數(shù)據(jù)字段加上 tcp

28、首部才等于整個的 tcp 報文段。其他選項(xiàng)n窗口擴(kuò)大選項(xiàng) 占 3 字節(jié),其中有一個字節(jié)表示移位值 s。新的窗口值等于tcp 首部中的窗口位數(shù)增大到(16 + s),相當(dāng)于把窗口值向左移動 s 位后獲得實(shí)際的窗口大小。n時間戳選項(xiàng)占10 字節(jié),其中最主要的字段時間戳值字段(4 字節(jié))和時間戳回送回答字段(4 字節(jié))。n選擇確認(rèn)選項(xiàng)在后面的 5.6.3 節(jié)介紹。 tcp首部20字節(jié)固定首部目 的 端 口數(shù)據(jù)偏移檢 驗(yàn) 和選 項(xiàng) (長 度 可 變)源 端 口序 號緊 急 指 針窗 口確 認(rèn) 號保 留finsynrstpshackurg位 0 8 16 24 31填 充填充字段 這是為了使整個首部長度

29、是 4 字節(jié)的整數(shù)倍。 5.6 tcp 可靠傳輸?shù)膶?shí)現(xiàn)5.6.1 以字節(jié)為單位的滑動窗口前移不允許發(fā)送已發(fā)送并收到確認(rèn)a 的發(fā)送窗口 = 20允許發(fā)送的序號26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56b 期望收到的序號前沿后沿前移收縮假定a收到了b發(fā)來的確認(rèn)報文段,其中窗口是20(字節(jié)),而確認(rèn)號是31(b期望收到的下一個序號是31,而之前的已收到),根據(jù)這兩個數(shù)據(jù),a 構(gòu)造出自己的發(fā)送窗口,如下圖: tcp 標(biāo)準(zhǔn)強(qiáng)烈不贊成發(fā)送窗口前沿向后收縮 不允許發(fā)送

30、已發(fā)送并收到確認(rèn)a 的發(fā)送窗口位置不變允許發(fā)送但尚未發(fā)送26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55已發(fā)送但未收到確認(rèn)56p1p2p3不允許接收已發(fā)送確認(rèn)并交付主機(jī)b 的接收窗口允許接收26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56未按序收到可用窗口a 發(fā)送了 11 個字節(jié)的數(shù)據(jù) p3 p1 = a 的發(fā)送窗口(又稱為通知窗口

31、)p2 p1 = 已發(fā)送但尚未收到確認(rèn)的字節(jié)數(shù)p3 p2 = 允許發(fā)送但尚未發(fā)送的字節(jié)數(shù)(又稱為可用窗口) b只能對按序收到的數(shù)據(jù)中的最高序號給出確認(rèn)允許發(fā)送但尚未發(fā)送a 的發(fā)送窗口向前滑動26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55已發(fā)送并收到確認(rèn)不允許發(fā)送已發(fā)送但未收到確認(rèn)56p1p2p3允許接收b 的接收窗口向前滑動26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49

32、 50 51 52 53 54 55已發(fā)送確認(rèn)并交付主機(jī)不允許接收56未按序收到a 收到新的確認(rèn)號即收到了b發(fā)回的收到3133的確認(rèn)信號,則a的發(fā)送窗口向前滑動如下圖: 先存下,等待缺少的數(shù)據(jù)的到達(dá)不允許發(fā)送已發(fā)送并收到確認(rèn)a 的發(fā)送窗口已滿,有效窗口為零26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55已發(fā)送但未收到確認(rèn)56p1p2p3a 的發(fā)送窗口內(nèi)的序號都已用完,但還沒有再收到確認(rèn),必須停止發(fā)送。 發(fā)送緩存與接收緩存的作用n發(fā)送緩存用來暫時存放:n 發(fā)送應(yīng)用程序

33、傳送給發(fā)送方 tcp 準(zhǔn)備發(fā)送的數(shù)據(jù);n tcp 已發(fā)送出但尚未收到確認(rèn)的數(shù)據(jù)。n接收緩存用來暫時存放:n 按序到達(dá)的、但尚未被接收應(yīng)用程序讀取的數(shù)據(jù);n 不按序到達(dá)的數(shù)據(jù)。 發(fā)送緩存 最后被確認(rèn)的字節(jié)發(fā)送應(yīng)用程序發(fā)送緩存最后發(fā)送的字節(jié)發(fā)送窗口tcp序號增大發(fā)送窗口通常只是發(fā)送發(fā)送窗口通常只是發(fā)送緩存的一部分緩存的一部分接收緩存接收應(yīng)用程序已收到接收窗口tcp接收緩存下一個讀取的字節(jié)序號增大下一個期望收到的字節(jié)(確認(rèn)號)需要強(qiáng)調(diào)三點(diǎn)na 的發(fā)送窗口并不總是和 b 的接收窗口一樣大(因?yàn)橛幸欢ǖ臅r間滯后)。ntcp 標(biāo)準(zhǔn)沒有規(guī)定對不按序到達(dá)的數(shù)據(jù)應(yīng)如何處理。通常是先臨時存放在接收窗口中,等到字節(jié)

34、流中所缺少的字節(jié)收到后,再按序交付上層的應(yīng)用進(jìn)程。ntcp 要求接收方必須有累積確認(rèn)的功能,這樣可以減小傳輸開銷。 5.6.2 超時重傳時間(rto)的選擇n重傳機(jī)制是 tcp 中最重要和最復(fù)雜的問題之一。ntcp 每發(fā)送一個報文段,就對這個報文段設(shè)置一次計時器。只要計時器設(shè)置的重傳時間到但還沒有收到確認(rèn),就要重傳這一報文段。往返時延和超時重傳時間的設(shè)置n由于 tcp 的下層是一個互聯(lián)網(wǎng)環(huán)境,發(fā)送的報文段可能只經(jīng)過一個高速率的局域網(wǎng),也可能經(jīng)過多個低速率的網(wǎng)絡(luò),并且每個ip 數(shù)據(jù)報所選擇的路由還可能不同。如果把超時重傳時間設(shè)置得太短,就會引起很多報文段的不必要的重傳,使網(wǎng)絡(luò)負(fù)荷增大。但如果把超

35、時重傳時間設(shè)置得過長,則又使網(wǎng)絡(luò)的空閑時間增大,降低了傳輸效率。n于是karn提出了一個算法:在計算加權(quán)平均rtts時只要報文重傳了,就不采用其往返時間樣本。這樣得出的加權(quán)平均往返時間rtts和超時重傳時間rto就較準(zhǔn)確。加權(quán)平均往返時間ntcp 保留了 rtt 的一個加權(quán)平均往返時間 rtts(這又稱為平滑的往返時間)。n第一次測量到 rtt 樣本時,rtts 值就取為所測量到的 rtt 樣本值。以后每測量到一個新的 rtt 樣本,就按下式重新計算一次 rtts: 新的 rtts (1 ) (舊的 rtts) (新的 rtt 樣本) (5-4)n式中,0 1。若 很接近于零,表示 rtt 值

36、更新較慢。若選擇 接近于 1,則表示 rtt 值更新較快。nrfc 2988 推薦的 值為 1/8,即 0.125。 超時重傳時間 rto (retransmissiontime-out) nrto 應(yīng)略大于上面得出的加權(quán)平均往返時間 rtts。nrfc 2988 建議使用下式計算 rto:n rto rtts + 4 rttd (5-5)nrttd 是 rtt 的偏差的加權(quán)平均值。nrfc 2988 建議這樣計算 rttd。第一次測量時,rttd 值取為測量到的 rtt 樣本值的一半。在以后的測量中,則使用下式計算加權(quán)平均的 rttd:新的 rttd = (1 ) (舊的rttd) + rt

37、ts 新的 rtt 樣本 (5-6)n 是個小于 1 的系數(shù),其推薦值是 1/4,即 0.25。5.6.3 選擇確認(rèn) sack(selective ack) 若收到的報文段無差錯,只是未按序號,中間還缺少一些序號的數(shù)據(jù),那么能否只傳送缺少的數(shù)據(jù)而不重傳已收到的數(shù)據(jù)。答案是肯定的,方法是選擇確認(rèn)。其工作原理如下圖所示:1 1000 1501 3000 3501 4500確認(rèn)號 = 1001l1 = 1501l2 = 3501r1 = 3001r1 = 4501接收到的字節(jié)流序號不連續(xù) 連續(xù)的字節(jié)流第一個字節(jié)塊第二個字節(jié)塊在上圖中序號11000收到了,10011500沒收到,也就是說,接收方收到了

38、不連續(xù)的字節(jié)塊,如果這些字節(jié)塊都在接收窗口之內(nèi),那么接收方就先收下這些數(shù)據(jù),但要把這些信息準(zhǔn)確地告訴發(fā)送方,使發(fā)送方不要再重復(fù)發(fā)送這些已收到的數(shù)據(jù)。 。 5.7 tcp 的流量控制5.7.1 利用滑動窗口實(shí)現(xiàn)流量控制n一般說來,我們總是希望數(shù)據(jù)傳輸?shù)酶煲恍?。但如果發(fā)送方把數(shù)據(jù)發(fā)送得過快,接收方就可能來不及接收,這就會造成數(shù)據(jù)的丟失。n流量控制(flow control)就是讓發(fā)送方的發(fā)送速率不要太快,既要讓接收方來得及接收,也不要使網(wǎng)絡(luò)發(fā)生擁塞。n利用滑動窗口機(jī)制可以很方便地在 tcp 連接上實(shí)現(xiàn)流量控制。 seq = 1, dataseq = 201, dataseq = 401, dat

39、aseq = 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 超時重

40、傳舊的數(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é))”。5.7.2 必須考慮傳輸效率n可以用不同的機(jī)制來控制 tcp 報文段的發(fā)送時機(jī).例如:n第一種機(jī)制是 tcp 維持一個變量,它等于最大報文段長度 mss。只要緩存中存放的數(shù)據(jù)達(dá)到 mss 字節(jié)時,就組裝成一個 tcp 報文段發(fā)送出去。n第二種機(jī)制是由發(fā)送方的應(yīng)用進(jìn)程指明要求發(fā)送報文段,即 tc

41、p 支持的推送(push)操作。n第三種機(jī)制是發(fā)送方的一個計時器期限到了,這時就把當(dāng)前已有的緩存數(shù)據(jù)裝入報文段(但長度不能超過 mss)發(fā)送出去。nend5.8 tcp的擁塞控制5.8.1 擁塞控制的一般原理 1、擁塞的定義:在計算機(jī)網(wǎng)絡(luò)中的鏈路容量(即帶寬)、交換結(jié)點(diǎn)中的緩存和處理機(jī)等,都是網(wǎng)絡(luò)的資源。在某段時間,若對網(wǎng)絡(luò)中某資源的需求超過了該資源所能提供的可用部分,網(wǎng)絡(luò)的性能就要變壞這種情況叫擁塞(congestion)。2、出現(xiàn)資源擁塞的條件: 對資源需求的總和 可用資源 (5-7) n若網(wǎng)絡(luò)中有許多資源同時產(chǎn)生擁塞,網(wǎng)絡(luò)的性能就要明顯變壞,整個網(wǎng)絡(luò)的吞吐量將隨輸入負(fù)荷的增大而下降。 擁

42、塞控制與流量控制的關(guān)系 3、擁塞控制:就是防止過多的數(shù)據(jù)注入到網(wǎng)絡(luò)中,這樣可以使網(wǎng)絡(luò)中的路由器或鏈路不致過載。n擁塞控制是一個全局性的過程,涉及到所有的主機(jī)、所有的路由器,以及與降低網(wǎng)絡(luò)傳輸性能有關(guān)的所有因素。 4、流量控制:指發(fā)送端和接收端之間的點(diǎn)對點(diǎn)通信量的控制,是個端到端的問題。 n流量控制所要做的就是抑制發(fā)送端發(fā)送數(shù)據(jù)的速率,以便使接收端來得及接收。 n5、舉例說明擁塞控制與流量控制的區(qū)別:n設(shè)某個光纖網(wǎng)絡(luò)的鏈路傳輸速率為1000gb/s,有一個巨型計算機(jī)向一個pc以1gb/s的速率傳送文件。顯然網(wǎng)絡(luò)本身的帶寬是足夠大的,因而不存在擁塞的問題。但流量控制卻是必須的,因?yàn)榫扌陀嬎銠C(jī)必須經(jīng)

43、常停下來,以使pc來得及接收。n但如果有另一個網(wǎng)絡(luò),鏈路傳輸速率為1mb/s,有1000臺大型計算機(jī)連接在這個網(wǎng)絡(luò)上,假設(shè)其中的500臺計算機(jī)向另外的500臺以100kb/s的速率發(fā)送文件,那么現(xiàn)在的問題就是接收端能來得及接收,而整個網(wǎng)絡(luò)的輸入負(fù)載超過了網(wǎng)絡(luò)的承受能力。6、擁塞控制所起的作用 提供的負(fù)載:輸入分組數(shù)吞吐量:輸出分組數(shù)理想的擁塞控制實(shí)際的擁塞控制0死鎖(吞吐量 = 0)無擁塞控制擁塞輕度擁塞7、擁塞控制的一般原理 n實(shí)踐證明:擁塞控制是很難設(shè)計的,因?yàn)樗且粋€動態(tài)的(而不是靜態(tài)的)問題。n當(dāng)前網(wǎng)絡(luò)正朝著高速化的方向發(fā)展,這很容易出現(xiàn)緩存不夠大而造成分組的丟失。但分組的丟失是網(wǎng)絡(luò)發(fā)

44、生擁塞的征兆而不是原因。n在許多情況下,甚至正是擁塞控制本身成為引起網(wǎng)絡(luò)性能惡化甚至發(fā)生死鎖的原因。這點(diǎn)應(yīng)特別引起重視。 8、開環(huán)控制和閉環(huán)控制 n從控制理論的角度把擁塞控制分為開環(huán)和閉環(huán)兩種n開環(huán)控制方法就是在設(shè)計網(wǎng)絡(luò)時事先將有關(guān)發(fā)生擁塞的因素考慮周到,力求網(wǎng)絡(luò)在工作時不產(chǎn)生擁塞。 n閉環(huán)控制是基于反饋環(huán)路的概念。屬于閉環(huán)控制的有以下幾種措施: n監(jiān)測網(wǎng)絡(luò)系統(tǒng)以便檢測到擁塞在何時、何處發(fā)生。n將擁塞發(fā)生的信息傳送到可采取行動的地方。n調(diào)整網(wǎng)絡(luò)系統(tǒng)的運(yùn)行以解決出現(xiàn)的問題。5.8.2 幾種擁塞控制方法1999年公布的因特網(wǎng)建議標(biāo)準(zhǔn)rfc2581定義了進(jìn)行擁塞控制的四種算法,即慢開始、擁塞避免、快

45、重傳和快恢復(fù),以后rfc2582和rfc3390又對這些算法進(jìn)行了改進(jìn)。1、慢開始和擁塞避免n慢開始和擁塞避免算法是1988年提出的tcp擁塞控制算法,n慢開始算法的思路是:主機(jī)發(fā)送數(shù)據(jù)時不是立即把大量數(shù)據(jù)注入到網(wǎng)絡(luò),而是先探測一下,即由小到大逐漸增大發(fā)送窗口,也就是說由小到大逐漸增大擁塞窗口的數(shù)值,可以使分組注入到網(wǎng)絡(luò)的速率更加合理。n擁塞避免算法的思路是:讓擁塞窗口cwnd緩慢地增大,即每經(jīng)過一個往返時間rtt就把發(fā)送方的擁塞窗口cwnd加1,而不是加倍。這樣,擁塞窗口cwnd按線性規(guī)律緩慢增長,比慢開始算法的擁塞窗口增長速率緩慢得多。2、快重傳和快恢復(fù)n快重傳和快恢復(fù)是1900年提出的擁

46、塞控制算法。n快重傳算法:首先要求接收方每收到一個失序的報文段就立即發(fā)出重復(fù)確認(rèn)(為的是使發(fā)送方及早知道有報文段沒有到達(dá)對方)而不要等待自己發(fā)送數(shù)據(jù)時才進(jìn)行捎帶確認(rèn)。n快恢復(fù)算法:與快重傳算法配合使用,方法是:(1)當(dāng)發(fā)送方連續(xù)收到三個重復(fù)確認(rèn)時,就執(zhí)行“乘法減小”算法,把慢開始門限ssthresh減半。(2)由于發(fā)送方現(xiàn)在認(rèn)為網(wǎng)絡(luò)很可能沒有發(fā)生擁塞,因此與慢開始不同之處是現(xiàn)在不執(zhí)行慢開始算法,而是把cwnd值設(shè)置為慢開始門限減半后的數(shù)值,然后開始執(zhí)行擁塞避免自救,使擁塞窗口緩慢地線性增大。5.8.3 隨機(jī)早期檢測 red (random early detection) 上節(jié)課講的tcp擁塞

47、控制方法并沒有和網(wǎng)絡(luò)層采取的策略聯(lián)系起來,其實(shí),它們之間有著密切的關(guān)系:網(wǎng)絡(luò)層的策略對tcp擁塞控制影響最大的就是路由器的分組丟棄策略。1、尾部丟棄策略:路由器隊(duì)列通常按照“先進(jìn)先出”的規(guī)則處理到來的分組,由于隊(duì)列長度總是有限的,因此當(dāng)隊(duì)列已滿時以后再到達(dá)的分組將都被丟棄,這就叫.2、全局同步:路由器的尾部丟棄策略會導(dǎo)致一連串的分組的丟失,導(dǎo)致發(fā)送方出現(xiàn)超時重傳,使tcp進(jìn)入擁塞控制的慢開始狀態(tài),更嚴(yán)重的是,網(wǎng)絡(luò)中通常有很多的tcp連接,這些連接中的報文段通常是復(fù)用在網(wǎng)絡(luò)層的ip數(shù)據(jù)報中傳送,結(jié)果使這許多的tcp連接同時突然進(jìn)入慢開始狀態(tài)。這就是tcp術(shù)語中的全局同步。3、為避免發(fā)生網(wǎng)絡(luò)中的全

48、局同步現(xiàn)象,可以在路由器中采用隨機(jī)早期檢測red的措施。實(shí)現(xiàn)red的要點(diǎn)如下:n使路由器的隊(duì)列維持兩個參數(shù),即隊(duì)列長度最小門限 thmin 和最大門限 thmax。nred 對每一個到達(dá)的數(shù)據(jù)報都先計算平均隊(duì)列長度 lav。n若平均隊(duì)列長度小于最小門限 thmin,則將新到達(dá)的數(shù)據(jù)報放入隊(duì)列進(jìn)行排隊(duì)。n若平均隊(duì)列長度超過最大門限 thmax,則將新到達(dá)的數(shù)據(jù)報丟棄。n若平均隊(duì)列長度在最小門限 thmin 和最大門限thmax 之間,則按照某一概率 p 將新到達(dá)的數(shù)據(jù)報丟棄。red 將路由器的到達(dá)隊(duì)列劃分成為三個區(qū)域 從隊(duì)首發(fā)送最小門限 thmin最大門限 thmin分組到達(dá)平均隊(duì)列長度 lav

49、排隊(duì)丟棄以概率 p 丟棄5-9 tcp 的運(yùn)輸連接管理1、運(yùn)輸連接管理的定義:tcp是面向連接的協(xié)議,運(yùn)輸連接是用來傳送tcp報文的。tcp運(yùn)輸連接的建立和釋放是每一次面向連接的通信中必不可少的過程。因此運(yùn)輸連接就有三個階段,即連接建立、數(shù)據(jù)傳送和連接釋放。運(yùn)輸連接管理就是使運(yùn)輸連接的建立和釋放都能正常地進(jìn)行。n要使每一方能夠確知對方的存在。n要允許雙方協(xié)商一些參數(shù)(如最大報文段長度,最大窗口大小,服務(wù)質(zhì)量等)。n能夠?qū)\(yùn)輸實(shí)體資源(如緩存大小,連接表中的項(xiàng)目等)進(jìn)行分配。 2、在、在tcp連接建立過程中要解決的三個問題連接建立過程中要解決的三個問題:3、tcp 連接的建立都是采用客戶服務(wù)器方

50、式。n主動發(fā)起連接建立的應(yīng)用進(jìn)程叫做客戶(client)。n被動等待連接建立的應(yīng)用進(jìn)程叫做服務(wù)器(server)。 用三次握手建立 tcp 連接 syn = 1, seq = xclosedclosed主動打開被動打開ab客戶服務(wù)器5.9.1 tcp 的連接建立a 的 tcp 向 b 發(fā)出連接請求報文段,其首部中的同步位 syn = 1,并選擇序號 seq = x,表明傳送數(shù)據(jù)時的第一個數(shù)據(jù)字節(jié)的序號是 x。用三次握手建立 tcp 連接 syn = 1, seq = xclosedclosed主動打開被動打開ab客戶服務(wù)器5.9.1 tcp 的連接建立syn = 1, ack = 1, seq

51、 = y, ack= x 1 b 的 tcp 收到連接請求報文段后,如同意,則 發(fā)回確認(rèn)。 b 在確認(rèn)報文段中應(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 1 a 收到此報文段后向 b 給出確認(rèn),其 ack = 1, 確認(rèn)號 ack = y 1。 a 的 tcp 通知上層應(yīng)用進(jìn)程,連接已經(jīng)建立。 syn = 1, seq =

52、 xack = 1, seq = x + 1, ack = y 1closedclosed數(shù)據(jù)傳送主動打開被動打開ab客戶服務(wù)器syn = 1, ack = 1, seq = y, ack= x 1 b 的 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ù)器5.9.1 tcp 的連接建立syn = 1, ack = 1, seq = y, ack= x 1fin = 1, seq = uclosed主動關(guān)閉數(shù)據(jù)傳送estab-lishedestab-lishedab客戶服務(wù)器closed5.9.2 tcp 的連接釋放 數(shù)據(jù)傳輸結(jié)束后,通信的雙方都可釋放連接。 現(xiàn)在 a 的應(yīng)用進(jìn)程先向其 tcp 發(fā)出連接釋放 報文段,并停止再發(fā)送數(shù)據(jù),主動關(guān)閉 tcp 連接。 a 把連接釋放報文段首部的 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)程

溫馨提示

  • 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

提交評論