【網絡】wireshark出現rst的原因_wireshark分析(傳輸層,網絡層,鏈路層)

wireshark抓包軟件總是友善地幫包分層...


1.鏈路層。

Ethernet II協議即以太網協議。以太網幀的格式如下:

這裏的地址指的是MAC地址,每一個網卡對應唯一的MAC。 類型指的是IP、ARP...... 。CRC效驗數據是否異常。

在wireshark 中,數據包的第二行指的是鏈路層協議。在Ethernet II中,SRC表示的是源地址。DST代表目的地址。Type(類型)爲0x0800指IPv4協議,0x86dd IPv6協議數據,0x809B AppleTalk協議數據,0x8138 Novell類型協議數據等。0x0806ARP,0x0600 XNS (Xerox),0x6003 DECNET 。

幀結構,Ethernet II型幀前12字節分別標識出發送數據幀的源節點MAC地址和接收數據幀的目標節點MAC地址。接下來的2個字節標識出以太網幀所攜帶的上層數據類型。(兩位16進制等於一字節)。最後是4字節CRC效驗數據,採用32位CRC循環冗餘校驗對從"目標MAC地址"字段到"數據"字段的數據進行校驗 。
2.網絡層

IPv4協議。其報文的格式如下:

IPv4報文有首部和數據兩部分組成。首部是固定長度,20字節,且所有IPv4報文所共有。數據部分字段可選,長度可變。

wireshark中幀字段的含義:

    Version(版本):分爲IPv4,IPv6。
    Header Length:IPv4的首部長度。
    Differentiated Services Field(區分服務):用來獲得更好的服務, 用來指定特殊的數據包處理方式。
    Total Length:指首部和數據的總長度。
    Identification:IPv4在存儲器中維持一個計數器,每產生一個數據包,計數器加一,把值賦給該字段。
    Flags:目前只有兩位有意義。最低位爲1表示後面“還有分片”的數據報,爲0表示這已經是最後一個數據片;中間一位爲1表示“不能分片”,爲0才允許分片。
    片偏移:13位,較長的分組在經過通信鏈路中因爲分組過大進行分片,分片後在原分組中的相對位置。片偏移以8字節爲偏移單位
    Time to Live(生存時間):表示數據包在網絡中的壽命,英文縮寫是TTL(Time To Live),功能是“跳數限制”。
    Protocol:指出此數據包攜帶數度的協議。
    Header checksum(首部效驗和):數據包每經過一個路由器,路由器都要重新計算一下首部檢驗和,若首部未發生變化,則此結果必爲0,於是就保留這個數據報。這個字段只檢驗數據報的首部,但不包括數據部分。
    Source:發送數據包方IPv4地址。
    Destinatio:接受方IPv4地址。
    選項字段:1字節到40字節不等。長度可變,支持排錯,測量,安全等措施

ARP協議

地址解析協議(Address Resolution Protocol),其基本功能爲透過目標設備的IP地址,查詢目標設備的MAC地址,以保證通信的順利進行。它是IPv4中網絡層必不可少的協議,不過在IPv6中已不再適用,並被鄰居發現協議(NDP)所替代。

假設主機A和B在同一個網段,主機A要向主機B發送信息,主機A首先查看自己的ARP表,確定其中是否包含有主機B對應的ARP表項。如果找到了對應的MAC地址,則主機A直接利用ARP表中的MAC地址,對IP數據包進行幀封裝,並將數據包發送給主機B。如果主機A在ARP表中找不到對應的MAC地址,則將緩存該數據報文,然後以廣播方式發送一個ARP請求報文。ARP請求報文中的發送端IP地址和發送端MAC地址爲主機A的IP地址和MAC地址,目標IP地址和目標MAC地址爲主機B的IP地址和全爲0的MAC地址。由於ARP請求報文以廣播方式發送,該網段上的所有主機都可以接收到該請求,但只有被請求的主機(即主機B)會對該請求進行處理。主機B比較自己的IP地址和ARP請求報文中的目標IP地址,當兩者相同時進行如下處理:將ARP請求報文中的發送端(即主機A)的IP地址和MAC地址存入自己的ARP表中。之後以單播方式發送ARP響應報文給主機A,其中包含了自己的MAC地址。主機A收到ARP響應報文後,將主機B的MAC地址加入到自己的ARP表中以用於後續報文的轉發,同時將IP數據包進行封裝後發送出去。
ARP詳解​blog.csdn.net


arp在wireshark上的分析:

Hardware type(網卡類型):以太網(Ethernet)是1。我們常見的網絡都是以太網

Protocol type:查詢中提供的網絡地址的類型,IPv4是0x0800。

Harware size:網卡地址長度,以太網網卡是6字節。

Protocol size:查詢中提供的網絡地址的的長度,IPv4是4字節。

Opcode:查詢包值爲1,響應包值爲2。

Sender MAC address:發送者的Mac地址。

Sender IP address:發送者的IP地址。

Target MAC address:接收者的Mac地址,指向性查詢包是MAC地址表中記錄的mac,廣播性查詢包是00:00:00:00:00:00。(注意區分ARP頭和Eth頭,指向性查詢包Eth頭的dst mac是MAC地址表中記錄的mac,而廣播性查詢包是ff:ff:ff:ff:ff:ff)。

Target protocol address:要查詢目標的mac地址的ip。
3.傳輸層

TCP協議

TCP是一種面向連接的協議,很多應用層協議都使用TCP來確保文件在傳輸過程中不會出現丟包情況。TCP就像雙向通信過程,不只發送方會參與通信,接受方也會主動參與到連接建立當中。TCP通信過程中,會執行一個三次握手的進程,以便在參與通信的兩臺主機之間創建出一條獨立的通道。

TCP報文:
TCP報文頭部

TCP報文分爲頭部和數據兩部分。頭部通常是20字節,但有時會因爲選項增加。

下面我們來結合wireshark分析:

Source Port(源端口):指通信發送方使用的端口號

Destination Port(目的端口):通信接收方使用的端口號

Sequence number(序列號):確保數據可靠傳輸的一個唯一值。TCP使用序列號追蹤每個數據段的傳輸情況

Acknowledgment number(確認號):接收端發送,提示發送端下一次該發的數據在整個文件中的序號。接收端收到後,會把這個序號之前的數據從緩存中刪掉。

Header Length:頭部長度也叫數據偏移

Flags(標記):

    SYN(同步):發起連接的數據包,連接即握手進程
    ACK(確認):確認接受到數據的數據包,也會用來發起和斷開鏈接
    RST(重置):數據包表示之前嘗試建立的連接已被關閉或通信應用不接受連接
    FIN(結束):終止連接的數據包,發送方和接收方都要通過FIN數據包終止連接
    PSH(推送):數據包表示入住那數據包應該直接發送給應用,而不應該緩衝
    URG(緊急):表示數據包中承載的數據應立即由TCP協議棧處理
    CWR(擁賽窗口減小):數據包表示傳輸導致緩衝區已滿或擁賽,通信各方應該降低傳輸速率,以免丟包

Window Size Value(窗口大小):這個字段表示的是發送方可以發送的數據總量。這個總量是在握手過程中決定的。在握手過程中,通信雙方的主機匹配緩衝區大小。

Checksum(效驗和):判斷接受數據的完整性。可以讓通信方確認TCP數據段中的內容是否發生變化了。

Urgent pointer(緊急指針):只有當 URG 標誌置 1 時緊急指針纔有效。TCP 的緊急方式是發送端向另一端發送緊急數據的一種方式。

Options(可選項):包含三部分,1---標識可選項字段長度 2---標識數據包中的可選項 3---包含數據包中可選項。最常見的可選項字段是MSS(Maximum segment size)最長報文大小,每個連接方通常都在通信的第一個報文段(爲建立連接而設置SYN標誌爲1的那個段)中指明這個選項,它表示本端所能接受的最大報文段的長度。

TCP三次握手分析:

所謂三次握手(Three-Way Handshake)即建立TCP連接,就是指建立一個TCP連接時,需要客戶端和服務端總共發送3個包以確認連接的建立。在socket編程中,這一過程由客戶端執行connect來觸發,整個流程如下圖所示:

三次握手建立連接後纔會傳輸數據(HTTP等)

然後我們通過wireshake分析(借鑑)

紅色方框爲本機192.168.1.101和服務器47.95.165.112之間的三次握手協議。三次握手協議的過程爲:

    客戶端通過TCP首部發送一個SYN包(seq=0)作爲建立連接的請求等待確認應答。
    服務器發送SYN/ACK包(seq=0,ack=1)確認應答
    客戶端發送ACK包(seq=1,ack=1)確認應答。

以下爲鏈接:
wireshark分析TCP三次握手建立連接​blog.csdn.net

在所有數據傳輸完成後,客戶端或服務器端會發送FIN/ACK數據包以終結這條連接。服務器也會對此作出反應。這個過程叫四次握手斷開連接。

    服務器端向客戶端發送FIN/ACK包
    客戶端接收後發送ACK包
    服務器接收後發送FIN/ACK包
    客戶端接收後發送ACK包

異常TCP流量:

在某些環境下會出現RST(重置)數據包,其基本作用是爲了標識用戶嘗試發起的鏈接意外中斷了。服務器沒有運行服務器後臺程序,客戶端則在嘗試進行通信。導致客戶端發送的每個SYN請求都收到了RST數據包。

惡意用戶嘗試在網絡中執行端口掃描,防火牆用RST包對用戶進行相應避免攻擊。或者惡意用戶尋找的端口已關閉

效驗和的作用:當發送方準備傳輸數據包時,會計算出數據包所含數據的效驗和,並且將效驗和和數據一同發送。接受方收到後,用與發送方相同算法計算效驗和。如果效驗和一致,接收方接受,效驗和不匹配則會丟棄數據包。但對效驗和進行效驗不能保證數據沒有變化。攜帶無效效驗和數據的數據包,會以黑色作爲背景色,紅色爲前景色。在wireshark中禁止Validate checksum(在接口上關閉效驗和卸載的特性)是爲了防止網絡混亂 。

PS:wireshark中追蹤SYN包,tcp .flags=0×002
————————————————
版權聲明:本文爲CSDN博主「大包子狸」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/weixin_42550750/article/details/112451386

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章