<big id="vrdwa"></big>
<big id="vrdwa"><strong id="vrdwa"></strong></big>
    1. <code id="vrdwa"><strong id="vrdwa"><dl id="vrdwa"></dl></strong></code>

    2. 熱門搜索:
    3. 裝機系統
    4. 雨林木風系統
    5. 深度系統
    6. 電腦公司系統
    7. win7裝機版
    8. 教程分類
      當前位置:主頁 > 教程咨詢 > Linux教程

      TCP協議圖文詳解

      來源:裝機員┆發布時間:2018-10-09 06:00┆點擊:

      裝機員為您提供TCP協議圖文詳解的文章咨詢供您閱讀,如何使用TCP協議圖文詳解的方法對您有幫助也請您舉手之勞分享給您身邊的人。

      TCP是TCP/IP體系中非常復雜的一個協議,TCP最主要的特點有:

      1.TCP是面向連接的運輸層協議。應用程序在使用Linux/19621.html">TCP協議之前,必須先建立TCP連接。在傳遞數據完畢后,必須釋放已建立的TCP連接。

      2.每一條TCP連接只能有兩個端點,只能說點對點的。

      3.TCP提供可靠交付的服務,通過TCP連接傳送的數據,無差錯,不丟失,不重復,并且按序到達。

      4.TCP提供全雙工通信。TCP允許通信雙方的應用進程在任何時候都能發送數據。TCP連接的兩端都設有發送緩存和接收緩存,用來臨時存放雙向通信的數據。

      5.面向字節流。TCP中的“流”指的是流入到進程或從進程流出的字節序列。“面向字節流”的含義是:雖然應用程序和TCP的交互是一次一個數據塊(大小不等),但TCP把應用程序交下來的數據看成僅僅是一連串的無結構的字節流。TCP并不知道所傳送的字節流的含義。TCP不保證接收方應用程序所收到的數據塊和發送方應用程序所發出的數據塊具有對應大小的關系。但接收方應用程序收到的字節流必須和發送方應用程序發出的字節流完全一樣。當然,接收方的應用程序必須有能力識別收到的字節流,把它還原成有意義的應用層數據。

      TCP協議圖文詳解

      TCP報文段先要傳到IP層,加上IP首部后,再傳送到數據鏈路層。再加上數據鏈路層的首部和尾部,才離開主機發送到物理鏈路。

      a.TCP和UDP在發送報文時所采用的方式完全不同。TCP并不關心應用程序一次把多長的報文發送到TCP緩存中,而是根據對方給出的窗口值和當前網絡擁塞的程度來決定一個報文段應包含多少個字節(UDP發送的報文長度是應用程序給出的)。

      b.如果應用程序傳送到TCP緩存的數據塊太大,TCP就可以把它劃分短一些再傳。TCP也可以等待積累有足夠多的字節后再構建成報文段發送出去。

      二:TCP包頭格式

      TCP協議重定解決的問題:

      順序問題,穩重不亂;丟包問題,承諾靠譜;連接維護,有始有終;流量控制,把握分寸;擁塞控制,知進知退。

      TCP協議圖文詳解

      TCP把連接作為最基本的抽象,每個TCP連接有兩個端點。TCP連接的端口叫做套接字,端口號拼接到IP地址即構成了套接字(如:192.3.4.5:80)。

      1.源端口號和目標端口號是不可少的,裝機系統,這一點和UDP是一樣的,如果沒有這兩個端口號,數據就不知道應該發送給哪個應用。

      2.包的序號:為了解決亂序的問題

      3.確認序號:發出去的包應該有確認,如果沒有收到就應該重新發送,直到送達,這個可以解決不丟包的問題

      4.狀態位:ACK是回復,RST是重新連接,FIN是結束連接。

      三:TCP連接三次握手

      TCP協議圖文詳解

      1.一開始,客戶端和服務端都處于CLOSED狀態

      2.先是服務端主動監聽某個端口,處于LISTEN狀態

      3.客戶端主動發起連接SYN,之后處于SYN-SENT狀態

      4.服務端收到發起的連接,返回SYN,并且ACK客戶端的SYN,之后處于SYN-RCVD狀態

      5.客戶端收到服務端發送的SYN和ACK之后,發送ACK的ACK,之后處于ESTABLISHED狀態。

      6.服務端收到ACK的ACK之后,處于ESTABLISHED狀態。

      四:TCP連接釋放四次揮手

      TCP協議圖文詳解

      1.當前A和B都處于ESTAB-LISHED狀態。

      2.A的應用進程先向其TCP發出連接釋放報文段,并停止再發送數據,主動關閉TCP連接。

      3.B收到連接釋放報文段后即發出確認,然后B進入CLOSE-WAIT(關閉等待)狀態。TCP服務器進程這時應通知高層應用進程,因而從A到B這個方向的連接就釋放了,這時TCP連接處于半關閉狀態,即A已經沒有數據發送了。

      從B到A這個方向的連接并未關閉,這個狀態可能會持續一些時間。

      4.A收到來自B的確認后,就進入FIN-WAIT-2(終止等待2)狀態,等待B發出的連接釋放報文端。

      5.若B已經沒有向A發送的數據,B發出連接釋放信號,這時B進入LAST-ACK(最后確認)狀態等待A的確認。

      6.A再收到B的連接釋放消息后,必須對此發出確認,然后進入TIME-WAIT(時間等待)狀態。請注意,現在TCP連接還沒有釋放掉,必須經過時間等待計時器(TIME-WAIT timer)設置的時間2MSL后,A才進入CLOSED狀態。

      7。B收到A發出的確認消息后,進入CLOSED狀態。

      五:TCP狀態機

      TCP協議圖文詳解

      一.以字節為單位的滑動窗口

      TCP協議圖文詳解

      在TCP里,接收端(B)會給發送端(A)報一個窗口的大小,叫Advertised windowsdow。

      1.在沒有收到B的確認情況下,A可以連續把窗口內的數據都發送出去。凡是已經發送過的數據,在

      未收到確認之前都必須暫時保留,以便在超時重傳時使用。

      2.發送窗口里面的序號表示允許發送的序號。顯然,窗口越大,發送方就可以在收到對方確認之前連續

      發送更多數據,因而可能獲得更高的傳輸效率。但接收方必須來得及處理這些收到的數據。

      3.發送窗口后沿的后面部分表示已發送且已收到確認。這些數據顯然不需要再保留了。

      4.發送窗口前沿的前面部分表示不允許發送的,應為接收方都沒有為這部分數據保留臨時存放的緩存空間。

      5.發送窗口后沿的變化情況有兩種:不動(沒有收到新的確認)和前移(收到了新的確認)

      6.發送窗口前沿的變化情況有兩種:不斷向前移或可能不動(沒收到新的確認)

      二.超時重傳時間的選擇

      TCP的發送方在規定時間內沒有收到確認就要重傳已發送的報文段。這種重傳的概念很簡單,但重傳時間的選擇

      確是TCP最復雜的問題之一。TCP采用了一種自適應算法,它記錄一個報文段發出的時間,以及收到相應的確認的時間

      這兩個時間之差就是報文段的往返時間RTT。TCP保留了RTT的一個加權平均往返時間。超時重傳時間RTO略大于加權平均往返時間。

      TCP協議圖文詳解

      三:選擇確認SACK

      TCP協議圖文詳解

      如果收到的報文段無差錯,只是未按序號,中間還缺少一些序號的數據,那么能否設法只傳送缺少的數據而不重傳已經正確到達接收方的數據?

      答案是可以的,選擇確認就是一種可行的處理方法。


      以上就是裝機員給大家介紹的如何使用TCP協議圖文詳解的方法了,如何使用TCP協議圖文詳解的方法到這里也全部結束了相信大家對如何使用TCP協議圖文詳解的方法都有一定的了解了吧,好了,如果大家還想了解更多的資訊,那就趕緊點擊裝機員系統官網吧。

      本文來自裝機員www.85424462.com如需轉載請注明!

      Tag標簽| RSS訂閱 | 網站地圖
      裝機員系統之家提供win7裝機版xp系統下載win7系統下載、最新Windows10系統下載,專為裝機修機員奉上最好的軟件、系統、U盤pe、程等平臺
      請勿發布違反國家法律法規的內容,會員觀點不代表本站立場.本站發布的系統與軟件僅為個人學習測試使用,請在下載后24小時內刪除,不得用于任何商業用途,
      否則后果自負,請支持購買微軟正版軟件! 如侵犯到您的權益,請及時通知我們,我們會及時處理。 粵ICP備15116662號
      一尾中特平
      <big id="vrdwa"></big>
      <big id="vrdwa"><strong id="vrdwa"></strong></big>
        1. <code id="vrdwa"><strong id="vrdwa"><dl id="vrdwa"></dl></strong></code>
          <big id="vrdwa"></big>
          <big id="vrdwa"><strong id="vrdwa"></strong></big>
            1. <code id="vrdwa"><strong id="vrdwa"><dl id="vrdwa"></dl></strong></code>