Wireshark 基本介紹和學習 TCP 三次握手

2021-02-16 Python開發者

(點擊上方藍字,快速關注我們)

來源:肖佳

www.cnblogs.com/TankXiao/archive/2012/10/10/2711777.html

如有好文章投稿,請點擊 → 這裡了解詳情

這篇文章介紹另一個好用的抓包工具 Wireshark, 用來獲取網絡數據封包,包括 HTTP、TCP、UDP 等網絡協議包。

記得大學的時候就學習過TCP的三次握手協議,那時候只是知道,雖然在書上看過很多TCP和UDP的資料,但是從來沒有真正見過這些數據包, 老是感覺在雲上飄一樣,學得不踏實。有了wireshark就能截獲這些網絡數據包,可以清晰的看到數據包中的每一個欄位。更能加深我們對網絡協議的理解。對我而言, wireshark 是學習網絡協議最好的工具。

閱讀目錄

wireshark介紹

wireshark不能做的

wireshark VS Fiddler

同類的其他工具

什麼人會用到wireshark

wireshark 開始抓包

wireshark 窗口介紹

wireshark 顯示過濾

保存過濾

過濾表達式

封包列表(Packet List Pane)

封包詳細信息 (Packet Details Pane)

wireshark與對應的OSI七層模型

TCP包的具體內容

實例分析TCP三次握手過程

wireshark介紹

wireshark的官方下載網站: http://www.wireshark.org/

wireshark是非常流行的網絡封包分析軟體,功能十分強大。可以截取各種網絡封包,顯示網絡封包的詳細信息。

wireshark是開源軟體,可以放心使用。 可以運行在Windows和Mac OS上。

使用wireshark的人必須了解網絡協議,否則就看不懂wireshark了。

Wireshark不能做的

為了安全考慮,wireshark只能查看封包,而不能修改封包的內容,或者發送封包。

Wireshark VS Fiddler

Fiddler是在windows上運行的程序,專門用來捕獲HTTP,HTTPS的。

wireshark能獲取HTTP,也能獲取HTTPS,但是不能解密HTTPS,所以wireshark看不懂HTTPS中的內容

總結,如果是處理HTTP,HTTPS 還是用Fiddler,  其他協議比如TCP,UDP 就用wireshark

同類的其他工具

微軟的network monitor

sniffer

什麼人會用到wireshark

1. 網絡管理員會使用wireshark來檢查網絡問題

2. 軟體測試工程師使用wireshark抓包,來分析自己測試的軟體

3. 從事socket編程的工程師會用wireshark來調試

4. 聽說,華為,中興的大部分工程師都會用到wireshark。

總之跟網絡相關的東西,都可能會用到wireshark.

wireshark 開始抓包

開始界面

wireshark是捕獲機器上的某一塊網卡的網絡包,當你的機器上有多塊網卡的時候,你需要選擇一個網卡。

點擊Caputre->Interfaces.. 出現下面對話框,選擇正確的網卡。然後點擊」Start」按鈕, 開始抓包

Wireshark 窗口介紹

WireShark 主要分為這幾個界面

1. Display Filter(顯示過濾器),  用於過濾

2. Packet List Pane(封包列表), 顯示捕獲到的封包, 有源地址和目標地址,埠號。 

3. Packet Details Pane(封包詳細信息), 顯示封包中的欄位

4. Dissector Pane(16進位數據)

5. Miscellanous(地址欄,雜項)

Wireshark 顯示過濾

使用過濾是非常重要的, 初學者使用wireshark時,將會得到大量的冗餘信息,在幾千甚至幾萬條記錄中,以至於很難找到自己需要的部分。搞得暈頭轉向。

過濾器會幫助我們在大量的數據中迅速找到我們需要的信息。

過濾器有兩種,

一種是顯示過濾器,就是主界面上那個,用來在捕獲的記錄中找到所需要的記錄

一種是捕獲過濾器,用來過濾捕獲的封包,以免捕獲太多的記錄。 在Capture -> Capture Filters 中設置

保存過濾

在Filter欄上,填好Filter的表達式後,點擊Save按鈕, 取個名字。比如」Filter 102″,

Filter欄上就多了個」Filter 102″ 的按鈕。

過濾表達式的規則

表達式規則

1. 協議過濾

比如TCP,只顯示TCP協議。

2. IP 過濾

比如 ip.src ==192.168.1.102 顯示源地址為192.168.1.102,

ip.dst==192.168.1.102, 目標地址為192.168.1.102

3. 埠過濾

tcp.port ==80,  埠為80的

tcp.srcport == 80,  只顯示TCP協議的願埠為80的。

4. Http模式過濾

http.request.method==」GET」,   只顯示HTTP GET方法的。

5. 邏輯運算符為 AND/ OR

常用的過濾表達式

封包列表(Packet List Pane)

封包列表的面板中顯示,編號,時間戳,源地址,目標地址,協議,長度,以及封包信息。 你可以看到不同的協議用了不同的顏色顯示。

你也可以修改這些顯示顏色的規則,  View ->Coloring Rules.

封包詳細信息 (Packet Details Pane)

這個面板是我們最重要的,用來查看協議中的每一個欄位。

各行信息分別為

Frame:   物理層的數據幀概況

Ethernet II: 數據鏈路層乙太網幀頭部信息

Internet Protocol Version 4: 網際網路層IP包頭部信息

Transmission Control Protocol:  傳輸層T的數據段頭部信息,此處是TCP

Hypertext Transfer Protocol:  應用層的信息,此處是HTTP協議

wireshark與對應的OSI七層模型

TCP包的具體內容

從下圖可以看到wireshark捕獲到的TCP包中的每個欄位。

實例分析TCP三次握手過程

看到這, 基本上對wireshak有了初步了解, 現在我們看一個TCP三次握手的實例

三次握手過程為

這圖我都看過很多遍了, 這次我們用wireshark實際分析下三次握手的過程。

打開wireshark, 打開瀏覽器輸入 http://www.cnblogs.com/tankxiao

在wireshark中輸入http過濾, 然後選中GET /tankxiao HTTP/1.1的那條記錄,右鍵然後點擊」Follow TCP Stream」,

這樣做的目的是為了得到與瀏覽器打開網站相關的數據包,將得到如下圖

圖中可以看到wireshark截獲到了三次握手的三個數據包。第四個包才是HTTP的, 這說明HTTP的確是使用TCP建立連接的。

第一次握手數據包

客戶端發送一個TCP,標誌位為SYN,序列號為0, 代表客戶端請求建立連接。 如下圖

第二次握手的數據包

伺服器發回確認包, 標誌位為 SYN,ACK. 將確認序號(Acknowledgement Number)設置為客戶的I S N加1以.即0+1=1, 如下圖

第三次握手的數據包

客戶端再次發送確認包(ACK) SYN標誌位為0,ACK標誌位為1.並且把伺服器發來ACK的序號欄位+1,放在確定欄位中發送給對方.並且在數據段放寫ISN的+1, 如下圖:

就這樣通過了TCP三次握手,建立了連接。

覺得本文對你有幫助?請分享給更多人

關注「程式設計師的那些事」,看技術乾貨

↓↓↓

相關焦點

  • 史上最簡單的 Wireshark 和 TCP 入門指南
    記得大學的時候就學習過TCP的三次握手協議,那時候只是知道,雖然在書上看過很多TCP和UDP的資料,但是從來沒有真正見過這些數據包, 老是感覺在雲上飄一樣,學得不踏實。有了wireshark就能截獲這些網絡數據包,可以清晰的看到數據包中的每一個欄位。更能加深我們對網絡協議的理解。對我而言, wireshark 是學習網絡協議最好的工具。
  • 從源碼看tcp三次握手(上)
    著名的TCP三次握手 前面已經介紹過常用套接字接口函數,也就是伺服器調用bind、listen 以及 accept 等待客戶端進行連接,而客戶端connect函數主動請求連接伺服器。當客戶端使用tcp套接字進行連接時,調用 connect 函數將激發 TCP 的三次握手過程。如下圖:TCP三次握手的剖析 這裡我們使用的網絡編程模型都是阻塞式的。所謂阻塞式,就是調用發起後不會直接返回,由作業系統內核處理之後才會返回。相對的,還有一種叫做非阻塞式的,暫時先不討論。
  • wireshark抓包新手使用教程
    包括按照協議過濾、埠和主機名過濾、數據包內容過濾。Wireshark 開始抓包示例   先介紹一個使用wireshark工具抓取ping命令操作的示例,讓讀者可以先上手操作感受一下抓包的具體過程。   先介紹一個使用wireshark工具抓取ping命令操作的示例,讓讀者可以先上手操作感受一下抓包的具體過程。
  • wireshark抓包使用教程
    5、wireshark抓包完成,就這麼簡單。關於wireshark過濾條件和如何查看數據包中的詳細內容在後面介紹。  上述介紹了抓包過濾器和顯示過濾器的基本使用方法。Wireshark抓包分析TCP三次握手(1)TCP三次握手連接建立過程    Step1:客戶端發送一個SYN=1,ACK=0標誌的數據包給服務端,請求進行連接,這是第一次握手;    Step2:服務端收到請求並且允許連接的話,就會發送一個SYN=1,ACK=1標誌的數據包給發送端,告訴它,可以通訊了,並且讓客戶端發送一個確認數據包,這是第二次握手;
  • 25、大話HTTP協議-用Wireshark研究一個完整的TCP連接
    之前分析TCP三次握手和四次揮手時,對其中的 Flags 欄位進行了詳細說明。TCP將是我們後續需要重點突破的重點,因此前面的文章涉及也不是佷多,暫且看個熱鬧吧!可以看到,這一層最關鍵的信息是埠號,指定了源埠號和目的埠號。
  • 35 張圖解被問千百遍的 TCP 三次握手和四次揮手面試題
    所以小林整理了關於 TCP 三次握手和四次揮手的面試題型,跟大家一起探討探討。TCP 基本認識1.TCP 連接建立2.TCP 連接斷開3.Socket 編程PS:本次文章不涉及 TCP 流量控制、擁塞控制、可靠性傳輸等方面知識,這些留在下篇哈!
  • 手機數據抓包以及wireshark技巧
    導讀:關於抓包的文章,小編之前推薦過《Wireshark基本介紹和學習
  • 理解TCP/IP三次握手與四次揮手的正確姿勢
    順便說一句,原則上任何數據傳輸都無法確保絕對可靠,三次握手只是確保可靠的基本需要。2二、三次握手TCP(Transmission Control Protocol) 傳輸控制協議TCP是主機對主機層的傳輸控制協議,提供可靠的連接服務,採用三次握手確認建立一個連接位碼即tcp
  • 網際網路基礎-TCP網絡「握手」協議
    有一些網絡基礎的同學都知道TCP連接需要三次握手,斷開需要4次握手。但是如果要說TCP連接建立和斷開過程中,連接狀態是如何變化的,估計很難說出具體情況,下面我們看一張圖,描述了TCP連接狀態變化過程: tcp連接狀態變化過程這裡有幾個問題需要注意:1、為什麼建立連接時還需要第3次確認
  • TCP的 「三次握手」 和「四次揮手」,到底是什麼鬼?
    TCP的三次握手,那麼你了解什麼是TCP了嗎?我相信有的人還記得,但是總會有人又忘記了,了解TCP頭部報文,還有為什麼是TCP的三次握手,而不是其他次數呢?在TCP三次握手過程中,有什麼區別或者是說變化。TCP,請記住中文名,傳輸控制協議,是一種面向連接的,可靠的,基於字節流的傳輸層通信協議,TCP的頭部報文,你了解嗎?不了解即可百度。
  • Linux命令行抓包及包解析工具tshark(wireshark)使用實例解析
    Linux命令行抓包及包解析工具tshark(wireshark)使用實例解析在Linux下,當我們需要抓取網絡數據包分析時,通常是使用tcpdump抓取網絡raw數據包存到一個文件,然後下載到本地使用wireshark界面網絡分析工具進行網絡包分析。
  • 為什麼 TCP 建立連接需要三次握手
    到這裡,我們將原有的問題轉換成了『為什麼需要通過三次握手才可以初始化 Sockets、窗口大小和初始序列號?』,那麼接下來我們就開始對這個細化的問題進行分析並尋找解釋。設計這篇文章主要會從以下幾個方面介紹為什麼我們需要通過三次握手才可以初始化 Sockets、窗口大小、初始序列號並建立 TCP 連接:這幾個論點中的第一個是 TCP 選擇使用三次握手的最主要原因,其他的幾個原因相比之下都是次要的原因,我們在這裡對它們的討論只是為了讓整個視角更加豐富,通過多方面理解這一有趣的設計決策。
  • 重學TCP/IP協議和三次握手四次揮手
    劃重點:TCP(傳輸控制協議)和IP(網際協議) 是最先定義的兩個核心協議,所以才統稱為TCP/IP協議族TCP的三次握手四次揮手TCP是一種面向連接的、可靠的、基於字節流的傳輸層通信協議,在發送數據前,通信雙方必須在彼此間建立一條連接。
  • TCP性能和發送接收Buffer的關係
    抓包 tcpdump+wireshark這個查詢結果22M的需要25秒,如下圖(wireshark 時序圖),橫軸是時間,縱軸是sequence number:粗一看沒啥問題,因為時間太長掩蓋了問題。把這個圖形放大,就看中間50ms內的傳輸情況(橫軸是時間,縱軸是sequence number,一個點代表一個包)
  • TCP為什麼需要三次握手?用最通俗的話解釋給你聽
    TCP實現原理和為什麼需要三次握手?兩次握手不可以?四次握手不可以?讀者可以帶著疑問,看一遍本篇博客的詳細講解ok,首先解釋原因之前還是要先複習一下TCP的基本知識和三次握手協議:1、什麼是TCP協議?
  • 面試官問:為什麼 TCP 建立連接需要三次握手 ?
    需要注意的是我們會將重點放到為什麼需要 TCP 建立連接需要『三次握手』,而不僅僅是為什麼需要『三次』握手。設計這篇文章主要會從以下幾個方面介紹為什麼我們需要通過三次握手才可以初始化 Sockets、窗口大小、初始序列號並建立 TCP 連接:通過三次握手才能對通信雙方的初始序列號進行初始化;這幾個論點中的第一個是 TCP 選擇使用三次握手的最主要原因,其他的幾個原因相比之下都是次要的原因,我們在這裡對它們的討論只是為了讓整個視角更加豐富
  • wireshark兩個重要功能
    ,流量分析,網絡包交互分析等,而且是跨平臺,如果要學習網絡協議,分析網絡流量,wireshark肯定是離不開的神器,tshark 可以看做wireshark的命令行版本,基本可以實現wireshark的大部分功能。
  • wireshark使用及實列分析
    最近在HW,主要工作就是判斷各個設備日誌,分析數據包,對wireshark
  • Linux 內核 TCP MSS 機制詳細分析
    深入研究的原因是因為進行了如下的測試:攻擊機器通過iptables/iproute命令將MSS值為48後,使用curl請求靶機的http服務,然後使用wireshark抓流量,發現伺服器返回的http數據包的確被分割成小塊,但是只小到36,離預想的8有很大的差距。
  • 為什麼 TCP 會被 UDP 取代
    :TCP 的三次握手增加了數據傳輸的延遲和額外開銷;在上述的三個原因中,擁塞控制算法是導致 TCP 在弱網環境下有著較差表現的首要原因,三次握手和累計應答兩者的影響依次遞減,但是也加劇了 TCP 的性能問題。