TCP協議長什麼樣

爬蜥發表於2018-05-15

TCP協議長什麼樣

  • 1位表示1bit,除去任選欄位(選項和資料)共160bit也就是20位元組
  • 源埠號和目的埠號用於尋找發端和接收端【源埠+源IP地址+目的埠+目的IP地址唯一確定一個TCP連線】
  • 序號用來標識從TCP傳送端向接收端傳送的資料位元組流,他是32bit的無符號數,到達2的32次方-1後又從0開始
  • 確認序號是上次已成功收到資料位元組序號加1【只有ack標識是1時,他才有效】
  • 首部長度標識TCP包首部實際長度,它的單位是32bit【假如數字是6,那麼表示頭部實際長度是 4位元組*6=24位元組,由於首部長度只有4bit,最大數為15,因而最多有15*32bit=480bit=60位元組】
  • URG置為1表示緊急指標有效
  • ACK置為1表示確認序號有效
  • PSH置為1表示接收方應該儘快將這個報文段交給應用層
  • RST置1表示重建連線
  • SYN置1用來發起連線
  • FIN置1表示發端完成傳送任務
  • 視窗大小是TCP用來做流量控制
  • 校驗和覆蓋TCP的首部和TCP資料,它一定由發端計算儲存,收端驗證
  • 緊急指標是一個正偏移量,和序號欄位中的值相加表示緊急資料最後一個欄位的序號
  • 常見可選欄位如MSS(Maximim Segment Size 最長報文大小),用來標識本端能接收的最大長度的報文段

真實tcp報文怎麼看?

以下報文為TCP建立和終止的報文示例

TCP協議長什麼樣

完整格式如下:

報文序號 報文產生時間(與上次報文的時間間隔) 源地址.埠號 >
目的地址 : 標識 分組序號:確認序號(報文段中位元組數) 視窗大小 接收的最大報文長度複製程式碼
  • svr4.1037 >
    bsdi.discard 表示源地址的某個埠到目的地址
  • S是SYN標誌,表示發起連線 ;F是FIN標誌,表示傳送端傳送完資料;. 表示(SIN,FIN,RST,PSH)這四個標識都是0
  • 1415531521:1415531521(0) 表示分組的序號是1415531521,報文段中的資料位元組數為0
  • ack後跟著的數字串是確認序號,它只有首部標識置為1才有用
  • win 4096表示視窗大小
  • <
    mss 1024>
    表示傳送端能接收的最大報文長度

預設情況下tcpdump輸出只顯示SYN報文段的完整序號,其它位置顯示偏移量

TCP協議長什麼樣

tcpdump怎麼用?

常用引數解析

-X :用16進位制顯示具體內容-n:顯示IP,不轉換域名-s 0:儘可能多的展示內容-vvv: 展示詳細內容-i eth1:監聽eth1網路tcp :監聽協議型別dst port 8500:8500埠接收的資料-A:acsii顯示內容複製程式碼

抓取當前機器上的post請求 
sudo tcpdump -i eth1 -X -vvv -n -s 0 'tcp dst port 8500 and tcp[(tcp[12]>
>
2):4] = 0x504f5354'

比如我想獲取post請求的原始IP可以用 
sudo tcpdump -i eth1 -A -vvv -n -s 0 'tcp dst port 8500 and tcp[(tcp[12]>
>
2):4] = 0x504f5354' | grep 'X-Forwarded-For'

抓取當前機器上的get請求 
sudo tcpdump -i eth1 -X -vvv -n -s 0 'tcp dst port 8500 and tcp[(tcp[12]>
>
2):4] = 0x47455420'

上面用到的tcp中括號相關內容是指tcp過濾,位元組範圍表達: proto [ expr : size ] photo表示協議 expr 表示與指定協議開頭相關的位元組偏移量;
如只檢視fin包 tcpdump -i <
interface>
“tcp[tcpflags] &
(tcp-fin) !=0”

TCP協議從那些方面保證可靠性的?

  • 應用資料被分割成TCP認為最適合傳送的資料塊
  • 傳送一個報文段(TCP傳遞給IP資訊的單位)後啟動定時器,如果無法及時收到確認,重發報文
  • 收到報文後,推遲幾分之一秒傳送確認
  • 提供首部和校驗和,校驗和出錯不確認收到此報文,引發重發
  • 必要情況TCP會對收到的資料重排序,將正確的順序交給應用層
  • 接收端會丟棄重複的資料
  • 本身能做流量控制

附錄

把書讀薄(TCP/IP詳解 卷一 第十七章)

來源:https://juejin.im/post/5af9a9986fb9a07ac23adeca

相關文章