TCP協議分析(包結構) 轉

2022-05-09 09:48:14 字數 3219 閱讀 3153

tcp首部格式

tcp資料是被封裝在ip資料報中的,和udp類似,在ip資料報的資料部分。tcp資料報的格式如下: 

源埠號和目的埠號(定址)與udp中類似,用於尋找發端和收端應用程序。這兩個值加上ip首部中的源端ip位址和目的端ip位址唯一確定乙個,在網路程式設計中,一般乙個ip位址和乙個埠號組合稱為乙個套接字(socket)。 

序號(seq):用來標識從tcp發端向tcp收端傳送的資料字節流,它表示在這個報文段中的第乙個資料位元組。在tcp中tcp用序號對每個位元組進行計數(這個值與傳送的幀數沒有關係,而是與傳送的資料位元組數有關係,後面會有說明)。 

確認序號(seq+1):包含傳送確認的一端所期望收到的下乙個序號。因此,確認序號應當是上次已成功收到資料位元組序號加 1(不是單純的序號加1,還包括資料位元組數)。 

首部長度:用於記錄tcp資料報首部的長度,一般為20位元組,實際值為首部長度除以4。 

源埠號和目的埠號(定址)與udp中類似,用於尋找發端和收端應用程序。這兩個值加上ip首部中的源端ip位址和目的端ip位址唯一確定乙個,在網路程式設計中,一般乙個ip位址和乙個埠號組合稱為乙個套接字(socket)。 

序號(seq):用來標識從tcp發端向tcp收端傳送的資料字節流,它表示在這個報文段中的第乙個資料位元組。在tcp中tcp用序號對每個位元組進行計數(這個值與傳送的幀數沒有關係,而是與傳送的資料位元組數有關係,後面會有說明)。 

確認序號(seq+1):包含傳送確認的一端所期望收到的下乙個序號。因此,確認序號應當是上次已成功收到資料位元組序號加 1(不是單純的序號加1,還包括資料位元組數)。 

首部長度:用於記錄tcp資料報首部的長度,一般為20位元組,實際值為首部長度除以4。 

下面的是標誌位對應的功能:

urg: 緊急指標( urgent pointer)有效。 

ack: 確認序號有效。 

psh: 接收方應該盡快將這個報文段交給應用層。 

rst: 重建連線。 

syn: 同步序號用來發起乙個連線。 

fin: 發端完成傳送任務。 

視窗大小:用於流量控制。 

檢驗和:檢驗和覆蓋了整個的 tcp報文段: tcp首部和tcp資料,與udp相似需要計算偽首部。

(1)每個tcp段都包括源端和目的端的埠號,用於尋找傳送端和接收端的應用程序。這兩個值加上ip首部的源端ip位址和目的端ip位址唯一確定乙個tcp連線。

(2)序號用來標識從tcp傳送端向接收端傳送的資料字節流,它表示在這個報文段中的第乙個資料位元組。如果將位元組流看作在兩個應用程式間的單向流動,則tcp用序號對每個位元組進行計數(seq)。

(3)當建立乙個新連線時,syn標誌變1。序號字段包含由這個主機選擇的該連線的初始序號isn,該主機要傳送資料的第乙個位元組的序號為這個isn加1,因為syn標誌使用了乙個序號。

(4)既然每個被傳輸的位元組都被計數,確認序號包含傳送確認的一端所期望收到的下乙個序號。因此,確認序號應當時上次已成功收到資料位元組序號加1。只有ack標誌為1時確認序號欄位才有效。(ack)

(5)傳送ack無需任何代價,因為32位的確認序號欄位和ack標誌一樣,總是tcp首部的一部分。因此一旦乙個連線建立起來,這個字段總是被設定,ack標誌也總是被設定為1。

(6)tcp為應用層提供全雙工的服務。因此,連線的每一端必須保持每個方向上的傳輸資料序號。

(7)tcp可以表述為乙個沒有選擇確認或否認的滑動視窗協議。因此tcp首部中的確認序號表示傳送方已成功收到位元組,但還不包含確認序號所指的位元組。當前還無法對資料流中選定的部分進行確認。

(8)首部長度需要設定,因為任選欄位的長度是可變的。tcp首部最多60個位元組。

(9)6個標誌位中的多個可同時設定為1

◆urg-緊急指標有效

◆ ack-確認序號有效

◆ psh-接收方應盡快將這個報文段交給應用層

◆ rst-重建連線

◆ syn-同步序號用來發起乙個連線

◆ fin-傳送端完成傳送任務

(10)tcp的流量控制由連線的每一端通過宣告的視窗大小來提供。視窗大小為位元組數,起始於確認序號字段指明的值,這個值是接收端期望接收的位元組數。視窗大小是乙個16為的字段,因而視窗大小最大為65535位元組。

(11)檢驗和覆蓋整個tcp報文端:tcp首部和tcp資料。這是乙個強制性的字段,一定是由傳送端計算和儲存,並由接收端進行驗證。tcp檢驗和的計算和udp首部檢驗和的計算一樣,也使用偽首部。

(12)緊急指標是乙個正的偏移量,序號欄位中的值相加表示緊急資料最後乙個位元組的序號。tcp的緊急方式是傳送端向另一端傳送緊急資料的一種方式。

(13)最常見的可選字段是最長報文大小mms,每個連線方通常都在通訊的第乙個報文段中指明這個選項。它指明本端所能接收的最大長度的報文段。 

wireshark抓包分析tcp結構

利用wireshark抓取乙個tcp資料報,檢視其具體資料結構和實際的資料:

tcp是一種面向連線的、可靠的、基於位元組流的傳輸層通訊協議。 

面向連線: 面向連線意味著使用tcp的應用程式在傳輸資料前必須先建立連線,就如打**一樣,要先進行撥號,等待對方響應才能開始說話。 

可靠性:tcp協議通過下列方式來提高可靠性: 

·        1.應用資料被分割成tcp認為最適合傳送的資料塊。這和udp完全不同,應用程式產生的資料報長度將保持不變。由tcp傳遞給ip的資訊單位稱為報文段或段。(定長)

·        2.當tcp發出乙個段後,它啟動乙個定時器,等待目的端確認收到這個報文段。如果不能及時收到乙個確認,將重發這個報文段。(定時重發)

·        3.當tcp收到發自tcp連線另一端的資料,它將傳送乙個確認。這個確認不是立即傳送,通常將推遲幾分之一秒。(確認機制)

·        4.tcp將保持它首部和資料的檢驗和。這是乙個端到端的檢驗和,目的是檢測資料在傳輸過程中的任何變化。如果收到段的檢驗和有差錯,tcp將丟棄這個報文段和不確認收到此報文段(希望發端超時並重發)。(檢驗和較檢)

·        5.既然tcp報文段作為ip資料報來傳輸,而ip資料報的到達可能會失序,因此tcp報文段的到達也可能會失序。如果必要,tcp將對收到的資料進行重新排序,將收到的資料以正確的順序交給應用層。(必要時重新排序)

·        6.既然i p資料報會發生重複,tcp的接收端必須丟棄重複的資料。(去重)

·        7.tcp還能提供流量控制。tcp連線的每一方都有固定大小的緩衝空間。tcp的接收端只允許另一端傳送接收端緩衝區所能接納的資料。這將防止較快主機致使較慢主機的緩衝區溢位。(流量控制)

位元組流:兩個應用程式通過tcp連線交換8 bit位元組構成的位元組流。

介面協議之抓包分析 TCP 協議

本文節選自霍格沃茲測試學院內部教材 tcp 協議是在傳輸層中,一種面向連線的 可靠的 基於位元組流的傳輸層通訊協議。環境準備 對介面測試工具進行分類,可以如下幾類 抓包分析tcp協議 tcpdump tcpdump是一款將網路中傳送的資料報的 頭 完全截獲下來提供分析的工具。它支援針對網路層 協議 ...

轉 TCP握手協議

一 tcp握手協議 在tcp ip協議中,tcp協議提供可靠的連線服務,採用三次握手建立乙個連線。第一次握手 建立連線時,客戶端傳送syn包 syn j 到伺服器,並進入syn send狀態,等待伺服器確認 第二次握手 伺服器收到syn包,必須確認客戶的syn ack j 1 同時自己也傳送乙個sy...

TCP協議分析

tcp協議是傳輸層控制協議,是一種面向連線的 可靠的 基於位元組流的傳輸層通訊協議。tcp 為了保證不發生丟包,就給每個包乙個序號,同時序號也保證了傳送到接收端實體的包的按序接收。tcp用乙個校驗和函式來檢驗資料是否有錯誤 在傳送和接收時都要計算校驗和。三次握手抓包 客戶端傳送syn seq x 報...