TCP报文段首部格式详解
生活随笔
收集整理的這篇文章主要介紹了
TCP报文段首部格式详解
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
TCP首部格式
格式字段詳解
源端口、目標端口:計算機上的進程要和其他進程通信是要通過計算機端口的,而一個計算機端口某個時刻只能被一個進程占用,所以通過指定源端口和目標端口,就可以知道是哪兩個進程需要通信。源端口、目標端口是用16位表示的,可推算計算機的端口個數為2^16個。 序列號:表示本報文段所發送數據的第一個字節的編號。在TCP連接中所傳送的字節流的每一個字節都會按順序編號。由于序列號由32位表示,所以每2^32個字節,就會出現序列號回繞,再次從 0 開始。那如何區分兩個相同序列號的不同TCP報文段就是一個問題了,后面會有答案,暫時可以不管。 確認號:表示接收方期望收到發送方下一個報文段的第一個字節數據的編號。也就是告訴發送發:我希望你(指發送方)下次發送的數據的第一個字節數據的編號是這個確認號。也就是告訴發送方:我希望你(指發送方)下次發送給我的TCP報文段的序列號字段的值是這個確認號。 TCP首部長度:由于TCP首部包含一個長度可變的選項部分,所以需要這么一個值來指定這個TCP報文段到底有多長。或者可以這么理解:就是表示TCP報文段中數據部分在整個TCP報文段中的位置。該字段的單位是32位字,即:4個字節。 URG:表示本報文段中發送的數據是否包含緊急數據。URG=1,表示有緊急數據。后面的緊急指針字段只有當URG=1時才有效。 ACK:表示是否前面的確認號字段是否有效。ACK=1,表示有效。只有當ACK=1時,前面的確認號字段才有效。TCP規定,連接建立后,ACK必須為1。 PSH:告訴對方收到該報文段后是否應該立即把數據推送給上層。如果為1,則表示對方應當立即把數據提交給上層,而不是緩存起來。 RST:只有當RST=1時才有用。如果你收到一個RST=1的報文,說明你與主機的連接出現了嚴重錯誤(如主機崩潰),必須釋放連接,然后再重新建立連接?;蛘哒f明你上次發送給主機的數據有問題,主機拒絕響應。 SYN:在建立連接時使用,用來同步序號。當SYN=1,ACK=0時,表示這是一個請求建立連接的報文段;當SYN=1,ACK=1時,表示對方同意建立連接。SYN=1,說明這是一個請求建立連接或同意建立連接的報文。只有在前兩次握手中SYN才置為1。 FIN:標記數據是否發送完畢。如果FIN=1,就相當于告訴對方:“我的數據已經發送完畢,你可以釋放連接了” 窗口大小:表示現在運行對方發送的數據量。也就是告訴對方,從本報文段的確認號開始允許對方發送的數據量。 校驗和:提供額外的可靠性。具體如何校驗,參考其他資料。 緊急指針:標記緊急數據在數據字段中的位置。 選項部分:其最大長度可根據TCP首部長度進行推算。TCP首部長度用4位表示,那么選項部分最長為:(2^4-1)*4-20=40字節。 選項部分的應用:
總結
以上是生活随笔為你收集整理的TCP报文段首部格式详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: TCP 滑动窗口协议
- 下一篇: IntelliJ IDEA导航特性Top