TCP協議與wireshark抓包分析

一、tcp協議格式

1. 源端口號 :

發送方使用的端口號

2. 目的端口號 :

接收方使用的端口號

3. 序號:

數據包編號 , tcp 協議為每個數據都設置編號,用于確認是否接收到相應的包

4. 確認序列號 :

使用 tcp 協議接收到數據包,會根據這個接收到這個數據包編號發送一個應答包,一般為上一次的數據包的編號加上長度,如果是 SYN或者FIN ,則是上一次的數據包的編號 加1

5. 標志位: 用于標識

URG: 表示緊急指針是否有效ACK : 表示確認號是否有效。稱攜帶ACK標志的tcp報文段位確認報文段PSH : 提示接收端應用程序應該立即從tcp接受緩沖區中讀走數據,為接受后續數據騰出空間(如果應用程序不將接收的數據讀走,它們就會一直停留在tcp緩沖區中)

RST: 表示要求對方重新建立連接。攜帶RST標志的tcp報文段為復位報文段。

SYN: 表示請求建立一個連接。攜帶SYN標志的tcp報文段為同步報文段。

FIN: 表示通知對方本端要關閉連接了。攜帶FIN標志的tcp報文段為結束報文段。

6. 窗口大小:

用于 tcp 進行流量控制,這里的窗口用于向發送端說明當前 tcp 接收緩沖區還能存儲的數據大小

7. 校驗和:

用于接收端用于校驗接收的數據是否正確,由發送端進行填充,計算校驗和主要包括 tcp 協議頭與數據區校驗的方式為 CRC 校驗

二、tcp三次握手


1. 設置 wireshark 使用絕對數據包編號


?

?2. 選擇網卡,并設置tcp端口過濾,開啟抓包

?3. 啟動tcp服務器,并使用網絡調試助手連接服務器

?

?4. 查看抓包結果

?第一次握手 : 客戶端給服務器發送 SYN 數據包

Flags標志設置為 SYN ,數據包編號為 2968294989

第二次握手 : 服務器給客戶端發送 SYN + ACK 的數據包
?

?

Flags 標志: 設置為 SYN + ACK

數據包應答編號為 2968294990,相當是 SEQ_SYN + 1

數據包編號為 672472624

第三次握手 : 客戶端給服務器發送 ACK 數據包

?

Flags 標志 : ACK

數據包應答編號為 672472625,是第二個數據包的編號加1

數據包編號為 2968294990


?三、tcp 四次揮手

TCP(傳輸控制協議)的四次揮手是用于關閉一個已經建立的TCP連接的過程。它確保了數據的可靠傳輸,并且能夠讓雙方安全地斷開連接。以下是四次揮手的詳細過程:

1.?第一次揮手(FIN):主動方發起關閉請求

  • 操作:假設客戶端(A)想要關閉連接,它會發送一個帶有FIN標志的TCP報文給服務器(B)。這個FIN報文表示客戶端已經沒有數據要發送了,但仍然可以接收來自服務器的數據。

  • 狀態變化:客戶端進入FIN_WAIT_1狀態,等待服務器的響應。

2.?第二次揮手(ACK):被動方確認關閉請求

  • 操作:服務器(B)收到客戶端(A)的FIN報文后,會發送一個帶有ACK標志的TCP報文作為確認。這個ACK報文的確認號是客戶端FIN報文序列號加1,表示服務器已經收到了客戶端的關閉請求。

  • 狀態變化:客戶端收到ACK后,進入FIN_WAIT_2狀態;服務器進入CLOSE_WAIT狀態。此時,服務器可能還有數據要發送給客戶端。

3.?第三次揮手(FIN):被動方發起關閉請求

  • 操作:當服務器(B)完成數據發送后,它會發送一個帶有FIN標志的TCP報文給客戶端(A),表示服務器也沒有數據要發送了,希望關閉連接。

  • 狀態變化:服務器進入LAST_ACK狀態,等待客戶端的最終確認。

4.?第四次揮手(ACK):主動方確認關閉請求

  • 操作:客戶端(A)收到服務器(B)的FIN報文后,會發送一個帶有ACK標志的TCP報文作為確認,確認號是服務器FIN報文序列號加1。此時,客戶端進入TIME_WAIT狀態,等待2個最大報文段壽命(2MSL)的時間,以確保最后一個ACK報文能夠被服務器收到。

  • 狀態變化:服務器收到客戶端的ACK后,進入CLOSED狀態,完成關閉過程。客戶端在2MSL時間后也進入CLOSED狀態。

為什么需要四次揮手

  • 確保數據完整傳輸:TCP是一個面向連接的協議,需要確保數據的可靠傳輸。四次揮手確保了雙方都明確知道對方已經沒有數據要發送,并且雙方都收到了對方的關閉請求。

  • 防止資源泄露:通過四次揮手,可以優雅地關閉連接,釋放系統資源,避免連接長時間占用資源。

TIME_WAIT 狀態的作用

  • 確保最后一個ACK報文能夠被對方收到:在第四次揮手時,客戶端發送的ACK報文可能會丟失。服務器在等待ACK超時后會重新發送FIN報文。客戶端進入TIME_WAIT狀態后,可以重新發送ACK,確保連接能夠正確關閉。

  • 防止老的連接干擾新的連接:在2MSL時間內,網絡中可能還殘留著舊連接的報文。TIME_WAIT狀態可以防止這些報文干擾新的連接。

TCP四次揮手是TCP協議中非常重要的機制,它確保了連接的可靠關閉,是TCP協議可靠性的關鍵體現之一。

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

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

相關文章

《HelloGitHub》第 108 期

興趣是最好的老師,HelloGitHub 讓你對開源感興趣! 簡介 HelloGitHub 分享 GitHub 上有趣、入門級的開源項目。 github.com/521xueweihan/HelloGitHub 這里有實戰項目、入門教程、黑科技、開源書籍、大廠開源項目等,涵蓋多種編程語言 Python、…

VITA 模型解讀,實時交互式多模態大模型的 pioneering 之作

寫在前面:實時交互llm 今天回顧一下多模態模型VITA,當時的背景是OpenAI 的 GPT-4o 驚艷亮相,然而,當我們將目光投向開源社區時,卻發現能與之匹敵的模型寥寥無幾。當時開源多模態大模型(MLLM),大多在以下一個或多個方面存在局限: 模態支持不全:大多聚焦于文本和圖像,…

VLAN的高級特性

前言: 1:華為VLAN聚合通過邏輯分層設計,將廣播域隔離與子網共享結合,既解決了IP地址浪費問題,又實現了靈活的網絡管理 2:MUX VLAN(Multiplex VLAN)提供了一種通過VLAN進行網絡資源控…

制作cass高程點塊定義——cad c#二次開發——待調試

public class Demo{[CommandMethod("xx")]public void Demo1(){using var tr1 new DBTrans();var doc Application.DocumentManager.MdiActiveDocument; var db doc.Database;var ed doc.Editor;var 圓心 new Point3d(0, 0, 0); var 半徑 10.0;using (var tr …

pod幾種常用狀態

在 Kubernetes 中,Pod 是最小的可部署單元,Pod 的狀態反映了其當前的運行狀況。以下是幾種常見的 Pod 狀態: 1. Pending 描述: Pod 已被 Kubernetes API Server 接收并創建,但還沒有開始運行在任何節點上。原因: Pod 資源不足&a…

04 單目標定實戰示例

看文本文,您將獲得以下技能: 1:使用opencv進行相機單目標定實戰 2:標定結果參數含義和數值分析 3:Python繪制各標定板姿態,查看圖像采集多樣性 4:如果相機畫幅旋轉90,標定輸入參數該如何設置? 5:圖像尺寸縮放,標定結果輸出有何影響? 6:單目標定結果應用類別…

DevEco Studio編輯器的使用-代碼code Linter檢查

Code Linter代碼檢查 Code Linter針對ArkTS/TS代碼進行最佳實踐/編程規范方面的檢查。檢查規則支持配置,配置方式請參考配置代碼檢查規則。 開發者可根據掃描結果中告警提示手工修復代碼缺陷,或者執行一鍵式自動修復,在代碼開發階段&#x…

wokwi arduino mega 2560 - 模數與數模轉換AD和DA

截圖&#xff1a; 20.53 黃燈滅 不報警 205.77 黃燈亮 報警 鏈接&#xff1a; https://wokwi.com/projects/415345595312267265 代碼&#xff1a; 詳細注釋版&#xff1a;AD和I2C仿真實驗案例程序 cpp #include <LiquidCrystal_I2C.h>// 定義I2C地址和LCD的行列數 #de…

如何使不同的窗體控件,適應不同分辨率的屏幕?

問題 當屏幕分辨率提高或降低時&#xff0c;原分辨率顯示正常的控件&#xff0c;將變得很小或很大&#xff0c;字體也變得太大或太小。 解決辦法 當分辨率變化時&#xff0c;采用遞歸的方法&#xff0c;對所有的控件放大或縮小。 public static void MainForm_Load(object s…

虛擬機(一):Java 篇

虛擬機&#xff08;一&#xff09;&#xff1a;Java 篇 虛擬機&#xff08;二&#xff09;&#xff1a;Android 篇 架構 運行時數據區&#xff1a; 棧&#xff1a; 堆&#xff1a; 堆&#xff1a;通過new創建的對象都在堆中分配。OutOfMemoryError TLAB(Thread Local All…

硬件基礎--14_電功率

電功率 電功率:指電流在單位時間內做的功(表示用電器消耗電能快慢的一個物理量)。 單位:瓦特(W)&#xff0c;簡稱瓦。 公式:PUI(U為電壓&#xff0c;單位為V&#xff0c;i為電流&#xff0c;單位為A&#xff0c;P為電功率&#xff0c;單位為W)。 單位換算:進位為1000&#xff…

更高的效率——MyBatis-plus

一、什么是MyBatis-plus&#xff1f; MyBatis-plus是MyBatis的增強工具&#xff0c;在MyBatis基礎上只做增強不做改變&#xff0c;可以簡化基礎的CRUD操作&#xff08;通過繼承 BaseMapper 接口可直接使用預定義的增刪改查方法&#xff09; 二、MyBatis-plus快速入門 2.1 準備…

【算法基礎】遞歸與遞推

目錄 遞歸實現指數型枚舉 題目 算法解析 遞歸實現排列型枚舉 題目 算法解析 費解的開關 題目 算法解析 遞歸實現組合型枚舉 題目 算法解析 帶分數 題目 算法解析 飛行員兄弟 題目 算法解析 翻硬幣 題目 算法解析 遞歸實現指數型枚舉 題目 算法…

Java 大視界 -- Java 大數據在智慧礦山設備故障預測與預防性維護中的技術實現(163)

&#x1f496;親愛的朋友們&#xff0c;熱烈歡迎來到 青云交的博客&#xff01;能與諸位在此相逢&#xff0c;我倍感榮幸。在這飛速更迭的時代&#xff0c;我們都渴望一方心靈凈土&#xff0c;而 我的博客 正是這樣溫暖的所在。這里為你呈上趣味與實用兼具的知識&#xff0c;也…

綜合實驗一

實驗拓撲圖&#xff1a; 實驗要求&#xff1a; 1,內網IP地址使用172.16.0.0/16分配 2,SW1和SW2之間互為備份 3,VRRP/STP/VLAN/Eth-trunk均使用 4,所有PC均通過DHCP獲取IP地址 5,ISP只能配置IP地址 6,所有電腦可以正常訪問ISP路由器環回 實驗步驟&#xff1a; 步驟1&…

snort檢測端口掃描工具

前面兩篇文章介紹了snort3相關知識和Ubuntu上的安裝配置Ubuntu22.04上Snort3的安裝與基本配置 -CSDN博客 和Snort規則定義并進行的簡單的測試Snort規則定義與測試 -CSDN博客&#xff0c;接下來我將介紹如何編寫一個簡單的檢測端口掃描的規則進行檢測 一、實驗環境 攻擊機&…

【行測】資料分析

> 作者&#xff1a;?舊言~ > 座右銘&#xff1a;讀不在三更五鼓&#xff0c;功只怕一曝十寒。 > 目標&#xff1a;掌握 資料分析 基本題型&#xff0c;并能運用到例題中。 > 毒雞湯&#xff1a;有些事情&#xff0c;總是不明白&#xff0c;所以我不會堅持。早安! …

工地揚塵監測儀:守護藍天白云的重要工具

在城市化進程加速推進的背景下&#xff0c;建筑工地數量呈現持續增長態勢&#xff0c;揚塵污染問題亦愈發顯著。揚塵不僅對空氣質量造成負面影響&#xff0c;更對周邊居民的健康狀況及生活質量構成威脅。在此情形下&#xff0c;工地揚塵監測儀作為建筑工地環境管理中不可或缺的…

Windows10 下QT社區版的安裝記錄

0. 介紹 踩了一些坑&#xff0c;記錄一下&#xff0c;主要是鏡像源的問題。 1. 安裝 首先你先要在qt官網上有一個自己的賬號。 然后點右上角的下載 打開后&#xff0c;我們需要選擇社區版本&#xff1b;如果選擇直接下載的話&#xff0c;出來的就是商業版本。 點開后&…

自定義一個C語言字符串取整函數

一、字符串取整的主要思路 1、遍歷每個字符&#xff1b; 2、獲得0到9的字符對應的整數值&#xff1b; 3、把對應位置的十進制權重相乘&#xff1b; 4、把所有的相乘結果相加&#xff1b; 5、返回相加結果&#xff1b; 二、主要代碼 // 主要是把十進制的整數字符轉成十進制變量值…