《計算機網絡》實驗報告四 TCP協議分析

目? 錄

1、實驗目的

2、實驗環境

3、實驗內容

3.1 利用wget下載新疆大學主頁

3.2 使用wireshark分析TCP報文結構

3.3 使用wireshark分析建立連接的三次握手

3.4 使用wireshark分析釋放連接的四次揮手

4、實驗結果與分析

4.1 利用wget下載新疆大學主頁

4.2 使用wireshark分析TCP報文結構

4.3 使用wireshark分析建立連接的三次握手

1. 第一次握手

2. 第二次握手

3. 第三次握手

4.4 使用wireshark分析釋放連接的四次揮手

1. 第一次揮手

2. 第二次揮手

3. 第三次揮手

4. 第四次揮手

5、實驗小結

5.1 問題與解決辦法:

5.2 心得體會:


1、實驗目的

? ? ? ? 1、了解運輸層TCP協議基本概念、報文結構

????????2、分析TCP報文頭部

? ? ? ? 3、分析TCP連接建立過程、TCP連接釋放

? ? ? ? 4、掌握利用tcpdump和wireshark進行tcp協議分析技術


2、實驗環境

? ? ? ? 1、硬件要求:阿里云云主機ECS 一臺、筆記本電腦一臺

? ? ? ? 2、軟件要求:Linux/ Windows 操作系統


3、實驗內容

????????TCP是面向連接的、在不可靠的互聯網絡上提供可靠的端到端通信,是TCP/IP協議集的核心協議。

????????TCP為了保證報文傳輸的可靠,就給每個包一個序號,同時序號也保證了傳送到接收端實體的包的按序接收。然后接收端實體對已成功收到的字節發回一個相應的確認(ACK);如果發送端實體在合理的往返時延(RTT)內未收到確認,那么對應的數據(假設丟失了)將會被重傳。

3.1 利用wget下載新疆大學主頁

????????利用wget下載新疆大學主頁www.xju.edu.cn,與此同時使用tcpdump抓包。

3.2 使用wireshark分析TCP報文結構

????????根據捕獲的數據包,分析TCP報文結構由哪幾部分組成,其功能是什么?

3.3 使用wireshark分析建立連接的三次握手

????????根據捕獲的數據包,分析建立連接的三次握手,將TCP協議中各字段名,字段長度,字段值,字段含義填入到對應表格中。

3.4 使用wireshark分析釋放連接的四次揮手

????????根據捕獲的數據包,分析釋放連接的四次揮手,將TCP協議中各字段名,字段長度,字段值,字段含義填入到對應表格中。


4、實驗結果與分析

4.1 利用wget下載新疆大學主頁

????????1. 使用wget命令下載新疆大學主頁www.xju.edu.cn。

wget www.xju.edu.cn

????????2. 使用tcpdump命令抓取www.xju.edu.cn網站的數據包,并將所抓取的數據包保存在xju.cap文件中。

tcpdump host www.xju.edu.cn -w xju.cap

????????3. 使用wireshark打開爬取的數據包文件xju.cap,查看所爬取的數據包的信息。

4.2 使用wireshark分析TCP報文結構

????????1. 使用Ping命令查看網站www.xju.edu.cn的IP地址,查詢后的IP地址為111.115.76.75。

Ping www.xju.edu.cn

????????2. 通過在過濾欄中輸入以下語句將使用TCP協議并且IP地址為111.115.76.75的數據包進行過濾。

tcp and ip.addr==111.115.76.75

????????3. 根據捕獲的數據包,分析TCP報文結構由哪幾部分組成,其功能是什么。

????????源端口(16位):通信發送方使用的端口號。

????????目標端口(16位):通信接收方使用的端口號。

????????序號(32位):用來確保數據可靠傳輸的唯一值。

????????確認號(32位):接收方在響應時發送的數值。

????????數據偏移(4位):標志數據包開始的位置,TCP 頭部的長度。

????????保留(6位):保留為今后使用,但目前應該置為0。

????????緊急URG:數據包中承載的內容應該立即由 TCP 協議棧立即進行處理:當 URG=1 時,表明

????????緊急指針字段有效。它告訴系統此報文段中有緊急數據,應盡快傳送(相當于高優先級的數據)。

????????確認ACK:確認收到的數據包:只有當 ACK=1 時,確認號字段才有效;當 ACK=0 時,確認號無效。

????????推送PSH:數據包直接發送給應用,而不是緩存起來:接收 TCP 收到 PSH=1 的報文段,就盡快地交付接收應用進程,而不再等到整個緩存都填滿了后再向上交付。

????????復位RST:之前嘗試的連接被關閉,(信號差,信號擁擠):當 RST=1 時,表明 TCP 連接中出現嚴重差錯(如由于主機崩潰或其他原因),必須釋放連接,然后再重新建立運輸連接。

????????同步SYN:發起連接的數據包:同步 SYN=1 表示這是一個連接請求或連接接受報文。

????????終止FIN:連接成功,傳輸完畢之后,連接正在斷開:用來釋放一個連接,FIN=1 表明此報文段的發送端的數據已發送完畢,并要求釋放運輸連接。

????????窗口(16位):匹配緩存區的大小。

????????校驗和(16位):確認 TCP 數據段中的內容是否發送了變化。

????????緊急指針(16位):明確顯示數據之前的 16 進制序列號。

????????選項:長度可變,最長可達40字節,當沒有使用選項時,TCP的首部長度是20字節。

4.3 使用wireshark分析建立連接的三次握手

1. 第一次握手

????????客戶端將標志位 SYN 置為 1 ,隨機產生一個值seq = X,并將該數據包發送給服務器,等待服務器確認。

????????分析建立連接的第一次握手,將TCP協議中源端口、目的端口、序號、確認號、窗口、校驗和及緊急指針的字段名,字段長度,字段值,字段含義填入到對應表格中。

2. 第二次握手

????????服務器收到數據包后由標志位SYN = 1,知道客戶端請求建立連接,服務器將標志位 SYN 和 ACK 都置為 1 ,ack= X + 1,隨機產生一個值seq= Y,并將該數據包發送給客戶端以確認連接請求。

????????分析建立連接的第二次握手,將TCP協議中源端口、目的端口、序號、確認號、窗口、校驗和及緊急指針的字段名,字段長度,字段值,字段含義填入到對應表格中。

3. 第三次握手

????????客戶端收到確認后,檢查 ack是否為X + 1,ACK 是否為 1 ,如果正確則將標志位 ACK 置為 1 ,ack= Y + 1,并將該數據包發送給服務器,服務器檢查 ACK 是否為1 ,如果正確則連接建立成功。

????????分析建立連接的第三次握手,將TCP協議中源端口、目的端口、序號、確認號、窗口、校驗和及緊急指針的字段名,字段長度,字段值,字段含義填入到對應表格中。

4.4 使用wireshark分析釋放連接的四次揮手

1. 第一次揮手

????????主動關閉方發送一個 FIN ,用來關閉主動方到被動關閉方的數據傳送,也就是主動關閉方告訴被動關閉方:我已經不會再給你發送數據了(當然,在 FIN 包之前發送出去的數據,如果沒有收到對應的 ACK 確認報文,主動關閉方依然會重發這些數據),但此時主動關閉方還可以接受數據。

????????分析釋放連接的第一次揮手,將TCP協議中源端口、目的端口、序號、確認號、窗口、校驗和及緊急指針的字段名,字段長度,字段值,字段含義填入到對應表格中。

2. 第二次揮手

????????被動關閉方收到 FIN 包后,發送一個 ACK 給對方,確認序號為:收到報文序號seq+收到報文所攜帶數據長度len+ 1 。上一個報文可能“捎帶”了主動關閉方發送的最后一塊數據,其長度用字段len來表示。

????????分析釋放連接的第二次揮手,將TCP協議中源端口、目的端口、序號、確認號、窗口、校驗和及緊急指針的字段名,字段長度,字段值,字段含義填入到對應表格中。

3. 第三次揮手

????????被動關閉方發送一個 FIN ,用來關閉被動關閉方到主動關閉方的數據傳送,也就是告訴主動關閉方,我的數據也發送完了,不會再給你發送數據了。

????????分析釋放連接的第三次揮手,將TCP協議中源端口、目的端口、序號、確認號、窗口、校驗和及緊急指針的字段名,字段長度,字段值,字段含義填入到對應表格中。

4. 第四次揮手

????????主動關閉方收到 FIN 后,發送一個 ACK 給被動關閉方,確認序號為:收到報文的序號seq + 收到報文所攜帶數據長度len+ 1 ,至此,完成四次揮手。

????????分析釋放連接的第四次揮手,將TCP協議中源端口、目的端口、序號、確認號、窗口、校驗和及緊急指針的字段名,字段長度,字段值,字段含義填入到對應表格中。


5、實驗小結

5.1 問題與解決辦法:

????????1. 問題一:使用tcpdump進行數據包的抓取時出現如下提示此命令未找到:

解決方法:由于命令輸入錯誤導致,數據包的抓取命令為tcpdump,而不是tcpdnmp,將對應命令進行更改后錯誤消失。

????????2. 問題二:對指定網絡接口的數據包進行抓取時出現如下提示語法錯誤:

解決方法:由于命令鍵入不完整所導致,指定網絡接口所需要的參數是-i,在eth0前方添加-i后錯誤消失。

????????3. 問題三:使用tcpdump抓取所有的數據包時一直在抓取,不能夠自動停止抓包:

解決方法:使用Ctrl+c就可以終止運行的命令,進而就可以停止抓包。

????????4. 問題四:使用Wireshark對抓取的數據包進行過濾時出現如下提示輸入框出現紅色:

解決方法:由于過濾命令輸入錯誤,在過濾地址時使用ip.addr,將輸入內容中的id.addr改為ip.addr后紅色報錯消失。

????????5. 問題五:使用Wireshark對抓取的數據包進行多個條件同時成立過濾時出現如下提示輸入框出現紅色:

解決方法:由于多個條件同時成立時需要使用and進行連接,但是輸入命令時并沒有使用and進行連接所導致,在輸入內容中加入and后紅色報錯消失。

5.2 心得體會:

????????1、TCP是一種面向連接的、可靠的、基于字節流的傳輸層通信協議。

????????2、要控制 TCP 發送速率,不能發送得太快,以免數據來不及處理,也不能發送得太慢,以免浪費資源。

????????3、在 TCP 中,發送端和接收端其實都維護著對應的窗口:分別為發送端窗口和接收端窗口。

????????4、發送端窗口是由接收窗口剩余大小決定的。接收方會把當前接收窗口的剩余大小寫入應答報文,發送端收到應答后根據該值和當前網絡擁塞情況設置發送窗口的大小,所以發送窗口的大小是不斷變化的,這個不斷變化的窗口就叫做滑動窗口。

????????5、擁塞控制作用于網絡,目的是防止過多的數據擁塞網絡,避免出現網絡負載過大,帶寬被大量占用的情況。

????????6、建立連接需要三次握手,斷開連接需要四次揮手。

????????7、超時重傳機制保證每一次傳輸的數據都是可靠的。

????????8、滑動窗口動態調整發送端窗口大小,保證接收方來得及接收數據。

????????9、擁塞窗口動態調整發送端窗口大小,防止過多的數據擁塞網絡,出現網絡帶寬不夠用的情況。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/89785.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/89785.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/89785.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

知識 IP 的突圍:從 “靠感覺” 到 “系統 + AI” 的變現躍遷

越來越多的知識付費從業者陷入 “努力無成果” 的困局:做了內容、上了課程,卻沒人看、沒人買。核心問題不在于能力不足,而在于仍在用 “靠感覺” 的原始方式打造 IP。在流量內卷、節奏加快的當下,“內容情懷” 已撐不起一門生意&a…

4.Java創建對象有幾種方式?

1.使用 new 關鍵字(最常用)通過調用類的構造函數直接實例化對象Person person new Person(); // 調用無參構造 Person person new Person("Alice", 25); // 調用有參構造2.反射機制(動態創建)利用Java反射 API 在運行…

【好題】洛谷 P1600 [NOIP 2016 提高組] 天天愛跑步(倍增LCA+桶)

前言沒做出來,看了很多篇題解后AC了,感覺大部分題解講得不清楚。題目思路結果有兩種求法模擬跑步過程,統計每個節點能觀察到的人數考慮每條路徑會對哪些節點作出貢獻(當前路徑的玩家能被觀察到)嘗試第一種求法必須遍歷…

valkey之網絡管理架構深度解析

一、連接類型實現體系 valkey通過ConnectionType結構體構建了靈活的網絡連接抽象,支持多種連接類型的統一管理。每種連接類型都通過填充該結構體的函數指針來實現特定功能,形成了面向接口的設計模式。1.1 socket連接 Socket連接提供了最基礎的TCP/IP通信…

【解碼文本世界的“隱形分界線”:Windows與Linux回車換行之謎】

在計算機的文本世界里,回車(Carriage Return,CR)和換行(Line Feed,LF)是兩個看似簡單卻意義非凡的字符。它們如同文本中的“隱形分界線”,默默地劃分著段落與行,影響著文…

【Project】ELK 7.17.16 日志分析系統部署

ELK 日志分析系統集群部署 本文檔基于 Rocky Linux 9.4 系統,部署 ELK 7.17.16(長期支持版)集群 案例準備 1. 節點規劃IP主機名部署組件角色說明192.168.100.150kafka01Elasticsearch、Kibana主節點(master) 可視化192…

分布式定時任務系列13:死循環是任務觸發的銀彈?

傳送門 分布式定時任務系列1:XXL-job安裝 分布式定時任務系列2:XXL-job使用 分布式定時任務系列3:任務執行引擎設計 分布式定時任務系列4:任務執行引擎設計續 分布式定時任務系列5:XXL-job中blockingQueue的應用 …

Flutter基礎(前端教程①③-單例)

現實類比:公司打印機假設你們公司有一臺共享打印機:非單例(重復創建):每個員工都自己買一臺打印機放在工位上結果:浪費錢,占空間,難維護單例(唯一實例)&#…

力扣刷題 -- 965.單值二叉樹

題目示例: 思路分析代碼實現 bool isUnivalTree(struct TreeNode* root) {if(rootNULL){return true;}if(root->left && root->val ! root->left->val){return false;}if(root->right && root->val ! root->right->val){re…

uni-api交互反饋組件(showToast)的用法

歡迎來到我的UniApp技術專欄!🎉 在這里,我將與大家分享關于UniApp開發的實用技巧、最佳實踐和項目經驗。 專欄特色: 📱 跨平臺開發一站式解決方案 🚀 從入門到精通的完整學習路徑 💡 實戰項目經…

借助它,在Web3投資賽道搶占先機

隨著互聯網技術的飛速發展,Web3的概念逐漸成為科技圈和投資界的熱門話題。Web3代表著下一代互聯網的發展方向,它強調去中心化、用戶主權和數據隱私保護。在這一新興領域,如何借助Web3技術搶占投資先機,成為許多投資者關注的焦點。…

驗證大語言模型不會算數但可以編寫算數的程序

摘要:本文通過幾個實例測試了大語言模型在數學計算、排序、統計等方面的能力。結果顯示,對于簡單字符統計、排序等任務,大模型能正確生成實現代碼,但當數據區分度降低時容易出錯。在計算學生分數排名任務中,大模型生成…

概率論與數理統計(八)

參數估計 通過取樣本,并用樣本構造函數,達成估計分布函數參數的目的 矩估計法 本質:用樣本的各階矩代替總體的各階矩,即取: E(X)X ̄1n∑iXiE(X2)1n∑iXi2E(X)\overline{X}\dfrac{1}{n}\sum_i X_i\\ E(X^2)\dfrac{1}…

服務器后臺崩潰的原因

當我們雙十一活動零點拼命刷新卻卡在支付完頁面,游戲頁面等不進去,公司系統癱瘓全體員工干瞪眼,服務器崩潰絕對是數字時代中的酷刑!那服務器為什么會說崩就崩,用戶對于這種情況該如何進行避雷呢?服務器主要…

線程池與ThreadPoolExecutor源碼解析(上)

一、線程池線程池(ThreadPool)是一種線程復用的機制。它維護著若干個線程,任務來了就復用這些線程去執行,任務做完線程不會銷毀,而是回到池中等待下一個任務。為什么要用線程池?降低資源消耗:避…

Linux內核IP分片重組機制剖析:高效與安全的藝術

在IP網絡通信中,當數據包超過MTU限制時,路由器會將其拆分為多個分片。這些分片到達目標主機后,內核必須高效、安全地重組原始數據包。Linux內核的net/ipv4/inet_fragment.c實現了一套精妙的分片管理框架,完美平衡了性能和安全性需求。本文將深入剖析其設計哲學與關鍵技術。…

相機模型和對極幾何

一、相機模型 1.針孔相機模型-外參矩陣 1.世界坐標系到相機坐標系 世界坐標系:可以定義空間中任意一個位置,原點位置三個坐標軸方向坐標系姿態(X,Y,Z)相機坐標系:定義在相機上,原點是相機中心,z…

Git 常用命令與操作步驟

以下是 Git 常用命令與操作步驟 的整理&#xff0c;涵蓋日常開發中最核心的場景&#xff0c;適合快速查閱和上手&#xff1a;1. 初始化與克隆倉庫操作命令本地初始化倉庫git init克隆遠程倉庫git clone <倉庫URL> &#xff08;如 git clone https://gitlab.com/user/repo…

Leetcode-.283移動零

class Solution:def moveZeroes(self, nums: List[int]) -> None:"""Do not return anything, modify nums in-place instead."""pos0for i in range(len(nums)):if nums[i]!0:nums[pos],nums[i]nums[i],nums[pos]pos1本題運用雙指針來寫&…

在React中做過哪些性能優化?

1. 使用 React.memo 進行組件優化 問題:當父組件重新渲染時,子組件也會重新渲染,即使它的 props 沒有變化。 解決方案:使用 React.memo 包裹子組件,讓其只在 props 變化時才重新渲染。 const MyComponent = React.memo((props) => {// 子組件代碼 }); 2. 使用 useCa…