網絡協議分析-TCP協議分析

TCP協議的應用

在這裏插入圖片描述

TCP包結構

在這裏插入圖片描述
源端口號( 16 位):它(連同源主機 IP 地址)標識源主機的一個應用進程。
目的端口號( 16 位):它(連同目的主機 IP 地址)標識目的主機的一個應用進程。這兩個值加上 IP 報頭中的源主機 IP 地址和目的主機 IP 地址唯一確定一個 TCP 連接。
順序號( 32 位):用來標識從 TCP 源端向 TCP 目的端發送的數據字節流,它表示在這個報文段中的第一個數據字節的順序號。如果將字節流看作在兩個應用程序間的單向流動,則 TCP 用順序號對每個字節進行計數。序號是 32bit 的無符號數,序號到達 2 32 - 1 後又從 0 開始。當建立一個新的連接時, SYN 標誌變 1 ,順序號字段包含由這個主機選擇的該連接的初始順序號 ISN( Initial Sequence Number )。
確認號( 32 位):包含發送確認的一端所期望收到的下一個順序號。因此,確認序號應當是上次已成功收到數據字節順序號加 1。只有 ACK 標誌爲 1 時確認序號字段纔有效。 TCP 爲應用層提供全雙工服務,這意味數據能在兩個方向上獨立地進行傳輸。因此,連接的每一端必須保持每個方向上的傳輸數據順序號。
TCP 報頭長度( 4 位):給出報頭中 32bit 字的數目,它實際上指明數據從哪裏開始。需要這個值是因爲任選字段的長度是可變的。這個字段佔 4bit ,因此 TCP 最多有 60 字節的首部。然而,沒有任選字段,正常的長度是 20 字節。
保留位( 6 位):保留給將來使用,目前必須置爲 0 。
控制位( control flags , 6 位):在 TCP 報頭中有 6 個標誌比特,它們中的多個可同時被設置爲 1 。依次爲:
URG :爲 1 表示緊急指針有效,爲 0 則忽略緊急指針值。
ACK :爲 1 表示確認號有效,爲 0 表示報文中不包含確認信息,忽略確認號字段。
PSH :爲 1 表示是帶有 PUSH 標誌的數據,指示接收方應該儘快將這個報文段交給應用層而不用等待緩衝區裝滿。
RST :用於復位由於主機崩潰或其他原因而出現錯誤的連接。它還可以用於拒絕非法的報文段和拒絕連接請求。一般情況下,如果收到一個 RST 爲 1 的報文,那麼一定發生了某些問題。
SYN :同步序號,爲 1 表示連接請求,用於建立連接和使順序號同步( synchronize )。
FIN :用於釋放連接,爲 1 表示發送方已經沒有數據發送了,即關閉本方數據流。
窗口大小( 16 位):數據字節數,表示從確認號開始,本報文的源方可以接收的字節數,即源方接收窗口大小。窗口大小是一個16bit 字段,因而窗口大小最大爲 65535字節。
校驗和( 16 位):此校驗和是對整個的 TCP 報文段,包括 TCP 頭部和 TCP 數據,以 16 位字進行計算所得。這是一個強制性的字段,一定是由發送端計算和存儲,並由接收端進行驗證。
緊急指針( 16 位):只有當 URG 標誌置 1 時緊急指針纔有效。緊急指針是一個正的偏移量,和順序號字段中的值相加表示緊急數據最後一個字節的序號。 TCP 的緊急方式是發送端向另一端發送緊急數據的一種方式。
選項:最常見的可選字段是最長報文大小,又稱爲 MSS(Maximum Segment Size) 。每個連接方通常都在通信的第一個報文段(爲建立連接而設置 SYN 標誌的那個段)中指明這個選項,它指明本端所能接收的最大長度的報文段。選項長度不一定是 32 位字的整數倍,所以要加填充位,使得報頭長度成爲整字數。
數據: TCP 報文段中的數據部分是可選的。在一個連接建立和一個連接終止時,雙方交換的報文段僅有 TCP 首部。如果一方沒有數據要發送,也使用沒有任何數據的首部來確認收到的數據。在處理超時的許多情況中,也會發送不帶任何數據的報文段。

在這裏插入圖片描述
請求端(通常稱爲客戶)發送一個 SYN 報文段( SYN 爲 1 )指明客戶打算連接的服務器的端口,以及初始順序號( ISN )。
服務器發回包含服務器的初始順序號( ISN )的 SYN 報文段( SYN 爲 1 )作爲應答。同時,將確認號設置爲客戶的 ISN 加 1以對客戶的 SYN 報文段進行確認( ACK 也爲 1 )。
客戶必須將確認號設置爲服務器的 ISN 加 1 以對服務器的 SYN 報文段進行確認( ACK 爲 1 ),該報文通知目的主機雙方已完成連接建立。
三次握手協議可以完成兩個重要功能:它確保連接雙方做好傳輸準備,並使雙方統一了初始順序號。初始順序號是在握手期間傳輸順序號並獲得確認:當一端爲建立連接而發送它的 SYN 時,它爲連接選擇一個初始順序號;每個報文段都包括了順序號字段和確認號字段,這使得兩臺機器僅僅使用三個握手報文就能協商好各自的數據流的順序號。一般來說, ISN 隨時間而變化,因此每個連接都將具有不同的 ISN 。
在這裏插入圖片描述

導入scapy模塊找到tcp協議

在這裏插入圖片描述

實例化tcp協議及複合ethernet,ip協議

在這裏插入圖片描述

賦值
sport			#源端口
dport			#目的端口

在這裏插入圖片描述

使用srp1()函數將packet發送

在這裏插入圖片描述

分析

在這裏插入圖片描述

在這裏插入圖片描述
在這裏插入圖片描述

最後是RST,未連接成功。

在這裏插入圖片描述

手動連接

在這裏插入圖片描述

在這裏插入圖片描述

ps: TCP與UDP的比較:

TCP提供可靠的,面向連接的傳輸服務
UDP提供不可靠的,無連接的傳輸服務
TCP是面向流的協議;UDP是基於數據報的協議
TCP適用於一次傳送大批量的數據
UDP適用於多次少量數據的傳輸,實時性要求高的業務

TCP與UDP的比較
使用TCP傳輸的應用程序和協議包括:
FTP
Telnet
SMTP
使用UDP傳輸的應用程序和協議包括:
RIP
TFTP
SNMP
————————————————
版權聲明:本文爲CSDN博主「_abcdef」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/qq_38626043/article/details/103865196

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章