TCP數(shù)據(jù)包格式參考模板_第1頁
TCP數(shù)據(jù)包格式參考模板_第2頁
TCP數(shù)據(jù)包格式參考模板_第3頁
TCP數(shù)據(jù)包格式參考模板_第4頁
TCP數(shù)據(jù)包格式參考模板_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、TCP數(shù)據(jù)包格式(zz) 修改瀏覽權(quán)限 | 刪除 TCP提供一種面向連接的、全雙工的、可靠的字節(jié)流服務(wù)。在一個(gè)TCP連接中,僅有兩方進(jìn)行彼此通信。廣播和多播不能用于TCP。TCP的接收端必須丟棄重復(fù)的數(shù)據(jù)。TCP對(duì)字節(jié)流的內(nèi)容不作任何解釋。對(duì)字節(jié)流的解釋由TCP連接雙方的應(yīng)用層解釋。TCP通過下列方式來提供可靠性:應(yīng)用數(shù)據(jù)被分割成TCP認(rèn)為最適合發(fā)送的數(shù)據(jù)塊,稱為報(bào)文段或段。TCP協(xié)議中采用自適應(yīng)的超時(shí)及重傳策略。TCP可以對(duì)收到的數(shù)據(jù)進(jìn)行重新排序,將收到的數(shù)據(jù)以正確的順序交給應(yīng)用層。TCP的接收端必須丟棄重復(fù)的數(shù)據(jù)。TCP還能提供流量控制。TCP報(bào)文段格式1 / 12源端口和目的端口字段各占

2、2字節(jié)。端口是傳輸層與應(yīng)用層的服務(wù)接口。傳輸層的復(fù)用和分用功能都要通過端口才能實(shí)現(xiàn)。序號(hào)字段占4字節(jié)。TCP連接中傳送的數(shù)據(jù)流中的每一個(gè)字節(jié)都編上一個(gè)序號(hào)。序號(hào)字段的值則指的是本報(bào)文段所發(fā)送的數(shù)據(jù)的第一個(gè)字節(jié)的序號(hào)。確認(rèn)號(hào)字段占4字節(jié),是期望收到對(duì)方的下一個(gè)報(bào)文段的數(shù)據(jù)的第一個(gè)字節(jié)的序號(hào)。數(shù)據(jù)偏移占4bit,它指出TCP報(bào)文段的數(shù)據(jù)起始處距離 CP報(bào)文段的起始處有多遠(yuǎn)?!皵?shù)據(jù)偏移”的單位不是字節(jié)而是32bit字(4字節(jié)為計(jì)算單位)。保留字段占6bit,保留為今后使用,但目前應(yīng)置為0。緊急比特URG當(dāng)URG1時(shí),表明緊急指針字段有效。它告訴系統(tǒng)此報(bào)文段中有緊急數(shù)據(jù),應(yīng)盡快傳送(相當(dāng)于高優(yōu)先級(jí)的數(shù)

3、據(jù))。確認(rèn)比特ACK只有當(dāng)ACK1時(shí)確認(rèn)號(hào)字段才有效。當(dāng)ACK0時(shí),確認(rèn)號(hào)無效。復(fù)位比特RST(Reset) 當(dāng)RST1時(shí),表明TCP連接中出現(xiàn)嚴(yán)重差錯(cuò)(如由于主機(jī)崩潰或其他原因),必須釋放連接,然后再重新建立運(yùn)輸連接。同步比特SYN同步比特SYN置為1,就表示這是一個(gè)連接請(qǐng)求或連接接受報(bào)文。終止比特FIN(FINal)用來釋放一個(gè)連接。當(dāng)FIN1時(shí),表明此報(bào)文段的發(fā)送端的數(shù)據(jù)已發(fā)送完畢,并要求釋放運(yùn)輸連接。窗口字段占2字節(jié)。窗口字段用來控制對(duì)方發(fā)送的數(shù)據(jù)量,單位為字節(jié)。TCP連接的一端根據(jù)設(shè)置的緩存空間大小確定自己的接收窗口大小,然后通知對(duì)方以確定對(duì)方的發(fā)送窗口的上限。檢驗(yàn)和占2字節(jié)。檢驗(yàn)和

4、字段檢驗(yàn)的范圍包括首部和數(shù)據(jù)這兩部分。在計(jì)算檢驗(yàn)和時(shí),要在TCP報(bào)文段的前面加上12字節(jié)的偽首部。緊急指針字段占16bit。緊急指針指出在本報(bào)文段中的緊急數(shù)據(jù)的最后一個(gè)字節(jié)的序號(hào)。選項(xiàng)字段長度可變。TCP首部可以有多達(dá)40字節(jié)的可選信息,用于把附加信息傳遞給終點(diǎn),或用來對(duì)齊其它選項(xiàng)。填充字段這是為了使整個(gè)首部長度是4字節(jié)的整數(shù)倍。TCP首部的主要選項(xiàng):最大報(bào)文段長度MSS(Maximum Segment Size)是TCP報(bào)文段中的數(shù)據(jù)字段的最大長度。MSS告訴對(duì)方TCP:“我的緩存所能接收的報(bào)文段的數(shù)據(jù)字段的最大長度是MSS個(gè)字節(jié)?!贝翱跀U(kuò)大因子,用于長肥管道。時(shí)間戳,可用于測量往返時(shí)延RT

5、T。 TCP的數(shù)據(jù)編號(hào)與確認(rèn)TCP協(xié)議是面向字節(jié)的。TCP將所要傳送的報(bào)文看成是字節(jié)組成的數(shù)據(jù)流,并使每一個(gè)字節(jié)對(duì)應(yīng)于一個(gè)序號(hào)。在連接建立時(shí),雙方要商定初始序號(hào)。TCP每次發(fā)送的報(bào)文段的首部中的序號(hào)字段數(shù)值表示該報(bào)文段中的數(shù)據(jù)部分的第一個(gè)字節(jié)的序號(hào)。TCP的確認(rèn)是對(duì)接收到的數(shù)據(jù)的最高序號(hào)表示確認(rèn)。接收端返回的確認(rèn)號(hào)是已收到的數(shù)據(jù)的最高序號(hào)加1。因此確認(rèn)號(hào)表示接收端期望下次收到的數(shù)據(jù)中的第一個(gè)數(shù)據(jù)字節(jié)的序號(hào)。為提高效率,TCP可以累積確認(rèn),即在接收多個(gè)報(bào)文段后,一次確認(rèn)。一、TCP的流量控制TCP采用大小可變的滑動(dòng)窗口進(jìn)行流量控制。窗口大小的單位是字節(jié)。TCP報(bào)文段首部的窗口字段寫入的數(shù)值就是當(dāng)

6、前給對(duì)方設(shè)置的發(fā)送窗口數(shù)值的上限。發(fā)送窗口在連接建立時(shí)由雙方商定。但在通信的過程中,接收端可根據(jù)自己的資源情況,隨時(shí)動(dòng)態(tài)地調(diào)整對(duì)方的發(fā)送窗口上限值(可增大或減小)。發(fā)送端要發(fā)送900字節(jié)長的數(shù)據(jù),劃分為9個(gè)100字節(jié)長的報(bào)文段,而發(fā)送窗口確定為500字節(jié)。發(fā)送端只要收到了對(duì)方的確認(rèn),發(fā)送窗口就可前移。發(fā)送TCP要維護(hù)一個(gè)指針。每發(fā)送一個(gè)報(bào)文段,指針就向前移動(dòng)一個(gè)報(bào)文段的距離。發(fā)送端已發(fā)送400字節(jié)的數(shù)據(jù),但只收到對(duì)前200字節(jié)數(shù)據(jù)的確認(rèn),同時(shí)窗口大小不變。現(xiàn)在發(fā)送端還可發(fā)送300字節(jié)。發(fā)送端收到對(duì)方對(duì)前400字節(jié)數(shù)據(jù)的確認(rèn),但對(duì)方通知發(fā)送端必須把窗口減小到400字節(jié)?,F(xiàn)在發(fā)送端最多還可發(fā)送40

7、0字節(jié)的數(shù)據(jù)。利用可變窗口大小進(jìn)行流量控制 雙方確定的窗口值是400二、慢啟動(dòng)和擁塞避免發(fā)送端的主機(jī)在確定發(fā)送報(bào)文段的速率時(shí),既要根據(jù)接收端的接收能力,又要從全局考慮不要使網(wǎng)絡(luò)發(fā)生擁塞。因此,每一個(gè)TCP連接需要有以下兩個(gè)狀態(tài)變量:接收端窗口rwnd(receiver window) 又稱為通知窗口(advertised window)。擁塞窗口cwnd(congestion window)。接收端窗口rwnd和擁塞窗口cwnd接收窗口rwnd 這是接收端根據(jù)其目前的接收緩存大小所許諾的最新的窗口值,是來自接收端的流量控制。接收端將此窗口值放在TCP報(bào)文的首部中的窗口字段,傳送給發(fā)送端。擁塞窗

8、口cwnd(congestion window) 是發(fā)送端根據(jù)自己估計(jì)的網(wǎng)絡(luò)擁塞程度而設(shè)置的窗口值,是來自發(fā)送端的流量控制。發(fā)送窗口的上限值發(fā)送端的發(fā)送窗口的上限值應(yīng)當(dāng)取為接收端窗口rwnd和擁塞窗口cwnd這兩個(gè)變量中較小的一個(gè),即應(yīng)按以下公式確定:發(fā)送窗口的上限值Minrwnd,cwnd當(dāng) rwnd cwnd 時(shí),是接收端的接收能力限制發(fā)送窗口的最大值。當(dāng) cwnd rwnd 時(shí),則是網(wǎng)絡(luò)的擁塞限制發(fā)送窗口的最大值。慢啟動(dòng)算法的原理在剛開始發(fā)送時(shí),可先將擁塞窗口cwnd設(shè)置為一個(gè)最大報(bào)文段MSS的數(shù)值。在每收到一個(gè)對(duì)新的報(bào)文段的確認(rèn)后,將擁塞窗口增加至2倍MSS的數(shù)值。用這樣的方法逐步增大

9、發(fā)送端的擁塞窗口cwnd,可以使分組注入到網(wǎng)絡(luò)的速率更加合理。慢啟動(dòng)和擁塞避免算法的實(shí)現(xiàn)舉例當(dāng)TCP連接進(jìn)行初始化時(shí),將擁塞窗口置為1。圖中的窗口單位不使用字節(jié)而使用報(bào)文段。慢啟動(dòng)門限的初始值設(shè)置為 16 個(gè)報(bào)文段,即ssthresh = 16。發(fā)送端的發(fā)送窗口不能超過擁塞窗口cwnd和接收端窗口rwnd中的最小值。我們假定接收端窗口足夠大,因此現(xiàn)在發(fā)送窗口的數(shù)值等于擁塞窗口的數(shù)值。在執(zhí)行慢啟動(dòng)算法時(shí),擁塞窗口cwnd 的初始值為1,發(fā)送第一個(gè)報(bào)文段M0。發(fā)送端收到ACK1(確認(rèn)M0,期望收到M1)后,將cwnd從1增大到2,于是發(fā)送端可以接著發(fā)送M1和M2兩個(gè)報(bào)文段。接收端發(fā)回ACK2和AC

10、K3。發(fā)送端每收到一個(gè)對(duì)新報(bào)文段的確認(rèn)ACK,就把發(fā)送端的擁塞窗口加倍?,F(xiàn)在發(fā)送端的cwnd從2增大到4,并可發(fā)送M4M6共 4個(gè)報(bào)文段。發(fā)送端每收到一個(gè)對(duì)新報(bào)文段的確認(rèn)ACK,就把發(fā)送端的擁塞窗口加倍,因此擁塞窗口cwnd隨著傳輸次數(shù)按指數(shù)規(guī)律增長。當(dāng)擁塞窗口cwnd增長到慢開始門限值ssthresh時(shí)(即當(dāng)cwnd = 16時(shí)),就改為執(zhí)行擁塞避免算法,擁塞窗口按線性規(guī)律增長。假定擁塞窗口的數(shù)值增長到24時(shí),網(wǎng)絡(luò)出現(xiàn)超時(shí)(表明網(wǎng)絡(luò)擁塞了)。更新后的ssthresh值變?yōu)?2(即發(fā)送窗口數(shù)值24的一半),擁塞窗口再重新設(shè)置為1,并執(zhí)行慢啟動(dòng)算法。當(dāng)cwnd = 12時(shí)改為執(zhí)行擁塞避免算法,擁

11、塞窗口按按線性規(guī)律增長,每經(jīng)過一個(gè)往返時(shí)延就增加一個(gè)MSS的大小。乘法減小(multiplicative decrease)“乘法減小“是指不論在慢啟動(dòng)階段還是擁塞避免階段,只要出現(xiàn)一次超時(shí)(即出現(xiàn)一次網(wǎng)絡(luò)擁塞),就把慢啟動(dòng)門限值 ssthresh 設(shè)置為當(dāng)前的擁塞窗口值乘以0.5。當(dāng)網(wǎng)絡(luò)頻繁出現(xiàn)擁塞時(shí),ssthresh值就下降得很快,以大大減少注入到網(wǎng)絡(luò)中的分組數(shù)。加法增大(additive increase)“加法增大”是指執(zhí)行擁塞避免算法后,當(dāng)收到對(duì)所有報(bào)文段的確認(rèn)就將擁塞窗口cwnd增加一個(gè)MSS大小,使擁塞窗口緩慢增大,以防止網(wǎng)絡(luò)過早出現(xiàn)擁塞。進(jìn)入擁塞避免算法后,擁塞窗口的增大速度由

12、指數(shù)增長變?yōu)榫€性增長。TCP中默認(rèn)報(bào)文段丟失是由于網(wǎng)絡(luò)擁塞造成超時(shí)而引起的?!皳砣苊狻辈⒎侵竿耆軌虮苊饬藫砣@靡陨系拇胧┮耆苊饩W(wǎng)絡(luò)擁塞還是不可能的?!皳砣苊狻笔钦f在擁塞避免階段把擁塞窗口控制為按線性規(guī)律增長,使網(wǎng)絡(luò)比較不容易出現(xiàn)擁塞。三、TCP的重傳機(jī)制重傳機(jī)制是TCP中最重要和最復(fù)雜的問題之一。TCP每發(fā)送一個(gè)報(bào)文段,就對(duì)這個(gè)報(bào)文段設(shè)置一次計(jì)時(shí)器。只要計(jì)時(shí)器設(shè)置的重傳時(shí)間到但還沒有收到確認(rèn),就要重傳這一報(bào)文段。由于TCP的下層是一個(gè)互連網(wǎng)環(huán)境,IP數(shù)據(jù)報(bào)所選擇的路由變化很大。因而傳輸層的往返時(shí)延的方差也很大。往返時(shí)延的自適應(yīng)算法記錄每一個(gè)報(bào)文段發(fā)出的時(shí)間,以及收到相應(yīng)的確認(rèn)報(bào)文

13、段的時(shí)間。這兩個(gè)時(shí)間之差就是報(bào)文段的往返時(shí)延。將各個(gè)報(bào)文段的往返時(shí)延樣本加權(quán)平均,就得出報(bào)文段的平均往返時(shí)延RTT。每測量到一個(gè)新的往返時(shí)延樣本,就按下式重新計(jì)算一次平均往返時(shí)延RTT:平均往返時(shí)延RTT =a*(舊的RTT)+(1-a)*(新的往返時(shí)延樣本)在上式中,0=a1。參數(shù)a的選擇若a很接近于1,表示新算出的平均往返時(shí)延RTT和原來的值相比變化不大,而新的往返時(shí)延樣本的影響不大(RTT值更新較慢)。若選擇a接近于零,則表示加權(quán)計(jì)算的平均往返時(shí)延RTT受新的往返時(shí)延樣本的影響較大(RTT值更新較快)。典型的a值為7/8。超時(shí)重傳時(shí)間RTO(Retransmission Time-Out

14、)計(jì)時(shí)器的RTO應(yīng)略大于上面得出的RTT,即: RTO b * RTT這里b是個(gè)大于1的系數(shù)。若取b很接近于1,發(fā)送端可及時(shí)地重傳丟失的報(bào)文段,因此效率得到提高。但若報(bào)文段并未丟失而僅僅是增加了一點(diǎn)時(shí)延,那么過早地重傳反而會(huì)加重網(wǎng)絡(luò)的負(fù)擔(dān)。因此TCP原先的標(biāo)準(zhǔn)推薦將b值取為2。往返時(shí)間測量的復(fù)雜性TCP報(bào)文段1沒有收到確認(rèn)。重傳(即報(bào)文段2)后,收到了確認(rèn)報(bào)文段ACK。如何判定此確認(rèn)報(bào)文段是對(duì)原來的報(bào)文段1的確認(rèn),還是對(duì)重傳的報(bào)文段2的確認(rèn)?Karn算法在計(jì)算平均往返時(shí)延RTT時(shí),TCP不采用重傳報(bào)文段的往返時(shí)延樣本。由于避免了二義性的存在,這樣得出的平均往返時(shí)延RTT和重傳時(shí)間就較準(zhǔn)確。當(dāng)網(wǎng)

15、絡(luò)時(shí)延增大時(shí),TCP忽略了重傳對(duì)往返時(shí)延的影響,會(huì)造成反復(fù)重傳。修正的Karn算法報(bào)文段每重傳一次,就將重傳時(shí)間增大一些:新的重傳時(shí)間r*(舊的重傳時(shí)間)系數(shù)r的典型值是2 。當(dāng)不再發(fā)生報(bào)文段的重傳時(shí),才根據(jù)報(bào)文段的往返時(shí)延更新平均往返時(shí)延RTT和重傳時(shí)間的數(shù)值。實(shí)踐證明,這種策略較為合理。四、TCP的傳輸連接管理TCP是面向連接的協(xié)議,提供透明、可靠的數(shù)據(jù)流傳輸。傳輸連接有三個(gè)階段,即:連接建立、數(shù)據(jù)傳送和連接釋放。傳輸連接的管理就是使傳輸連接的建立和釋放都能正常地進(jìn)行。在TCP的連接建立過程中要解決以下三個(gè)問題:要使每一方能夠確知對(duì)方的存在。要允許雙方協(xié)商一些參數(shù)(如最大報(bào)文段長度,最大窗

16、口大小,服務(wù)質(zhì)量等)。能夠?qū)鬏攲?shí)體資源(如緩存大小,連接表中的項(xiàng)目等)進(jìn)行分配??蛻舴?wù)器方式TCP 的連接和建立都是采用客戶服務(wù)器方式。主動(dòng)發(fā)起連接建立的應(yīng)用進(jìn)程叫做客戶(client)。被動(dòng)等待連接建立的應(yīng)用進(jìn)程叫做服務(wù)器(server)。用三次握手建立TCP連接TCP連接建立A的TCP向B發(fā)出連接請(qǐng)求報(bào)文段,其首部中置同步比特SYN =1,并選擇序號(hào)x,表明傳送數(shù)據(jù)時(shí)的第一個(gè)數(shù)據(jù)字節(jié)的序號(hào)是x。B的TCP收到連接請(qǐng)求報(bào)文段后,如同意,則發(fā)回確認(rèn)。B在確認(rèn)報(bào)文段中應(yīng)置SYN=1,其確認(rèn)號(hào)應(yīng)為x1,同時(shí)也為自己選擇序號(hào)y。A收到此報(bào)文段后,向B給出確認(rèn),其確認(rèn)號(hào)應(yīng)為 y1。A的TCP通知上層應(yīng)用進(jìn)程,連

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論