日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

计算机网络——数据包抓取与分析

發(fā)布時(shí)間:2023/12/10 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 计算机网络——数据包抓取与分析 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

數(shù)據(jù)包抓取與分析

目錄

一、實(shí)驗(yàn)?zāi)康?/p>

二、實(shí)驗(yàn)內(nèi)容

三、實(shí)驗(yàn)環(huán)境

四、實(shí)驗(yàn)步驟與過(guò)程


一、實(shí)驗(yàn)?zāi)康?/h1>

學(xué)習(xí)安裝、使用協(xié)議分析軟件,掌握基本的數(shù)據(jù)報(bào)捕獲、過(guò)濾和協(xié)議的分析技巧,能對(duì)抓取數(shù)據(jù)包進(jìn)行分析。

二、實(shí)驗(yàn)內(nèi)容

協(xié)議分析軟件的安裝和使用、學(xué)會(huì)抓取數(shù)據(jù)包的方法并對(duì)對(duì)抓取數(shù)據(jù)包進(jìn)行分析。

三、實(shí)驗(yàn)環(huán)境

  • 使用Windows操作系統(tǒng);Internet連接
  • 抓包軟件Wireshark。
  • 四、實(shí)驗(yàn)步驟與過(guò)程

  • WireShark的使用
  • 選擇接口過(guò)濾器
  • 安裝Wireshark后,打開(kāi)Wireshark,可以看到如圖 1所示的界面,提示我們選擇對(duì)應(yīng)接口的過(guò)濾器,在此我選擇“以太網(wǎng)”進(jìn)行抓包

    圖 1 選擇接口過(guò)濾器

  • Wireshark的界面
  • 打開(kāi)Wireshark后,可以看到如圖 2的界面。Wireshark的界面主要分為如下幾個(gè)部分:

  • 顯示過(guò)濾器:主要用于過(guò)濾封包
  • 封包列表:顯示所有捕獲到的封包,有源地址和目標(biāo)地址,端口號(hào)。不同的顏色代表了不同封包的類型與狀態(tài)
  • 封包詳細(xì)信息:顯示封包中的內(nèi)容以及各個(gè)字段
  • 十六進(jìn)制數(shù)據(jù):展示十六進(jìn)制的封包原始數(shù)據(jù)
  • 地址欄:顯示封包的統(tǒng)計(jì)信息與雜項(xiàng)
  • 圖 2 Wireshark主界面圖

    ??????

  • Wireshark過(guò)濾器
  • 在上一節(jié)中,我們介紹了Wireshark的界面,以及各個(gè)功能,接下來(lái)著重介紹Wireshark中過(guò)濾器的功能。過(guò)濾器可以在大量的數(shù)據(jù)中快速準(zhǔn)確的找到我們需要的信息。

    圖 3 捕獲過(guò)濾器

    過(guò)濾器主要分兩種, 圖 2主界面上的顯示過(guò)濾器和圖 3上的捕獲過(guò)濾器。顯示過(guò)濾器用來(lái)在已捕獲的記錄中顯示所需要的記錄。捕獲過(guò)濾器主要用來(lái)過(guò)濾即將捕獲的封包,以免捕獲過(guò)多的記錄。

    圖 4 顯示過(guò)濾器

    ?????? 如圖 4,顯示過(guò)濾器通過(guò)過(guò)濾表達(dá)式實(shí)現(xiàn)過(guò)濾。具體可以通過(guò)如下幾個(gè)規(guī)則進(jìn)行過(guò)濾:

  • 協(xié)議過(guò)濾:如tcp,則只顯示tcp協(xié)議
  • IP過(guò)濾:如ip.src==192.168.1.102顯示源地址為192.168.1.102的封包,ip.dst== 192.168.1.102則顯示目標(biāo)地址為192.168.1.102的封包。
  • 端口過(guò)濾:如tcp.port ==80,只顯示端口為80的tcp協(xié)議的封包,又如tcp.srcport == 80,? 只顯示TCP協(xié)議的源端口為80的封包
  • Http過(guò)濾:如http.request.method=="GET",?? 只顯示HTTP GET方法的封包。
  • 此外,還可以通過(guò)邏輯運(yùn)算符or,and等組合過(guò)濾表達(dá)式,達(dá)到更復(fù)雜的過(guò)濾效果。

  • 封包詳細(xì)信息
  • 封包詳細(xì)信息是抓包過(guò)程中最重要的,它包括如下五個(gè)字段:

  • Frame:???物理層的數(shù)據(jù)幀概況
  • Ethernet?II:?數(shù)據(jù)鏈路層以太網(wǎng)幀頭部信息
  • Internet Protocol Version 4:?互聯(lián)網(wǎng)層IP包頭部信息
  • Transmission Control Protocol:??傳輸層T的數(shù)據(jù)段頭部信息,此處是TCP
  • Hypertext Transfer Protocol:??應(yīng)用層的信息,此處是HTTP協(xié)議
  • 圖 5 封包詳細(xì)信息

    ?????? 如圖 5所示,可以看到某一個(gè)封包的詳細(xì)信息。會(huì)顯示這個(gè)封包的長(zhǎng)度,數(shù)據(jù)鏈路層信息等。

    圖 6 封包詳細(xì)信息與十六進(jìn)制對(duì)應(yīng)

    ?????? 如圖 6,對(duì)于封包里的每一條數(shù)據(jù),可以通過(guò)點(diǎn)擊對(duì)應(yīng)數(shù)據(jù)的方式,從下方十六進(jìn)制原始文件中顯示對(duì)應(yīng)的字節(jié)段。接下來(lái),我們將對(duì)每個(gè)類型的封包分別進(jìn)行介紹。

  • DNS分析
  • www.szu.edu.cn
  • 域名系統(tǒng)(英文:Domain Name System,縮寫(xiě):DNS)是互聯(lián)網(wǎng)的一項(xiàng)服務(wù)。它作為將域名和IP地址相互映射的一個(gè)分布式數(shù)據(jù)庫(kù),能夠使人更方便地訪問(wèn)互聯(lián)網(wǎng)。DNS使用UDP端口53。在http://www.szu.edu.cn/board/中,www.szu.edu.cn域名需要進(jìn)行DNS解析得到對(duì)應(yīng)的ip地址才能進(jìn)行網(wǎng)絡(luò)資源訪問(wèn)。

    首先通過(guò)DNS抓包查看域名解析的情況。打開(kāi)Wireshark對(duì)網(wǎng)卡進(jìn)行數(shù)據(jù)包的捕捉。接著對(duì)域名www.szu.edu.cn進(jìn)行ping操作,由上一次實(shí)驗(yàn)知道,ping操作首先需要對(duì)域名進(jìn)行解析,然后在通過(guò)ip地址進(jìn)行訪問(wèn)、得到答復(fù)。通過(guò)ping得到域名解析后的ip如圖 7所示。

    圖 7 通過(guò)ping得到解析后的ip地址

    接下來(lái)打開(kāi)Wireshark,在篩選框中輸入DNS以篩選出DNS解析的數(shù)據(jù)包,如圖 8所示。從結(jié)果來(lái)看,正好存在兩個(gè)DNS解析的數(shù)據(jù)包,分別對(duì)應(yīng)著解析請(qǐng)求的發(fā)送和答復(fù)。

    圖 8 篩選DNS結(jié)果

    首先查看發(fā)送DNS解析的數(shù)據(jù)包,如圖 9所示。首先,從互聯(lián)網(wǎng)層看,DNS解析使用了ipv4協(xié)議,向223.5.5.5(阿里云公共DNS)發(fā)送了DNS解析請(qǐng)求。從傳輸層可以看到,使用的是UDP協(xié)議(User Datagram System),端口使用的是53端口。接著是DNS協(xié)議的詳細(xì)信息:第一個(gè)是Transaction ID標(biāo)識(shí)字段,長(zhǎng)度為2字節(jié),用于辨別DNS應(yīng)答報(bào)文是哪個(gè)請(qǐng)求報(bào)文的響應(yīng)。第二個(gè)是Flags字段,長(zhǎng)度為2字節(jié),通過(guò)分析不同位的信息可以得到詳細(xì)的數(shù)據(jù):

  • Response: 查詢/響應(yīng),1為響應(yīng),0為查詢。
  • Opcode: 查詢或響應(yīng)類型,這里0表示標(biāo)準(zhǔn),1表示反向,2表示服務(wù)器狀態(tài)請(qǐng)求。
  • Truncated: 截?cái)?#xff0c;1表示超過(guò)512字節(jié)并已被截?cái)?#xff0c;0表示沒(méi)有發(fā)生截?cái)唷?/li>
  • TC: 截?cái)?#xff0c;1表示超過(guò)512字節(jié)并已被截?cái)?#xff0c;0表示沒(méi)有發(fā)生截?cái)唷?/li>
  • zero: 全0保留字段。
  • Recursion:是否希望得到遞歸回答。
  • 經(jīng)過(guò)上述信息分析,可以得知,該數(shù)據(jù)包是一個(gè)標(biāo)準(zhǔn)DNS請(qǐng)求,沒(méi)有被截?cái)?#xff0c;希望得到遞歸的回答。

    接下來(lái)是請(qǐng)求部分,字段Queries為查詢或者響應(yīng)的正文部分,分為Name 、Type、Class。 Name是需要請(qǐng)求的域名,不定長(zhǎng)度以0結(jié)束;Type是查詢類型,這里是主機(jī)A記錄;最后的Class中,IN表示Internet數(shù)據(jù)。

    圖 9 發(fā)送DNS請(qǐng)求數(shù)據(jù)包

    接下來(lái)分析答復(fù)部分的DNS數(shù)據(jù)包,如圖 10所示。可以看到,Transaction ID仍然是發(fā)送時(shí)的標(biāo)記,用于表示這是回復(fù)當(dāng)時(shí)請(qǐng)求的標(biāo)記;Response處由0變成了1表示這是答復(fù)的DNS;新增的Recursion available為1表示服務(wù)器端可以使用遞歸查詢;Reply Code全0數(shù)據(jù)表示并沒(méi)有出現(xiàn)錯(cuò)誤。相比于請(qǐng)求,答復(fù)多了一項(xiàng)Answers,由于ping操作只請(qǐng)求了一個(gè)域名, Answers中僅存在一項(xiàng)表名該域名只有一種解析。查看Answers中解析的域名可以看到,域名的名稱Name為www.szu.edu.cn,Type為A表示這是一個(gè)Ipv4地址,Class為In表示這是一個(gè)互聯(lián)網(wǎng)數(shù)據(jù),Time to Live(生存時(shí)間TTL)表示該資源記錄的生命周期,從取出記錄到抹掉記錄緩存的時(shí)間,此處為9分26秒。Data length(資源數(shù)據(jù)長(zhǎng)度)以字節(jié)為單位,這里的4表示IP地址的長(zhǎng)度為4字節(jié),也就是解析后的ip的長(zhǎng)度。Addr(資源數(shù)據(jù)): 返回的IP地址210.39.4.1,就是我們想要的結(jié)果,該ip與ping命令行中的信息一致。

    圖 10 DNS答復(fù)

  • www.youku.com
  • 打開(kāi)Wireshark對(duì)網(wǎng)卡進(jìn)行數(shù)據(jù)包的捕捉,接著使用ping指令對(duì)域名www.youku.com進(jìn)行連通性測(cè)試(相關(guān)操作省略)。

    打開(kāi)Wireshark,在篩選框中輸入DNS篩選出DNS請(qǐng)求的數(shù)據(jù)包,得到如圖 11所示兩個(gè)數(shù)據(jù)包,分別代表DNS請(qǐng)求與答復(fù)。

    圖 11 篩選出的DNS相關(guān)數(shù)據(jù)包

    首先打開(kāi)請(qǐng)求的數(shù)據(jù)包,如圖 12所示。從結(jié)果看出,協(xié)議采用UDP,端口為53;請(qǐng)求向223.5.5.5(阿里云公共DNS)發(fā)出;該數(shù)據(jù)包的Transaction ID為0x6cea。又從Flags字段中可以得出是一個(gè)請(qǐng)求的數(shù)據(jù)包,請(qǐng)求的是標(biāo)準(zhǔn)的查詢,沒(méi)有被截?cái)?#xff0c;請(qǐng)求遞歸查詢。接著從Queries字段中得出請(qǐng)求的只有一個(gè)域名的解析,類型為ipv4,為網(wǎng)絡(luò)數(shù)據(jù)類。

    圖 12 DNS解析請(qǐng)求數(shù)據(jù)包

    接著來(lái)分析得到的答復(fù),如圖 13所示??梢钥吹?#xff0c;Transaction ID仍然是發(fā)送時(shí)的標(biāo)記,用于表示這是回復(fù)當(dāng)時(shí)請(qǐng)求的標(biāo)記;Response處由0變成了1表示這是答復(fù)的DNS;新增的Recursion available為1表示服務(wù)器端可以使用遞歸查詢;Reply Code全0數(shù)據(jù)表示并沒(méi)有出現(xiàn)錯(cuò)誤。

    查看Answers中解析的域名可以看到,首先是返回一個(gè)類型為CNME的項(xiàng)目。CAME為規(guī)范名字,即將www.youku.com規(guī)范為ipv6-aserver-heyi.m.taobao.com。然后,再次對(duì)ipv6-aserver-heyi.m.taobao.com進(jìn)行解析,得到第二個(gè)同樣為CNME的項(xiàng)目。該項(xiàng)目再次規(guī)范名字,將ipv6-aserver-heyi.m.taobao.com規(guī)范為ipv6-aserver-heyi.m.taobao.com.gds.alibabadns.com。此時(shí)再次進(jìn)行域名解析,得到第三個(gè)項(xiàng)目。這時(shí),返回的終于是為A的Ipv4地址,Class為In表示這是一個(gè)互聯(lián)網(wǎng)數(shù)據(jù),Time to Live(生存時(shí)間TTL)表示該資源記錄的生命周期,從取出記錄到抹掉記錄緩存的時(shí)間,此處為21秒。Data length(資源數(shù)據(jù)長(zhǎng)度)以字節(jié)為單位,這里的4表示IP地址的長(zhǎng)度為4字節(jié),也就是解析后的ip的長(zhǎng)度。Addr(資源數(shù)據(jù)): 返回的IP地址106.11.35.97。

    圖 13 DNS解析答復(fù)數(shù)據(jù)包

  • www.sina.com.cn
  • 打開(kāi)Wireshark對(duì)網(wǎng)卡進(jìn)行數(shù)據(jù)包的捕捉,接著使用ping指令對(duì)域名www.sina.com.cn進(jìn)行連通性測(cè)試,如圖 14所示。

    圖 14 ping操作

    打開(kāi)Wireshark,在篩選框中輸入DNS篩選出DNS請(qǐng)求的數(shù)據(jù)包,得到如圖 15所示兩個(gè)數(shù)據(jù)包,分別代表DNS請(qǐng)求與答復(fù)。

    圖 15 篩選DNS數(shù)據(jù)包

    首先打開(kāi)請(qǐng)求的數(shù)據(jù)包,如圖 16所示。從結(jié)果看出,協(xié)議采用UDP,端口為53;請(qǐng)求向223.5.5.5(阿里云公共DNS)發(fā)出;該數(shù)據(jù)包的Transaction ID為0x96c7。又從Flags字段中可以得出是一個(gè)請(qǐng)求的數(shù)據(jù)包,請(qǐng)求的是標(biāo)準(zhǔn)的查詢,沒(méi)有被截?cái)?#xff0c;請(qǐng)求遞歸查詢。接著從Queries字段中得出請(qǐng)求的只有一個(gè)域名的解析,類型為ipv4,為網(wǎng)絡(luò)數(shù)據(jù)類。

    圖 16 DNS解析請(qǐng)求數(shù)據(jù)包

    接著來(lái)分析得到的答復(fù),如圖 17所示??梢钥吹?#xff0c;Transaction ID仍然是發(fā)送時(shí)的標(biāo)記,用于表示這是回復(fù)當(dāng)時(shí)請(qǐng)求的標(biāo)記;Response處由0變成了1表示這是答復(fù)的DNS;新增的Recursion available為1表示服務(wù)器端可以使用遞歸查詢;Reply Code全0數(shù)據(jù)表示并沒(méi)有出現(xiàn)錯(cuò)誤。

    圖 17 DNS解析答復(fù)數(shù)據(jù)包 1

    查看Answers中(圖 18)解析的域名可以看到,首先是返回一個(gè)類型為CNME的項(xiàng)目。CAME為規(guī)范名字,即將www.sina.com.cn規(guī)范為spool.grid.sinaedge.com。然后,再次對(duì)spool.grid.sinaedge.com進(jìn)行解析,得到第二個(gè)同樣為CNME的項(xiàng)目。該項(xiàng)目再次規(guī)范名字,將spool.grid.sinaedge.com規(guī)范為ww1.sinaimg.cn.w.alikunlun.com。此時(shí)再次進(jìn)行域名解析,得到剩下的13個(gè)項(xiàng)目。這時(shí),返回的全部是類型為A的Ipv4地址,Class為In表示這是一個(gè)互聯(lián)網(wǎng)數(shù)據(jù)??梢园l(fā)現(xiàn),ping指令最后只對(duì)第一個(gè)ipv4地址進(jìn)行了操作。DNS將一個(gè)域名解析成了多個(gè)ip,如此一來(lái)一旦有其中一個(gè)ip宕機(jī)了,也能迅速訪問(wèn)其他ip來(lái)連接,增加了服務(wù)的可靠性。

    圖 18 Answers解析的域名

  • HTTP
  • 超文本傳輸協(xié)議(Hypertext Transfer Protocol,HTTP)是一個(gè)簡(jiǎn)單的請(qǐng)求-響應(yīng)協(xié)議,它通常運(yùn)行在TCP之上,端口號(hào)一般為80。它指定了客戶端可能發(fā)送給服務(wù)器什么樣的消息以及得到什么樣的響應(yīng)。

    由于www.szu.edu.cn、www.youku.com、www.sina.com.cn等許多網(wǎng)站都已經(jīng)采用更安全的https協(xié)議,所以測(cè)試http協(xié)議的網(wǎng)站使用深大內(nèi)部的學(xué)生公寓管理中心http://gyzx.szu.edu.cn/。

    首先打開(kāi)Wireshark對(duì)網(wǎng)卡進(jìn)行數(shù)據(jù)包捕捉,然后在瀏覽器中打開(kāi)http://gyzx.szu.edu.cn/。接著返回Wireshark中,在篩選框中輸入http對(duì)數(shù)據(jù)包進(jìn)行篩選,得到兩個(gè)數(shù)據(jù)包,分別代表了http的請(qǐng)求及答復(fù),如圖 19所示。

    圖 19 http請(qǐng)求和答復(fù)

    首先來(lái)觀察http請(qǐng)求的數(shù)據(jù)包,如圖 20所示。

    圖 20 http請(qǐng)求

    從傳輸層可以看到,http采用的是tcp協(xié)議,端口為80。在應(yīng)用層,可以看到http協(xié)議的報(bào)文形式。首先,該數(shù)據(jù)包采用的是GET的方法,協(xié)議為HTTP 1.1。HTTP1.0 定義了三種請(qǐng)求方法: GET, POST 和 HEAD方法。HTTP1.1 新增了五種請(qǐng)求方法:OPTIONS、PUT、PATCH、DELETE、TRACE 和 CONNECT 方法。

    表格 1 http請(qǐng)求方式

    GET

    請(qǐng)求指定的頁(yè)面信息,并返回實(shí)體主體。

    HEAD

    類似于 GET 請(qǐng)求,只不過(guò)返回的響應(yīng)中沒(méi)有具體的內(nèi)容,用于獲取報(bào)頭

    POST

    向指定資源提交數(shù)據(jù)進(jìn)行處理請(qǐng)求(例如提交表單或者上傳文件)。數(shù)據(jù)被包含在請(qǐng)求體中。POST 請(qǐng)求可能會(huì)導(dǎo)致新的資源的建立和/或已有資源的修改。

    PUT

    從客戶端向服務(wù)器傳送的數(shù)據(jù)取代指定的文檔的內(nèi)容。

    DELETE

    請(qǐng)求服務(wù)器刪除指定的頁(yè)面。

    CONNECT

    HTTP/1.1 協(xié)議中預(yù)留給能夠?qū)⑦B接改為管道方式的代理服務(wù)器。

    OPTIONS

    允許客戶端查看服務(wù)器的性能。

    TRACE

    回顯服務(wù)器收到的請(qǐng)求,主要用于測(cè)試或診斷。

    PATCH

    是對(duì) PUT 方法的補(bǔ)充,用來(lái)對(duì)已知資源進(jìn)行局部更新 。

    從Connection中可以看到,該請(qǐng)求是keep-alive的,即永久連接。這樣子有利于在你訪問(wèn)的網(wǎng)頁(yè)中有很多圖片等其他資源的時(shí)候,可以使用同一個(gè)TCP連接接收,而不是針對(duì)每一個(gè)文件都建立一次TCP/IP的連接。User-Agent則表示了訪問(wèn)的客戶端的詳細(xì)信息。Accept-Encoding: gzip, deflate說(shuō)明該瀏覽器支持的編碼格式,這里是壓縮編碼的方式,猜想應(yīng)該是服務(wù)器將瀏覽器請(qǐng)求的文件都是以壓縮文件發(fā)送過(guò)來(lái)的。Accept-Language: zh-CN,zh;q=0.9,en;q=0.8指明了該瀏覽器支持的語(yǔ)言類型,支持zh-CN,zh,en。然后優(yōu)先發(fā)送zh-CN和zh的語(yǔ)言,因?yàn)樗麄兊臋?quán)重是0.9。

    接下來(lái)分析http協(xié)議的答復(fù),如圖 21所示。

    圖 21 http答復(fù)

    直接分析應(yīng)用層的http協(xié)議,可以看到,答復(fù)同樣采用的是http1.1,Status為200說(shuō)明客戶端請(qǐng)求成功。常見(jiàn)的幾個(gè)狀態(tài)碼如下所示。

  • 200:客戶端請(qǐng)求成功,是最常見(jiàn)的狀態(tài)。
  • 302:重定向。
  • 404:請(qǐng)求資源不存在,是最常見(jiàn)的狀態(tài)。
  • 400:客戶端請(qǐng)求有語(yǔ)法錯(cuò)誤,不能被服務(wù)器所理解。
  • 401:請(qǐng)求未經(jīng)授權(quán)。
  • 403:服務(wù)器收到請(qǐng)求,但是拒絕提供服務(wù)。
  • 500:服務(wù)器內(nèi)部錯(cuò)誤,是最常見(jiàn)的狀態(tài)。
  • 503:服務(wù)器當(dāng)前不能處理客戶端的請(qǐng)求。
  • Content-Length表示內(nèi)容長(zhǎng)度。Content-Type表示后面的文檔屬于什么MIME類型,默認(rèn)為text/plain,但通常需要顯式地指定為text/html。Date為當(dāng)前的GMT時(shí)間。最后的line-based text data即為返回的網(wǎng)頁(yè)內(nèi)容,瀏覽器經(jīng)過(guò)解析html語(yǔ)言,進(jìn)而將網(wǎng)頁(yè)呈現(xiàn)給用戶。

  • TCP
  • 傳輸控制協(xié)議(TCP,Transmission Control Protocol)是為了在不可靠的互聯(lián)網(wǎng)絡(luò)上提供可靠的端到端字節(jié)流而專門設(shè)計(jì)的一個(gè)傳輸協(xié)議。應(yīng)用層向TCP層發(fā)送用于網(wǎng)間傳輸?shù)摹⒂?位字節(jié)表示的數(shù)據(jù)流,然后TCP把數(shù)據(jù)流分割成適當(dāng)長(zhǎng)度的報(bào)文段。之后TCP把結(jié)果包傳給IP層,由它來(lái)透過(guò)網(wǎng)絡(luò)將包傳送給接收端實(shí)體的TCP層。TCP為了保證不發(fā)生丟包,就給每個(gè)包一個(gè)序號(hào),同時(shí)序號(hào)也保證了傳送到接收端實(shí)體的包的按序接收。然后接收端實(shí)體對(duì)已成功收到的包發(fā)回一個(gè)相應(yīng)的確認(rèn)信息(ACK);如果發(fā)送端實(shí)體在合理的往返時(shí)延(RTT)內(nèi)未收到確認(rèn),那么對(duì)應(yīng)的數(shù)據(jù)包就被假設(shè)為已丟失并進(jìn)行重傳。TCP用一個(gè)校驗(yàn)和函數(shù)來(lái)檢驗(yàn)數(shù)據(jù)是否有錯(cuò)誤,在發(fā)送和接收時(shí)都要計(jì)算校驗(yàn)和。

    接下來(lái)通過(guò)打開(kāi)網(wǎng)站www.szu.edu.cn來(lái)觀察TCP連接的情況。首先打開(kāi)Wireshark對(duì)網(wǎng)卡進(jìn)行數(shù)據(jù)包捕捉,然后在瀏覽器中打開(kāi)www.suz.edu.cn。由圖 7可得,域名解析后的ip地址為210.39.4.1,于是在Wireshark的篩選框中輸入“ip.addr == 210.39.4.1”來(lái)篩選數(shù)據(jù)包。得到結(jié)果如圖 22所示。

    圖 22 TCP數(shù)據(jù)包

  • TCP建立
  • 圖 22中前3個(gè)數(shù)據(jù)包為TCP三次握手協(xié)議建立連接。當(dāng)主動(dòng)方發(fā)出SYN連接請(qǐng)求后,等待對(duì)方回答SYN+ACK,并最終對(duì)對(duì)方的 SYN 執(zhí)行 ACK 確認(rèn)。這種建立連接的方法可以防止產(chǎn)生錯(cuò)誤的連接,TCP使用的流量控制協(xié)議是可變大小的滑動(dòng)窗口協(xié)議。

    TCP三次握手的過(guò)程如下:

  • 客戶端發(fā)送SYN(SEQ=x)報(bào)文給服務(wù)器端,進(jìn)入SYN_SEND狀態(tài)。
  • 服務(wù)器端收到SYN報(bào)文,回應(yīng)一個(gè)SYN (SEQ=y)ACK(ACK=x+1)報(bào)文,進(jìn)入SYN_RECV狀態(tài)。
  • 客戶端收到服務(wù)器端的SYN報(bào)文,回應(yīng)一個(gè)ACK(ACK=y+1)報(bào)文,進(jìn)入Established狀態(tài)。
  • 三次握手完成,TCP客戶端和服務(wù)器端成功地建立連接,可以開(kāi)始傳輸數(shù)據(jù)了。

    首先來(lái)分析第一次握手,數(shù)據(jù)包如圖 23所示??梢钥闯?#xff0c;由于使用的是HTTPS協(xié)議打開(kāi)的網(wǎng)頁(yè),所以TCP端口為443。Src為客戶端,Dst為訪問(wèn)的域名接續(xù)后的ip,所以這是客戶端發(fā)送給服務(wù)端的數(shù)據(jù)??梢钥吹娇蛻舳藢lags標(biāo)志位SYN置為1,隨機(jī)產(chǎn)生一個(gè)值Sequence Number = 0作為序號(hào),并將該數(shù)據(jù)包發(fā)送給服務(wù)器,客戶機(jī)進(jìn)入SYN_SENT狀態(tài),等待服務(wù)器確認(rèn)。實(shí)際上Wireshark 工具幫我們做了優(yōu)化,它默認(rèn)顯示的是序列號(hào) seq 是相對(duì)值,而不是真實(shí)值,真實(shí)值在Sequence Number(raw)中,值為1136243156。

    圖 23 TCP第一次握手

    然后是第二次握手,如圖 24所示??梢钥吹?#xff0c;該數(shù)據(jù)包的Src是服務(wù)端,Dst是客戶端,說(shuō)明這是服務(wù)器發(fā)送給客戶端的數(shù)據(jù)。這時(shí)觀察到,SYN仍然為1。然后,服務(wù)端將確認(rèn)序號(hào)(Acknowledgement Number)設(shè)置為客戶的序號(hào)seq加1,即0+1=1, ACK變?yōu)榱?(真實(shí)值為1136243157 = 1136243156 + 1),說(shuō)明服務(wù)端收到了TCP請(qǐng)求。此時(shí),seq由服務(wù)器隨機(jī)生成相對(duì)值0(實(shí)際值1721425601)。

    圖 24 TCP第二次握手

    接下來(lái)是TCP第三次握手,如圖 25所示。可以看到,該數(shù)據(jù)包的Src為客戶端,Dst為服務(wù)端,這是客戶端發(fā)送的數(shù)據(jù)包。在第三次握手中,客戶端收到第二次握手中服務(wù)器發(fā)來(lái)的包后檢查確認(rèn)序號(hào)Seq是否正確,即第一次發(fā)送的序號(hào)Seq加1(X+1= 0+1=1)。以及標(biāo)志位ACK是否為1。若正確,客戶端會(huì)再向服務(wù)器端發(fā)送一個(gè)數(shù)據(jù)包,SYN=0,ACK=1,確認(rèn)序號(hào)Ack=Y+1=0+1=1,并且把服務(wù)器發(fā)來(lái)ACK的序號(hào)Seq加1發(fā)送給對(duì)方,發(fā)送序號(hào)Seq為X+1= 0+1=1??蛻舳耸盏胶蟠_認(rèn)序號(hào)值與ACK=1,至此,一次TCP連接就此建立,可以傳送數(shù)據(jù)了。

    圖 25 TCP第三次握手

  • 數(shù)據(jù)傳輸
  • 數(shù)據(jù)傳輸階段,服務(wù)端與客戶端之間仍然通過(guò)Seq與Ack的值進(jìn)行數(shù)據(jù)可靠性的保證。具體操作如圖 26所示。

    圖 26 TCP數(shù)據(jù)傳輸過(guò)程

    由于數(shù)據(jù)傳輸?shù)臄?shù)據(jù)包非常多,為了更直觀的觀察,可以打開(kāi)Wireshark中的統(tǒng)計(jì)-流量圖,如圖 27所示。圖中可以看到,服務(wù)端與客戶端一直在通信,并沒(méi)有終止。同時(shí),因?yàn)榘l(fā)送或者接受的數(shù)據(jù)包并不固定數(shù)量,所以Seq和Ack值的變化不一。

    圖 27 TCP傳輸數(shù)據(jù)

  • 四次揮手
  • 建立一個(gè)連接需要三次握手,而終止一個(gè)連接要經(jīng)過(guò)四次握手,這是由TCP的半關(guān)閉(half-close)造成的具體流程如下。

    (1)客戶端A發(fā)送一個(gè)FIN,用來(lái)關(guān)閉客戶A到服務(wù)器B的數(shù)據(jù)傳送。

    (2)服務(wù)器B收到這個(gè)FIN,它發(fā)回一個(gè)ACK,確認(rèn)序號(hào)為收到的序號(hào)加1。和SYN一樣,一個(gè)FIN將占用一個(gè)序號(hào)。

    (3)服務(wù)器B關(guān)閉與客戶端A的連接,發(fā)送一個(gè)FIN給客戶端A。

    (4)客戶端A發(fā)回ACK報(bào)文確認(rèn),并將確認(rèn)序號(hào)設(shè)置為收到序號(hào)加1。

    具體捕獲的數(shù)據(jù)包如圖 28紅框內(nèi)所示。首先,第一行說(shuō)明客戶端向服務(wù)端發(fā)送FIN請(qǐng)求;然后,第二行中,服務(wù)端向客戶端發(fā)送一條ACK回復(fù),表名服務(wù)端已經(jīng)收到結(jié)束請(qǐng)求;然后,第三行中,服務(wù)端向客戶端發(fā)送FIN,表名服務(wù)器已經(jīng)關(guān)閉通信;第四行中,客戶端收到服務(wù)端的關(guān)閉信息,所以自己也關(guān)閉通信,同時(shí),將自己已經(jīng)收到關(guān)閉通信的信息用ACK發(fā)送給服務(wù)端。至此,整個(gè)TCP連接已經(jīng)完全關(guān)閉

    圖 28 TCP四次揮手

  • UDP
  • UDP 是User Datagram Protocol的簡(jiǎn)稱, 中文名是用戶數(shù)據(jù)報(bào)協(xié)議,是OSI參考模型中一種無(wú)連接的傳輸層協(xié)議,提供面向事務(wù)的簡(jiǎn)單不可靠信息傳送服務(wù)。UDP協(xié)議與TCP協(xié)議一樣用于處理數(shù)據(jù)包,在OSI模型中,兩者都位于傳輸層,處于IP協(xié)議的上一層。UDP有不提供數(shù)據(jù)包分組、組裝和不能對(duì)數(shù)據(jù)包進(jìn)行排序的缺點(diǎn),也就是說(shuō),當(dāng)報(bào)文發(fā)送之后,是無(wú)法得知其是否安全完整到達(dá)的。

    ?接下來(lái)使用登錄QQ這一過(guò)程來(lái)抓取UDP數(shù)據(jù)包進(jìn)行分析。首先打開(kāi)Wireshark對(duì)網(wǎng)卡進(jìn)行數(shù)據(jù)包捕捉,然后登錄QQ,在Wireshark篩選框中輸入OICQ進(jìn)行篩選。OICQ協(xié)議是QQ在與服務(wù)器通信時(shí)使用的協(xié)議,通常是建立在UDP協(xié)議之上。篩選后,得到許多OICQ協(xié)議的數(shù)據(jù)包,如圖 29所示。

    圖 29 OICQ數(shù)據(jù)包

    接下來(lái),隨便打開(kāi)一個(gè)數(shù)據(jù)包,如圖 30所示??梢钥吹?#xff0c;這是由服務(wù)端發(fā)送至客戶端的數(shù)據(jù)包,傳輸層使用的是UDP協(xié)議。與TCP協(xié)議相比,UDP協(xié)議的報(bào)文非常簡(jiǎn)單,這是因?yàn)閁DP報(bào)文不對(duì)可達(dá)進(jìn)行保證,適合高數(shù)據(jù)流的應(yīng)用。然后應(yīng)用層協(xié)議為OICQ協(xié)議,這一部分協(xié)議完全由QQ去定義,內(nèi)含QQ通信時(shí)所需要的信息。

    圖 30 OICQ數(shù)據(jù)包詳細(xì)信息

    總結(jié)

    以上是生活随笔為你收集整理的计算机网络——数据包抓取与分析的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。