根據報文格式來理解TCP協議

來源:互聯網
上載者:User

    TCP協議規定了在不同主機間進行可靠資料流傳輸的通用方法,如 串連建立與釋放、報文編號、收到資料報後的確認、流量控制、發送逾時等等。靠死記硬背來學習這些東西,沒過幾天就又忘記了。我發現根據TCP報文格式來瞭解掌握這些知識,效果還是不錯的。看到下面這張圖(此圖來源於網路),就能回憶起關於TCP協議的大部分東西:

(該圖來源於網路)

Source Port,Destination Port:源連接埠號碼,目標連接埠號碼。IP實現了點到點的資料通訊,而TCP實現的是端到端的通訊。通訊端用一個IP與連接埠號碼來唯一標識。(其實連接埠號碼就是用來標識同一主機中的不同進程。)IP協議負責將資料轉送到目標主機,而TCP可以根據資料報中的連接埠號碼,將資料交給相應的程式進行處理。

Sequence Number:發送序號。IP實現點到點的通訊,這種通訊是不可靠的。IP資料報可能會丟失或亂序到達目標主機,而TCP提供一種可靠的通訊方式。它通過對發送的資料報進行編號(準確的說應該是對資料流進行編號)來實現可靠通訊。如:應用程式發送2048個位元組資料到目標主機,TCP協議首先將這些資料報打包成一個一個的資料報,然後對其進行編號。假設每個資料報攜帶的資料的長度是100個位元組,第一個資料報的編號是1, 那麼第二個資料報的編號就是101,第三個的編號是201,以此類推。

Acknowledgment Number: 確認序號。對於發送端來講,這個序號表示下一個tcp報文的起始序號,對於接收端來講,表示下一個希望接收到報文的序號。

Data Offset:該欄位佔用4個位元組,用來表示報文首部的長度,單位是4byte。例如:0x05 表示 報文的首部長度是 5 * 4 = 20個位元組。

Reserved:該欄位佔用6個位元組,作為保留欄位,暫時沒有什麼用處。

後面是六個標識位(uaprsf,記得每個單詞的首字母):

  1. URG(ent): 如果該位置為1,表示該報文比較緊急,要趕緊傳輸。
  2. ACK:確認序號。跟上面的Acknowledgment Number有點關係。只有該位置為1時,Acknowledgment Number才有效。
  3. PSH:push,推。表示接收到接到報文後,要趕緊傳遞給應用程式層。
  4. RST: reset,重設串連。
  5. SYN: 同步。在建立串連的時候,用到該標識位。
  6. FIN:終止。在釋放串連的時候,用到該標識位。

Window:滑動視窗的大小。用於通訊雙方的流量控制。為了保證通訊的可靠性,TCP對報文進行編號,然後發送。接收到接到報文後,要向發送方進行確認。一般情況下,發送方不是在收到確認訊息之後才發下一個報文,這些網路的利用率太低,而是在沒有收到確認訊息時,可以發送的資料是有個最大上限。

Checksum:對報文進行校正。如果校正失敗,就丟棄該報文。

Urgent Pointer:智能針針。具體我還不清楚,網上一些資料的解釋是:指向後面是優先資料的位元組。

Options:選項。當前tcp只定義了一個選項:最大報文段長度。它用於告訴通訊的另一方,當前協議框緩衝區所能接收到報文段的最大長度。

Padding:填充段。確保報文頭的長度能為32整除。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.