tcp是乙個協議,那這個協議是如何定義的,它的資料格式是什麼樣子的呢?要進行更深層次的剖析,就 需要了解,甚至是熟記tcp協議中每個欄位的含義。哦,來吧。
上面就是tcp協議頭部的格式,由於它太重要了,是理解其它內容的基礎,下面就將每個欄位的資訊都詳 細的說明一下。
1、source port和destination port:分別占用16位,表示源埠號和目的埠號;用於區別主機中的不同程序, 而ip位址是用來區分不同的主機的,源埠號和目的埠號配合上ip首部中的源ip位址和目的ip位址就能唯一 的確定乙個tcp連線;
2、sequence number:用來標識從tcp發端向tcp收端傳送的資料字節流,它表示在這個報文段中的的第乙個資料 位元組在資料流中的序號;主要用來解決網路報亂序的問題;
3、acknowledgment number:32位確認序列號包含傳送確認的一端所期望收到的下乙個序號,因此,確認序號應 當是上次已成功收到資料位元組序號加1。不過,只有當標誌位中的ack標誌(下面介紹)為1時該確認序列號的字 段才有效。主要用來解決不丟包的問題;
4、offset:給出首部中32 bit字的數目,需要這個值是因為任選欄位的長度是可變的。這個欄位佔4bit(最多能 表示15個32bit的的字,即4*15=60個位元組的首部長度),因此tcp最多有60位元組的首部。然而,沒有任選字段, 正常的長度是20位元組;
5、tcp flags:tcp首部中有6個標誌位元,它們中的多個可同時被設定為1,主要是用於操控tcp的狀態機的,依次 為urg,ack,psh,rst,syn,fin。每個標誌位的意思如下:
urg:此標誌表示tcp包的緊急指標域(後面馬上就要說到)有效,用來保證tcp連線不被中斷,並且督促 中間層裝置要盡快處理這些資料;
ack:此標誌表示應答域有效,就是說前面所說的tcp應答號將會包含在tcp資料報中;有兩個取值:0和1, 為1的時候表示應答域有效,反之為0;
psh:這個標誌位表示push操作。所謂push操作就是指在資料報到達接收端以後,立即傳送給應用程式, 而不是在緩衝區中排隊;
rst:這個標誌表示連線復位請求。用來復位那些產生錯誤的連線,也被用來拒絕錯誤和非法的資料報;
syn:表示同步序號,用來建立連線。syn標誌位和ack標誌位搭配使用,當連線請求的時候,syn=1, ack=0;連線被響應的時候,syn=1,ack=1;這個標誌的資料報經常被用來進行埠掃瞄。掃瞄者傳送 乙個只syn的資料報,如果對方主機響應了乙個資料報回來 ,就表明這台主機存在這個埠;但是由於這 種掃瞄方式只是進行tcp三次握手的第一次握手,因此這種掃瞄的成功表示被掃瞄的機器不很安全,一台安全 的主機將會強制要求乙個連線嚴格的進行tcp的三次握手;
fin: 表示傳送端已經達到資料末尾,也就是說雙方的資料傳送完成,沒有資料可以傳送了,傳送fin標誌 位的tcp資料報後,連線將被斷開。這個標誌的資料報也經常被用於進行埠掃瞄。
6、window:視窗大小,也就是有名的滑動視窗,用來進行流量控制;這是乙個複雜的問題,這篇博文中並不會進行 總結的;
TCP校驗和字段
1 1的補碼用在tcp ip的校驗和中,而平時學習的補碼時 2 的補碼,即整數的補碼和原碼相同,負數的補碼按位取反加 1 符號位不變 2 1的補碼 是乙個對稱的系統,即乙個數和其相反數 1的補碼 相加結果一定為 0。0分為正 0和負 0,校驗和的計算原理就是基於此,即待傳送資料的 1 的補碼表示法和...
TCP控制字段標誌
在tcp層,有個flags欄位,這個欄位有以下幾個標識 syn,fin,ack,psh,rst,urg.其中,對於我們日常的分析有用的就是前面的五個字段。它們的含義是 urg urget pointer is valid 緊急指標字段值有效 syn 表示建立連線 fin 表示關閉連線 ack 表示響...
TCP控制字段解釋
rtt round trip time 往返時延 rto retransmission timeout 即重傳超時時間 ssl secure sockets layer 安全套接層 及其繼任者傳輸層安全 transport layer security,tls 是為網路通訊提供安全及資料完整性的一種...