計(jì)算機(jī)網(wǎng)絡(luò) 課程基礎(chǔ)實(shí)驗(yàn)一 應(yīng)用協(xié)議與數(shù)據(jù)包分析實(shí)驗(yàn)(Wireshark)
計(jì)科210X 甘晴void 202108010XXX
一、實(shí)驗(yàn)?zāi)康模?/h3>
通過本實(shí)驗(yàn),熟練掌握Wireshark的操作和使用,學(xué)習(xí)對(duì)HTTP協(xié)議進(jìn)行分析。
二、實(shí)驗(yàn)內(nèi)容
2.1 HTTP 協(xié)議簡(jiǎn)介
HTTP 是超文本傳輸協(xié)議 (Hyper Text Transfer Protocol)的縮寫,用于WWW 服務(wù)。
(1)HTTP 的工作原理
HTTP 是一個(gè)面向事務(wù)的客戶服務(wù)器協(xié)議。盡管HTTP 使用TCP 作為底層傳輸協(xié)議,但 HTTP 協(xié)議是無狀態(tài)的。也就是說,每個(gè)事務(wù)都是獨(dú)立地進(jìn)行處理。當(dāng)一個(gè)事務(wù)開始時(shí),就在web客戶和服務(wù)器之間建立一個(gè)TCP 連接,而當(dāng)事務(wù)結(jié)束時(shí)就釋放這個(gè)連接。此外,客 戶可以使用多個(gè)端口和和服務(wù)器 (80 端口)之間建立多個(gè)連接。其工作過程包括以下幾個(gè)階段。
① 服務(wù)器監(jiān)聽TCP 端口 80,以便發(fā)現(xiàn)是否有瀏覽器 (客戶進(jìn)程)向它發(fā)出連接請(qǐng)求;
② 一旦監(jiān)聽到連接請(qǐng)求,立即建立連接。
③ 瀏覽器向服務(wù)器發(fā)出瀏覽某個(gè)頁面的請(qǐng)求,服務(wù)器接著返回所請(qǐng)求的頁面作為響應(yīng)。
④ 釋放TCP 連接。
在瀏覽器和服務(wù)器之間的請(qǐng)求和響應(yīng)的交互,必須遵循HTTP 規(guī)定的格式和規(guī)則。
當(dāng)用戶在瀏覽器的地址欄輸入要訪問的HTTP 服務(wù)器地址時(shí),瀏覽器和被訪問HTTP 服
務(wù)器的工作過程如下:
① 瀏覽器分析待訪問頁面的URL 并向本地DNS 服務(wù)器請(qǐng)求IP 地解析;
② DNS 服務(wù)器解析出該HTTP 服務(wù)器的IP 地址并將IP 地址返回給瀏覽器;
③ 瀏覽器與HTTP 服務(wù)器建立TCP 連接,若連接成功,則進(jìn)入下一步;
④ 瀏覽器向HTTP 服務(wù)器發(fā)出請(qǐng)求報(bào)文 (含GET 信息),請(qǐng)求訪問服務(wù)器的指定頁面;
⑤ 服務(wù)器作出響應(yīng),將瀏覽器要訪問的頁面發(fā)送給瀏覽器,在頁面?zhèn)鬏斶^程中,瀏覽
器會(huì)打開多個(gè)端口,與服務(wù)器建立多個(gè)連接;
⑥ 釋放TCP 連接;
⑦ 瀏覽器收到頁面并顯示給用戶。
(2)HTTP 報(bào)文格式
HTTP 有兩類報(bào)文:從客戶到服務(wù)器的請(qǐng)求報(bào)文和從服務(wù)器到客戶的響應(yīng)報(bào)文。圖 5.46
顯示了兩種報(bào)文的結(jié)構(gòu)。
在圖1.1 中,每個(gè)字段之間有空格分隔,每行的行尾有回車換行符。各字段的意義如下:
① 請(qǐng)求行由三個(gè)字段組成:
-
方法字段,最常用的方法為 “GET”,表示請(qǐng)求讀取一個(gè)萬維網(wǎng)的頁面。常用的方法還有 “HEAD(指讀取頁面的首部)”和“POST(請(qǐng)求接受所附加的信息)
-
URL 字段為主機(jī)上的文件名,這時(shí)因?yàn)樵诮CP 連接時(shí)已經(jīng)有了主機(jī)名
-
版本字段說明所使用的HTTP 協(xié)議的版本,一般為 “HTTP/1.1”
② 狀態(tài)行也有三個(gè)字段:
-
第一個(gè)字段等同請(qǐng)求行的第三字段
-
第二個(gè)字段一般為 “200”,表示一切正常,狀態(tài)碼共有41 種,常用的有:301 (網(wǎng)站已轉(zhuǎn)移),400(服務(wù)器無法理解請(qǐng)求報(bào)文),404(服務(wù)器沒有鎖請(qǐng)求的對(duì)象)等
-
第三個(gè)字段時(shí)解釋狀態(tài)碼的短語
③ 根據(jù)具體情況,首部行的行數(shù)是可變的。請(qǐng)求首部有Accept 字段,其值表示瀏覽器 可以接受何種類型的媒體;Accept-language,其值表示瀏覽器使用的語言;User-agent 表明可用的瀏覽器類型。響應(yīng)首部中有Date、Server、Content-Type、Content-Length 等字段。在請(qǐng)求首部和響應(yīng)首部中都有 Connection 字段,其值為Keep-Alive 或 Close,表示服務(wù)器在傳送完所請(qǐng)求的對(duì)象后是保持連接或關(guān)閉連接。
④ 若請(qǐng)求報(bào)文中使用 “GET”方法,首部行后面沒有實(shí)體主體,當(dāng)使用 “POST”方法時(shí),附加的信息被填寫在實(shí)體主體部分。在響應(yīng)報(bào)文中,實(shí)體主體部分為服務(wù)器發(fā)送給客戶的對(duì)象。
圖1.2 和圖1.3顯示了捕獲的HTTP 請(qǐng)求和響應(yīng)報(bào)文,結(jié)合上面的介紹,請(qǐng)自己分析和體會(huì)。
2.2實(shí)驗(yàn)環(huán)境與說明
(1)實(shí)驗(yàn)?zāi)康?br> 在PC 機(jī)上訪問Web 頁面,截獲報(bào)文,分析HTTP 協(xié)議的報(bào)文格式和HTTP協(xié)議的工作過程。
(2)實(shí)驗(yàn)設(shè)備和連接
本地實(shí)驗(yàn)室環(huán)境,無須設(shè)備連接;
注意:請(qǐng)通過訪問可以連接的WWW 站點(diǎn)或使用IIS 建立本地WWW 服務(wù)器來進(jìn)行實(shí)驗(yàn)。
(3)實(shí)驗(yàn)分組
每四名同學(xué)為一組,每人一臺(tái)計(jì)算機(jī)獨(dú)立完成實(shí)驗(yàn)。
2.3實(shí)驗(yàn)步驟
? 步驟1:在PC 機(jī)上運(yùn)行Wireshark,開始截獲報(bào)文;
? 步驟2:從瀏覽器上訪問Web 界面(http://csee.hnu.edu.cn)。打開網(wǎng)頁,待瀏覽器的狀態(tài)欄出現(xiàn) “完畢”信息后關(guān)閉網(wǎng)頁。
? 步驟3:停止截獲報(bào)文,將截獲的報(bào)文命名為http-學(xué)號(hào)保存。
? 分析截獲的報(bào)文,回答以下幾個(gè)問題:
1)綜合分析截獲的報(bào)文,查看有幾種HTTP 報(bào)文?
有TCP,DNS,ARP,HTTP,SSL,ICMPV6,TLSv1.3等報(bào)文
2)在截獲的HTTP 報(bào)文中,任選一個(gè)HTTP 請(qǐng)求報(bào)文和對(duì)應(yīng)的 HTTP 應(yīng)答報(bào)文,仔細(xì)分析它們的格式,填寫表1.1 和表1.2。
▲請(qǐng)求報(bào)文截圖:
表1.1 HTTP 請(qǐng)求報(bào)文格式:
方法:GET
版本:HTTP/1.1
URL: /favicon.ico
首部字段名 | 字段值 | 字段所表達(dá)的信息 |
---|---|---|
Host | csee.hnu.edu.cn | 接收請(qǐng)求的主機(jī)名 |
Connection | keep-alive | 連接 |
User-Agent | Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36 | 表明可用的瀏覽器類型,這里使用的是GoogleChrome瀏覽器。 |
Accept | image/avif,image/webp,image/apng,image/svg+xml,image/,/*;q=0.8 | 描述接收響應(yīng)數(shù)據(jù)的數(shù)據(jù)類型,q表示相對(duì)質(zhì)量因子,指示接收數(shù)據(jù)類型的優(yōu)先級(jí) |
Referer | http://csee.hnu.edu.cn/ | 提供訪問來源信息,即從那里來到的這個(gè)頁面 |
Accept-Encoding | gzip, deflate | 表示客戶端可處理的壓縮編碼 |
Accept-Language | zh-CN,zh;q=0.9 | 接收的語言類型 |
▲回復(fù)報(bào)文截圖:
表1.2 HTTP 應(yīng)答報(bào)文格式 :
版本:HTTP/1.1
狀態(tài)碼:200
短語:OK
首部字段名 | 字段值 | 字段所表達(dá)的信息 |
---|---|---|
Date | Thu, 12 Oct 2023 05:23:46 GMT | 響應(yīng)時(shí)間 |
Server | ********* | 服務(wù)器應(yīng)用程序 |
X-Frame-Options | SAMEORIGIN | 表示該頁面可以在相同域名頁面的frame中展示(即可以在同域名頁面的frame中嵌套) |
Cache-Control | no-store | 指定不緩存響應(yīng),表明資源不進(jìn)行緩存 |
Pragma | no-cache | 在 HTTP/1.1 協(xié)議中,它的含義和 Cache-Control:no-cache 相同 |
Expires | Thu, 01 Jan 1970 00:00:00 GMT | 過期時(shí)間 |
Content-Type | image/gif;charset=UTF-8 | 實(shí)體的內(nèi)容類型 |
Content-Length | 0 | 實(shí)體的字節(jié)大小 |
Set-Cookie | JSESSIONID=B3F69D4683D77B4FA0BBD8B423973CED; Path=/; HttpOnly | cookie值 |
Keep-Alive | timeout=5, max=99 | 持續(xù)連接的參數(shù) |
Connection | Keep-Alive | 建立持續(xù)鏈接 |
Content-Language | zh-CN | 實(shí)體的語言 |
3)分析在截獲的報(bào)文中,客戶機(jī)與服務(wù)器建立了幾個(gè)連接?服務(wù)器和客戶機(jī)分別使用 了哪幾個(gè)端口號(hào)?
★菜單欄“編輯”,“首選項(xiàng)”,“外觀”,“列”中添加兩項(xiàng),就可以查看端口和端口號(hào)了。這一步靈感來源于https://blog.csdn.net/h1580824951/article/details/120333571
按照以上方式可得到所有HTTP報(bào)文對(duì)應(yīng)的端口號(hào)
答案如下:
客戶機(jī)與服務(wù)器建立了7個(gè)連接,
服務(wù)器使用的都是端口號(hào)80,
用戶機(jī)使用了端口號(hào)51900,52004,52008,52017,52019,52018,52032
其中三次使用52008是TCP的三次握手
4 )綜合分析截獲的報(bào)文,理解HTTP 協(xié)議的工作過程,將結(jié)果填入表1.3 中。
實(shí)際上,由于我的頁面打開初始是www.baidu.com,所以上面的初始一部分實(shí)際上在跟www.baidu.com進(jìn)行通訊。我略去這一過程,只關(guān)注與http://csee.hnu.edu.cn進(jìn)行通訊的過程。
注意到這里報(bào)文類型實(shí)際上也是一個(gè)需要關(guān)注的點(diǎn),故加入這一列。另由于端口過多,只關(guān)注部分端口(尤其是端口52019,另外的52108、52107與這個(gè)類似)的連接與斷開。
HTTP客戶機(jī)端口號(hào) | HTTP服務(wù)機(jī)端口號(hào) | 所包括的報(bào)文號(hào) | 報(bào)文類型 | 步驟說明 |
---|---|---|---|---|
58508 | 53 | 10337 | DNS | 請(qǐng)求報(bào)文 |
53 | 58508 | 10352 | DNS | DNS響應(yīng)報(bào)文,返回域名對(duì)應(yīng)的IP地址 |
52008 | 80 | 10477 | TCP | SYN報(bào)文,請(qǐng)求建立與服務(wù)器的連接 |
80 | 52008 | 10479 | TCP | SYN ACK報(bào)文,允許客戶與服務(wù)器建立連接 |
52008 | 80 | 10480 | TCP | 對(duì)SYN ACK的確認(rèn),連接已建立 |
52008 | 80 | 10481 | HTTP | 對(duì)網(wǎng)頁的請(qǐng)求報(bào)文 |
80 | 52008 | 10488 | HTTP | 響應(yīng)報(bào)文 |
52019 | 80 | 13629 | HTTP | 請(qǐng)求報(bào)文 |
80 | 52019 | 13707 | HTTP | 響應(yīng)報(bào)文 |
52019 | 80 | 13708 | TCP | ACK報(bào)文 |
80 | 52019 | 13709 | TCP | FIN ACK報(bào)文(服務(wù)端發(fā)的第一個(gè)釋放連接的請(qǐng)求) |
52019 | 80 | 13710 | TCP | ACK報(bào)文(客戶端給服務(wù)端回應(yīng)確認(rèn)消息) |
52019 | 80 | 13711 | TCP | FIN ACK報(bào)文(客戶端發(fā)給服務(wù)端釋放連接的請(qǐng)求) |
80 | 52019 | 13727 | TCP | RST報(bào)文(本來應(yīng)該是ACK表示服務(wù)端發(fā)確認(rèn)消息,這里是連接突然終止了) |
上面只重點(diǎn)列出了一個(gè)TCP連接的建立和釋放的過程,其他兩個(gè)連接是類似的,以上報(bào)文體現(xiàn)了HTTP的工作過程。
特別需要指出的是:典型的關(guān)閉請(qǐng)求,有時(shí)由客戶端發(fā)起中斷連接。但在這里的關(guān)閉請(qǐng)求由服務(wù)端發(fā)起,即http://csee.hnu.edu.cn主動(dòng)發(fā)起并請(qǐng)求中斷TCP連接。
★中間解題過程與截圖如下:
DNS部分略
TCP三次握手建立連接
52017,52018,52019端口的結(jié)束報(bào)文
52019端口:RST報(bào)文
52019端口:正常傳輸
52019端口:四次揮手中的前三次
知識(shí)補(bǔ)充:三次握手與四次揮手
三次握手
四次揮手
最后的四次揮手原理講解可以參考如下的講解
https://blog.csdn.net/weixin_41033105/article/details/123861500
https://blog.csdn.net/m0_52650621/article/details/127797022
三次握手
第一次握手:這是客戶端發(fā)起給服務(wù)器的報(bào)文,用于請(qǐng)求建立連接。
第二次握手:這是服務(wù)器回復(fù)給客戶端的報(bào)文,用于確認(rèn)并同意連接請(qǐng)求。
第三次握手:是客戶端發(fā)給服務(wù)器的,是對(duì)上一個(gè)同意連接請(qǐng)求的確認(rèn)。
四次揮手
第一次揮手:當(dāng)數(shù)據(jù)傳輸首先結(jié)束的端(比如客戶端),會(huì)率先發(fā)起結(jié)束斷開連接的請(qǐng)求。
第二次揮手:對(duì)上一個(gè)斷開連接請(qǐng)求的報(bào)文進(jìn)行確認(rèn)。并同時(shí),停止接受數(shù)據(jù)。
第三次揮手:服務(wù)器端也結(jié)束數(shù)據(jù)發(fā)送了,所以也會(huì)發(fā)起一個(gè)斷開連接的請(qǐng)求。文章來源:http://www.zghlxwxcb.cn/news/detail-737871.html
第四次揮手:是客戶端對(duì)服務(wù)器斷開連接請(qǐng)求的進(jìn)行確認(rèn)。文章來源地址http://www.zghlxwxcb.cn/news/detail-737871.html
到了這里,關(guān)于HNU-計(jì)算機(jī)網(wǎng)絡(luò)-實(shí)驗(yàn)1-應(yīng)用協(xié)議與數(shù)據(jù)包分析實(shí)驗(yàn)(Wireshark)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!