1. 程式人生 > >使用wireshark分析TCP ——以HTTP協議為例

使用wireshark分析TCP ——以HTTP協議為例

1. 對乙太網幀、ip資料報、TCP報文結構的分析

以南郵圖書館網站為例,圖書館網址為:http://lib.njupt.edu.cn,對應的IP地 202.119.224.202。
設定wireshark的過濾條件為”ip.addr == 202.119.224.202”,得到下面結果:
pic 1

雙擊第一條,得到詳細資訊:
這裡寫圖片描述

從上往下,依次對應tcp/ip五層模型中的資料鏈路層、網路層和傳輸層。

1.1 乙太網MAC幀分析

資料鏈路層使用乙太網傳輸,乙太網MAC幀格式如下:
這裡寫圖片描述

這個是乙太網幀內容(以十六進位制的形式顯示):
這裡寫圖片描述

可以知道目的地址為:74:5a:aa:de:fe:65,源地址為:84:3a:4b:70:27:bc,型別為:0x0800(即IPv4),後面是資料(IP資料報)。

1.2 IP資料報分析

IP資料報首部的格式如下:
這裡寫圖片描述

根據下圖(二進位制顯示):
這裡寫圖片描述

版本:0100(version: 4);首部長度:0101(5*4 byte);區分服務:00000000;總長度:00000000 00101000(40 bytes);標識:01001010 01111010;標誌:010(DF=1);片偏移:00000 00000000;生存時間:10000000;協議:00000110(TCP);首部檢驗和:11100011 10001101;源地址:10.164.22.226;目的地址:202.119.224.202。

1.3 TCP報文分析

接著看IP資料報的資料部分(TCP報文),TCP報文格式:
這裡寫圖片描述

根據下圖(以二進位制形式表示):
這裡寫圖片描述

源埠:00110101 01001010(13624);目的埠:00000000 01010000(HTTP預設埠號80);序號:11001001 11100010 10110001 00000001;確認號:01011001 11011000 11011100 01110101;資料偏移:0101(5*4 bytes);保留:000000;URG:0;ACK:1;PSH:0;PST:0;SYN:0;FIN:1;視窗:00000001 00000000(256);檢驗和:11111011 00111110;緊急指標:00000000 00000000。

2. 對三次握手建立TCP連線的分析

再回到這個主介面上:
這裡寫圖片描述

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

2.1 第一次握手資料包

客戶端傳送一個TCP,標誌位為SYN,序列號為0, 代表客戶端請求建立連線。 如下圖
這裡寫圖片描述

2.2 第二次握手的資料包

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

2.3 第三次握手的資料包

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

在進過三次握手後和伺服器建立了TCP連線,隨後瀏覽器發出了取檔案命令GET。
這裡寫圖片描述

伺服器給出響應,把檔案發給瀏覽器。
最後釋放TCP連線,如下圖所示:
這裡寫圖片描述

本次作業到此結束。

相關推薦

使用wireshark分析TCP ——HTTP協議

1. 對乙太網幀、ip資料報、TCP報文結構的分析 以南郵圖書館網站為例,圖書館網址為:http://lib.njupt.edu.cn,對應的IP地 202.119.224.202。 設定wireshark的過濾條件為”ip.addr == 202.119.

使用wireshark分析TCP及UDP協議

16位源埠號:TCP 發端 埠號(標示傳送方計算機上的應用程式收發埠)。16位目的埠號:TCP 接收端埠號(標示接收方計算機上應用程式收發埠)32位序號(sequence number):將整個一次TCP 通訊(從三次握手到四次揮手)中傳輸的傳送方傳送的資料作為一次流動的位元組流,32位序號,它表示在傳送的這

Linux系統手動安裝rpm包依賴關係分析Kernel升級

        有在Linux系統中安裝軟體的經歷的人都知道,在Linux系統中手動安裝軟體不想在Windows下安裝軟體那麼方便,直接雙擊,然後下一步下一步就可以把軟體成功的裝入到系統中,而在Linux系統中,安裝軟體存在這各種各樣的依賴關係,而這些依賴關係在手動安裝時十

WireShark分析TCP HTTP

port 過濾 邏輯 wireshark 邏輯運算符 實例 1.10 模式 get 過濾很關鍵: 1. 協議過濾 比如TCP,只顯示TCP協議。HTTP,只顯示HTTP協議 2. IP 過濾 比如 ip.src ==192.168.1.102 顯示源地址為192.168.1

CSDN app 軟體工程 案例分析

在很多開發人員和IT專業的學生都在移動裝置上學習、工作,在移動裝置上的APP 能滿足這類目標使用者的需求麼? 為了回答這個問題,我們以CSDN app為例,進行一次較為全面的案例分析: 一、調研與評測 經過我為期10天的使用,找到以下兩個較為嚴重的功能性bug: 1.圖片放大bug:在PC端的網頁CS

Android HAL hardware module分析 GPS module

準備在S5PV210的android系統中實現GPS功能,程式已經寫好了,也可以編譯出gps.s5pc110.so的庫,但是不知道上層怎麼呼叫這個庫,在GPS相關的Android.mk中也沒有找到,很是納悶。通過分析hardware module才知道是怎麼回事,之前並沒有詳細的瞭解hardware modu

移動平臺播放器ijkplayer開源框架分析(IOS原始碼)

p_prepare_async_l呼叫stream_open,stream_open中建立了視訊渲染執行緒,該執行緒主要是進行視訊渲染工作,並對視訊進行同步,同步相關邏輯主要在這個執行緒裡面,同步的大概思路就是:有一個絕對時間作為同步起點,然後計算當前幀與上一幀時間差,然後與當前絕對時間基準源比較,如果不到時

Linux 網路協議棧開發基礎篇(十二)—— 使用wireshark分析TCP/IP協議TCP包頭的格式

摘要: 本文簡單介紹了TCP面向連線理論知識,詳細講述了TCP報文各個欄位含義,並從Wireshark俘獲分組中選取TCP連線建立相關報文段進行分析。 一、概述 TCP是面向連線的可靠傳輸協議,兩個程序互發資料之前需要建立連線,這裡的連線只不過是端系統中分配的一些快

使用wireshark分析TCP/IP協議TCP包頭的格式

摘要: 本文簡單介紹了TCP面向連線理論知識,詳細講述了TCP報文各個欄位含義,並從Wireshark俘獲分組中選取TCP連線建立相關報文段進行分析。 一、概述 TCP是面向連線的可靠傳輸協議,兩個程序互發資料之前需要建立連線,這裡的連線只不過是端系統中分配的一些快取和狀態

電商,資料分析的5個思維方法

http://www.datasoldier.net/post/5siwei.html 在博主雪言舟語看來,資料分析真的很重要,能從一堆看似雜亂的資料裡,找到問題並解決問題。從資料上的變化,來判斷甄別效果得失;簡直是居家旅行,運營生意的必備良品。 首先,我們要知道

Android情景分析之詳解init程序(啟動zygote

概述 init是linux系統中使用者空間的第一個程序。由於Android是基於linux核心的,所以init也是Android系統中使用者空間的第一個程序,它的程序號為1。 作為系統中的第一個使用者空間程序,init程序被賦予了很多及其重要的工作職責。 1.      i

Redis 協議談簡單的協議分析

怎樣去研究一個協議的過程,協議的格式,好處,怎麼樣模擬發包等,下面是一個簡單的過程記錄。 研究的步驟: 協議相關的資料,RFC,官方文件等。弄清楚協議工作在4層還是7層,是二進位制還是文字協議等 抓包,通過分析資料包來真實的看到通訊過程,另外一個就

Linux網絡編程--wireshark分析TCP包頭的格式

一點 linux網絡編程 協議 相關 enter 流控 問題 如果 sum 摘要: 本文簡介了TCP面向連接理論知識,具體講述了TCP報文各個字段含義。並從Wireshark俘獲分組中選取TCP連接建立相關報文段進行分析。 一、概述 TCP是面向連接

uboot中 make xxx_config 的作用(make smdk2410_config

mdk nbsp xxx cpu clu samsung uboot 作用 頭文件 1、創建到目標板相關文件的鏈接 ln -s asm-arm asm ln -s arch-s3c24x0 asm-arm/arch ln -s proc-armv asm-arm/pr

基於TI Davinci架構的多核/雙核開發高速掃盲(OMAP L138),dm8168多核開發參考以及達芬奇系列資料user guide整理

uwa 全部 dap setting pos eclips develop serial ger 基於TI Davinci架構的雙核嵌入式應用處理器OMAPL138開發入門 原文轉自http://blog.csdn.net/wangpengqi/article/de

解決jenkins下使用HTML Publisher插件後查看html報告顯示不正常 jmeter報告

com 顯示不全 rip lis support https ima 註意 jenkins jenkins 配置使用html publisher查看jmeter html報告時,發現顯示不全,很多東西顯示不了。 項目配置: 查看html報告異常(很多資源無法加載)

更新CentOS Mysql到官方較新版本[6.5]

生成 inux 依次 font fig 目前 http line spa 需求來源: CentOS: 6.9 x64 自帶mysql版本較舊,需要卸載後安裝到5.6版本. 1.查看目前mysql 版本 2.如果發現有系統自帶mysql,而且比想要裝的5.6舊。果斷

大堆文字不如幾張圖片-論信息傳遞的方式NodeMCU入門

3-9 信息 nbsp mcu 入門 logs 文字 src 圖片 大堆文字不如幾張圖片-論信息傳遞的方式以NodeMCU入門為例

LINUX下PHP編譯添加相應的動態擴展模塊so(不需要重新編譯PHP,openssl.so

down get 階段 很多 習慣 lin 模塊 臨時 操作 本文轉自:原文鏈接 http://www.cnblogs.com/doseoer/p/4367536.html 網上我看到有很多相關的文章都是簡述這個問題的,但畢竟因為LINUX版本眾多,很多LIUNX命令或路

C#語言中數組與集合的區別(List集合

類型 添加元素 list 添加 一個 保存 操作方法 適用於 length 數組用於保存固定數量的數據,定長,占用內存少,遍歷速度快; 集合保存的數據數量,可以在程序的執行過程中,不斷發生變化,不定長,占用內存多,遍歷速度慢; 在功能上,數組能實現的所有功能,集合都能實現;