国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
《網(wǎng)絡(luò)協(xié)議》TCP 協(xié)議

http://blog.csdn.net/chenhanzhun/article/details/41592775

2014

概述

        TCP 和 UDP 都使用相同的網(wǎng)絡(luò)層 IP,但是與 UDP 不同的是,TCP 是面向連接的、可靠的字節(jié)流協(xié)議。因此,在傳輸數(shù)據(jù)之前通信雙方必須建立一個 TCP 連接。TCP 通過檢驗和、序列號、確認(rèn)應(yīng)答、重發(fā)機制、連接管理以及窗口控制等機制實現(xiàn)可靠性傳輸。

        TCP通過以下方式提供可靠性:

  1. 應(yīng)用數(shù)據(jù)被分割成 TCP 認(rèn)為最合適發(fā)送的數(shù)據(jù)塊,即進行 TCP 分段。這點與 UDP 完全不同,應(yīng)用程序產(chǎn)生的 UDP 數(shù)據(jù)報長度將保持不變,在 IP 層將 UDP 數(shù)據(jù)報加上IP 首部后,必要時對其進行 IP 分片。
  2. 當(dāng) TCP 發(fā)出一個報文段后,它會啟動一個定時器,等待目的端確認(rèn)收到這個報文段,如果沒能及時收到該確認(rèn)信息,則將重發(fā)這個報文段。即超時重傳。
  3. 當(dāng) TCP 接收端收到發(fā)自連接另一端的 TCP 報文段時,它將發(fā)送一個確認(rèn),這個確認(rèn)不是立即發(fā)送的,通常會推遲幾分之一秒。即確認(rèn)應(yīng)答。
  4. TCP 將保持它首部和數(shù)據(jù)的校驗和。這是一個端到端的校驗和,目的是檢查數(shù)據(jù)在傳輸過程中的任何變化。如果收到的報文段的校驗和有差錯,TCP 將丟棄該報文段,同時不發(fā)送確認(rèn)收到的消息,從而使發(fā)送端超時重發(fā)。
  5. 由于 TCP 報文段作為 IP 數(shù)據(jù)報來傳輸,IP 數(shù)據(jù)報的到達可能會失序,因此 TCP 報文段的到達也可能失序,如果必要,TCP 將對收到的數(shù)據(jù)進行重排序,將收到的數(shù)據(jù)以正確的順序交給應(yīng)用層。 
  6. 由于 IP 數(shù)據(jù)報有可能發(fā)生重復(fù),TCP 的接收端必須丟棄重復(fù)的數(shù)據(jù)。
  7. TCP 能提供流量控制。TCP 連接的每一方都有固定大小的緩沖空間,TCP 的接受端只允許另一端發(fā)送接收端緩沖區(qū)所能接納的數(shù)據(jù),這將防止較快主機致使較慢主機的緩沖區(qū)溢出。即流量控制。

TCP 首部

          TCP 首部如下圖所示:


        TCP 首部比 UDP 首部復(fù)雜很多,并且沒有表示包長度和數(shù)據(jù)長度的字段,可由 IP 層獲取 TCP 的包長度,并由 TCP 包長度可知數(shù)據(jù)的長度。下面對 TCP 首部的個字段進行簡單介紹:

  • 源端口號:表示發(fā)送端端口號,字段長 16 位;
  • 目標(biāo)端口號:表示接收端端口號,字段長 16 位;
  • 序列號:字段長 32 位,是指發(fā)送數(shù)據(jù)的位置,即標(biāo)識從發(fā)送端向接收端發(fā)送的字節(jié)流。每發(fā)送一次數(shù)據(jù),就累加一次該數(shù)據(jù)字節(jié)數(shù)的大小。序列號不會從 0 或 1 開始,而是在建立連接時由計算機生成的隨機數(shù)作為其初始值,通過 SYN 包傳給接收端主機。然后再將每轉(zhuǎn)發(fā)過去的字節(jié)數(shù)累加到初始值上表示數(shù)據(jù)的位置。此外,在建立連接和斷開連接時發(fā)送的 SYN 包和 FIN 包雖然并不攜帶數(shù)據(jù),但是也會作為一個字節(jié)增加對應(yīng)的序列號。由此可知,建立 TCP 連接是為了初始化序列號;
  • 確認(rèn)應(yīng)答:字段長 32 位,是指下一次應(yīng)該收到的數(shù)據(jù)的序列號。實際上,它是指已收到確認(rèn)應(yīng)答號減一為止的數(shù)據(jù)。發(fā)送端收到確認(rèn)應(yīng)答后可以認(rèn)為在這個序列號以前的數(shù)據(jù)都已經(jīng)被正常接收;
  • 首部長度(數(shù)據(jù)偏移):該字段表示 TCP 所傳輸?shù)臄?shù)據(jù)部分應(yīng)該從 TCP 包的哪個位置開始計算,可以把它看作是 TCP 首部的長度。該字段長 4 位,單位是 4 字節(jié)(即 32 位)。不包括選項字段的話,TCP 首部長度為 20 個字節(jié),因此,數(shù)據(jù)偏移字段可設(shè)置為 5。反之,若該字段值為 5,那么說明從 TCP 包的一開始到 20 字節(jié)為止都是 TCP 首部,余下的部分為 TCP 數(shù)據(jù);
  • 保留:該字段主要是為了以后擴展時使用,其長度為 4 位,一般設(shè)置為 0,但即使收到的包在該字段不為 0,此包也不會被丟棄;
  • 控制位:字段長為 8 位,每一位從左到右分別為 CWR、ECE、URG、ACK、PSH、RST、SYN、FIN。這些控制標(biāo)志也叫做控制位。當(dāng)他們的對應(yīng)位上值為 1 時,具體含義如下:
    • CWR:CWR 標(biāo)志與后面的 ECE 標(biāo)志都用于 IP 首部的 ECN 字段,ECE 標(biāo)志為 1 時,則通知對方已將擁塞窗口縮小;
    • ECE:若其值為 1 則會通知對方,從對方到這邊的網(wǎng)絡(luò)有阻塞。在收到數(shù)據(jù)包的 IP 首部中 ECN 為 1 時將 TCP 首部中的 ECE 設(shè)為 1.;
    • URG:該位設(shè)為 1,表示包中有需要緊急處理的數(shù)據(jù),對于需要緊急處理的數(shù)據(jù),與后面的緊急指針有關(guān);
    • ACK:該位設(shè)為 1,確認(rèn)應(yīng)答的字段有效,TCP 規(guī)定除了最初建立連接時的 SYN 包之外該位必須設(shè)為 1;
    • PSH:該位設(shè)為 1,表示需要將收到的數(shù)據(jù)立刻傳給上層應(yīng)用協(xié)議,若設(shè)為 0,則先將數(shù)據(jù)進行緩存;
    • RST:該位設(shè)為 1,表示 TCP 連接出現(xiàn)異常必須強制斷開連接;
    • SYN:用于建立連接,該位設(shè)為 1,表示希望建立連接,并在其序列號的字段進行序列號初值設(shè)定;
    • FIN:該位設(shè)為 1,表示今后不再有數(shù)據(jù)發(fā)送,希望斷開連接。當(dāng)通信結(jié)束希望斷開連接時,通信雙方的主機之間就可以相互交換 FIN 位置為 1 的 TCP 段。每個主機又對對方的 FIN 包進行確認(rèn)應(yīng)答之后可以斷開連接。不過,主機收到 FIN 設(shè)置為 1 的 TCP 段之后不必馬上回復(fù)一個 FIN 包,而是可以等到緩沖區(qū)中的所有數(shù)據(jù)都因為已成功發(fā)送而被自動刪除之后再發(fā) FIN 包;
  • 窗口大小:該字段長 16 位,用于通知從相同 TCP 首部的確認(rèn)應(yīng)答號所指位置開始能夠接收的數(shù)據(jù)大?。? 位字節(jié))。TCP 不允許發(fā)送超過該窗口大小的數(shù)據(jù)。若窗口為 0,則表示可以發(fā)送窗口探測,以了解最新的窗口大小,但這個數(shù)據(jù)必須是 1 個字節(jié);
  • 檢驗和:TCP 的檢驗和與 UDP 檢驗和一樣,也是采用偽首部,但是 TCP 的檢驗和無法關(guān)閉。TCP 偽首部的信息和 UDP 一樣,包括:源 IP 地址、目的 IP 地址、填充、協(xié)議號以及 TCP 包長度;
  • 緊急指針:該字段為 16 位。只有在 URG 控制位為 1 時有效。該字段的數(shù)值表示本報文段中緊急數(shù)據(jù)的指針。從數(shù)據(jù)部分的首位到緊急指針?biāo)诘奈恢脼橹故蔷o急數(shù)據(jù)。因此,緊急指針是指出了緊急數(shù)據(jù)的末尾在報文段中的位置; 

序列號與確認(rèn)應(yīng)答

         在 TCP 中,當(dāng)發(fā)送端的數(shù)據(jù)到達接收端主機時,接收端主機會返回一個已收到消息通知,該消息就是確認(rèn)應(yīng)答(ACK)。TCP 通過確認(rèn)應(yīng)答和序列號實現(xiàn)可靠的數(shù)據(jù)傳輸,若發(fā)送端發(fā)出數(shù)據(jù)之后得到接收端的確認(rèn)應(yīng)答,則表示該數(shù)據(jù)已成功到達接收端,否則可能丟失數(shù)據(jù)。


超時重傳

        超時重傳是指在重發(fā)數(shù)據(jù)之前,等待確認(rèn)應(yīng)答到來的那個特定的時間間隔。若發(fā)送端將數(shù)據(jù)發(fā)送出去之后,在特定的時間內(nèi)沒有收到接收端的確認(rèn)應(yīng)答,則發(fā)送端會重新發(fā)送該數(shù)據(jù),這就是超時重傳機制。

連接管理

        TCP 協(xié)議是提供面向連接的通信傳輸,面向連接是指雙方在進行傳輸數(shù)據(jù)之前必須建立連接。有關(guān) TCP 的建立連接和釋放連接放在后面講解。

窗口控制

        TCP 傳輸數(shù)據(jù)是以 1 個段為單位,每發(fā)送一個段進行一次確認(rèn)應(yīng)答的處理,這樣使通信時包的往返時間很長導(dǎo)致降低通信性能。為了解決這個問題,TCP 引入了窗口控制,確認(rèn)應(yīng)答不再是以每個分段,而是以更大的單位進行確認(rèn),這樣縮短轉(zhuǎn)發(fā)時間,也就是說,發(fā)送端主機在發(fā)送了一個段之后不必要一直等待確認(rèn)應(yīng)答,而是繼續(xù)發(fā)送數(shù)據(jù)段。窗口大小是指無需等待確認(rèn)應(yīng)答而可以發(fā)送數(shù)據(jù)的最大值。


                         


        采用窗口控制機制必須實現(xiàn)緩沖區(qū),在圖 4 中,窗口內(nèi)的數(shù)據(jù)即便是沒有收到確認(rèn)應(yīng)答也可以發(fā)送出去。此外從該窗口中能看到的數(shù)據(jù)是因其某種數(shù)據(jù)已在傳輸中丟失,所以發(fā)送端才能接收到確認(rèn)應(yīng)答,這種情況下需要進行重發(fā)。為此,發(fā)送端主機在等到確認(rèn)應(yīng)答返回之前,必須在緩沖區(qū)中保留這部分的數(shù)據(jù)。在滑動窗口以外的部分包括尚未發(fā)送的數(shù)據(jù)已經(jīng)已經(jīng)確認(rèn)對端已經(jīng)收到的數(shù)據(jù)。當(dāng)數(shù)據(jù)發(fā)出后若如期收到確認(rèn)應(yīng)答就可以不用進行重發(fā),此時數(shù)據(jù)可以從緩沖區(qū)中刪除。收到確認(rèn)應(yīng)答后,將窗口滑到確認(rèn)應(yīng)答中的序列號的位置,這樣可以順序地將多個段同時發(fā)送提供通信性能。這種機制也稱為滑動窗口機制。

流量控制

        流量控制可以讓發(fā)送端根據(jù)接收端的實際接受能力控制發(fā)送的數(shù)據(jù)量。它的具體操作是,接收端主機向發(fā)送端主機通知自己可以接收數(shù)據(jù)的大小,于是發(fā)送端會發(fā)送不會超過該大小的數(shù)據(jù),該限制大小即為窗口大小,即窗口大小由接收端主機決定。TCP 首部中,專門有一個字段來通知窗口大小,接收主機將自己可以接收的緩沖區(qū)大小放在該字段中通知發(fā)送端。當(dāng)接收端的緩沖區(qū)面臨數(shù)據(jù)溢出時,窗口大小的值也是隨之改變,設(shè)置為一個更小的值通知發(fā)送端,從而控制數(shù)據(jù)的發(fā)送量,這樣達到流量的控制。

擁塞控制

        為了防止網(wǎng)絡(luò)擁塞,TCP 采用了一種慢啟動算法,對發(fā)送數(shù)據(jù)量進行控制。為了調(diào)節(jié)發(fā)送端的數(shù)據(jù)發(fā)送量,引入了擁塞窗口,在慢啟動時,將這個擁塞窗口設(shè)為 1 個數(shù)據(jù)段發(fā)送數(shù)據(jù),之后每收到一次確認(rèn)應(yīng)答,擁塞窗口的值就加 1。在發(fā)送數(shù)據(jù)包時,將擁塞窗口的大小與接收端主機通知的窗口大小進行比較,然后選擇較小的值來控制數(shù)據(jù)量的發(fā)送。


參考資料:

《TCP/IP 詳解》

《圖解 TCP/IP》

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
 網(wǎng)絡(luò)層、傳輸層學(xué)習(xí)(TCP/IP協(xié)議)
TCP/IP詳解學(xué)習(xí)筆記(8)
TCP的三次握手與四次揮手
33 張圖詳解 TCP 和 UDP :打通網(wǎng)絡(luò)和應(yīng)用的中間人
TCP/UDP報文格式
C#Socket編程詳解(一)TCP與UDP簡介
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服