天天看點

網絡協定分析-TCP協定分析

目錄

    • 一 . TCP協定的應用
    • 二 . TCP包結構
    • 三 . 執行個體化

一 . TCP協定的應用

網絡協定分析-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 首部。如果一方沒有資料要發送,也使用沒有任何資料的首部來确認收到的資料。在處理逾時的許多情況中,也會發送不帶任何資料的封包段。

網絡協定分析-TCP協定分析

請求端(通常稱為客戶)發送一個 SYN 封包段( SYN 為 1 )指明客戶打算連接配接的伺服器的端口,以及初始順序号( ISN )。

伺服器發回包含伺服器的初始順序号( ISN )的 SYN 封包段( SYN 為 1 )作為應答。同時,将确認号設定為客戶的 ISN 加 1以對客戶的 SYN 封包段進行确認( ACK 也為 1 )。

客戶必須将确認号設定為伺服器的 ISN 加 1 以對伺服器的 SYN 封包段進行确認( ACK 為 1 ),該封包通知目的主機雙方已完成連接配接建立。

三次握手協定可以完成兩個重要功能:它確定連接配接雙方做好傳輸準備,并使雙方統一了初始順序号。初始順序号是在握手期間傳輸順序号并獲得确認:當一端為建立連接配接而發送它的 SYN 時,它為連接配接選擇一個初始順序号;每個封包段都包括了順序号字段和确認号字段,這使得兩台機器僅僅使用三個握手封包就能協商好各自的資料流的順序号。一般來說, ISN 随時間而變化,是以每個連接配接都将具有不同的 ISN 。

網絡協定分析-TCP協定分析

三 . 執行個體化

導入scapy子產品找到tcp協定

網絡協定分析-TCP協定分析

執行個體化tcp協定及複合ethernet,ip協定

網絡協定分析-TCP協定分析

指派

sport			#源端口
dport			#目的端口
           
網絡協定分析-TCP協定分析

使用srp1()函數将packet發送

網絡協定分析-TCP協定分析

分析

網絡協定分析-TCP協定分析
網絡協定分析-TCP協定分析
網絡協定分析-TCP協定分析

最後是RST,未連接配接成功。

網絡協定分析-TCP協定分析

手動連接配接

網絡協定分析-TCP協定分析
網絡協定分析-TCP協定分析

ps: TCP與UDP的比較:

TCP提供可靠的,面向連接配接的傳輸服務

UDP提供不可靠的,無連接配接的傳輸服務

TCP是面向流的協定;UDP是基于資料報的協定

TCP适用于一次傳送大批量的資料

UDP适用于多次少量資料的傳輸,實時性要求高的業務

TCP與UDP的比較

使用TCP傳輸的應用程式和協定包括:

FTP

Telnet

SMTP

使用UDP傳輸的應用程式和協定包括:

RIP

TFTP

SNMP

繼續閱讀