TCP協議分析

2021-10-02 05:19:48 字數 2137 閱讀 5172

tcp協議是傳輸層控制協議,是一種面向連線的、可靠的、基於位元組流的傳輸層通訊協議。tcp

為了保證不發生丟包,就給每個包乙個序號,同時序號也保證了傳送到接收端實體的包的按序接收。

tcp用乙個校驗和函式來檢驗資料是否有錯誤;在傳送和接收時都要計算校驗和。

三次握手抓包:

客戶端傳送syn(seq=x)報文給伺服器端,進入syn_send狀態。當某個主機開啟乙個tcp會話時,他的初始序列號是隨機的,可能是0和4,294,967,295之間的任意值。

伺服器端收到syn報文,回應乙個syn (seq=y)ack(ack=x+1)報文,進入syn_recv狀態。

客戶端收到伺服器端的syn報文,回應乙個ack(ack=y+1)報文,進入established狀態。它的seq是它的上個請求的seq加1。

資料傳輸:

[psh,ack] 進行資料傳輸,seq為上個客戶端訊息的ack的填充,ack為上個客戶端訊息seq+資料長度。

四次關閉:

由於客戶端主動傳送關閉之後,服務端還有可能進行資料的傳送,所以此時還是半關閉狀態,資料還可以進行傳輸,等待資料傳輸完成之後,伺服器再傳送乙個fin訊息給客戶端。客戶端收到訊息之後,傳送ack的確認訊息後,斷開連線。

本機客戶端大包的分片:

在linux下伺服器端抓包顯示超過了mtu 1500個位元組

檢視ethtool -k eth0網絡卡generic-receive-offload: on為開啟狀態。

ethtool -k ens33 gro off關閉之後抓包後顯示正常。

ethtool -k < 網路介面》,可以看到很多網路介面的offload特性。

這些offload特性都是為了提公升網路收/發效能。tso、ufo和gso是對應網路傳送,在接收方向上對應的是lro、gro。

tsotso(tcp segmentation offload),是一種利用網絡卡對tcp資料報分片,減輕cpu負荷的一種技術,有時也被叫做 lso (large segment offload) ,tso是針對tcp的,ufo是針對udp的。如果硬體支援 tso功能,同時也需要硬體支援的tcp校驗計算和分散/聚集 (scatter gather) 功能。

gsogso(generic segmentation offload),它比tso更通用,基本思想就是盡可能的推遲資料分片直至傳送到網絡卡驅動之前,此時會檢查網絡卡是否支援分片功能(如tso、ufo),如果支援直接傳送到網絡卡,如果不支援就進行分片後再發往網絡卡。這樣大資料報只需走一次協議棧,而不是被分割成幾個資料報分別走,這就提高了效率。

lrolro(large receive offload),通過將接收到的多個tcp資料聚合成乙個大的資料報,然後傳遞給網路協議棧處理,以減少上層協議棧處理 開銷,提高系統接收tcp資料報的能力。

grogro(generic receive offload),基本思想跟lro類似,克服了lro的一些缺點,更通用。後續的驅動都使用gro的介面,而不是lro。

rssrss(receive side scaling),是一項網絡卡的新特性,俗稱多佇列。具備多個rss佇列的網絡卡,可以將不同的網路流分成不同的佇列,再分別將這些佇列分配到多個cpu核心上進行處理,從而將負荷分散,充分利用多核處理器的能力。

介面協議之抓包分析 TCP 協議

本文節選自霍格沃茲測試學院內部教材 tcp 協議是在傳輸層中,一種面向連線的 可靠的 基於位元組流的傳輸層通訊協議。環境準備 對介面測試工具進行分類,可以如下幾類 抓包分析tcp協議 tcpdump tcpdump是一款將網路中傳送的資料報的 頭 完全截獲下來提供分析的工具。它支援針對網路層 協議 ...

TCP協議分析(包結構) 轉

tcp首部格式 tcp資料是被封裝在ip資料報中的,和udp類似,在ip資料報的資料部分。tcp資料報的格式如下 源埠號和目的埠號 定址 與udp中類似,用於尋找發端和收端應用程序。這兩個值加上ip首部中的源端ip位址和目的端ip位址唯一確定乙個,在網路程式設計中,一般乙個ip位址和乙個埠號組合稱為...

基於tcp的網路程式設計協議分析

在本地電腦的虛擬機器上搭建乙個tcp伺服器,如下 include include include include include include include include define buffer size 128 int main int argc,char ar if argc 3 if...