資料報解析

2021-10-04 19:41:09 字數 3088 閱讀 2061

從專業的角度來說,(網路協議)osi就是乙個開放的通訊系統互聯參考模型,也是乙個定義的很好的協議規範。osi模型有7層結構,每層都可以有幾個子層。osi的7層從下到上分別是7-應用層、6-表示層、5-會話層、4-傳輸層、3-網路層、2-資料鏈路層、1-物理層。

物理層:是參考模型的最低層。該層是網路通訊的資料傳輸介質,由連線不同結點的電纜與裝置共同構成。主要跟功能是:利用傳輸介質為資料鏈路層提供物理連線,負責處理資料傳輸並監控資料出錯率,以便資料流的透明傳輸。

資料鏈路層:四參考模型的第二層。主要功能是:在物理層提供的服務基礎上,在通訊的實體間建立資料鏈路連線,傳輸以「幀」為單位的資料報,並採用差錯控制與流量控制方法,使有差錯的物理線路變成無差錯的資料鏈路。

網路層:是參考模型的第三層。主要功能是:為資料在節點之間傳輸建立邏輯鏈路,通過路由選擇演算法為分組通過通訊子網選擇最適當的路徑,以及實現擁塞控制、網路互連等功能。

傳輸層:是參考模型的第四層。主要功能是:向使用者提供可靠地端到端服務,處理資料報錯誤、資料報次序,以及其他一些關鍵傳輸問題。傳輸層向高層遮蔽了下層資料通訊的細節。因此,它是計算機通訊體系結構中關鍵的一層。

會話層:是參考模型的第五層。主要功能是:負責維擴兩個結點之間的傳輸連線,以便確保點到點傳輸不中斷,以及管理資料交換等功能。

表示層:是參考模型的第六層。主要功能是:用於處理在兩個通訊系統中交換資訊的表示方法,主要包括資料格式變換、資料加密與解密、資料壓縮與恢復等功能。

應用層:是參考模型的最高層。主要功能是:為應用軟體提供了很多服務,比如檔案伺服器、資料庫服務、電子郵件與其他網路軟體服務。

如圖,乙個刻度表示1個二進位制位(位元)。

1-1.版本號4位,表示版本號號,眼下最廣泛的是4=b1000,即常說的ipv4;相信ipv6以後會廣泛應用,它能給世界上每乙個鈕扣都分配

乙個ip位址。
1-2.頭長4位,資料報頭部長度。它表示資料報頭部包含多少個32位長整型,也就是多少個4位元組的資料。無選項則為5(紅色部分)。

1-3.服務型別,包含8個二進位制位,每乙個位的意義例如以下:

過程字段:3位,設定了資料報的重要性,取值越大資料越重要,取值範圍為:0(正常)~ 7(網路控制)

延遲字段:1位,取值:0(正常)、1(期特低的延遲)

流量字段:1位,取值:0(正常)、1(期特高的流量)

可靠性字段:1位,取值:0(正常)、1(期特高的可靠性)

成本字段:1位,取值:0(正常)、1(期特最小成本)

保留字段:1位 ,未使用

1-4.包裹總長16位,當前資料報的總長度,單位是位元組。當然最大僅僅能是65535,及64kb。

2-1.重組標識16位,傳送主機賦予的標識,以便接收方進行分片重組。

2-2.標誌3位,他們各自的意義例如以下:

保留段位(2):1位,未使用

不分段位(1):1位,取值:0(同意資料報分段)、1(資料報不能分段)

很多其它段位(0):1位,取值:0(資料報後面沒有包,該包為最後的包)、1(資料報後面有很多其它的包)

2-3.段偏移量13位,與很多其它段位組合,幫助接收方組合分段的報文,以位元組為單位。

3-1.生存時間8位,常常ping命令看到的ttl(time to live)就是這個,每經過乙個路由器,該值就減一,到零丟棄。

3-2.協議**8位,表明使用該包裹的上層協議,如tcp=6,icmp=1,udp=17等。

3-3.頭檢驗和16位,是ipv4資料報頭部的校驗和。

4-1.源始位址,32位4位元組,我們常看到的ip是將每乙個位元組用點(.)分開,如此而已。

5-1.目的位址,32位,同上。

6-1.可選選項,主要是給一些特殊的情況使用,往往安全路由會當作攻擊而過濾掉,普聯(tp_link)的tl-er5110路由就能這麼做。

7-1.使用者資料。

強調文字

強調文字

1-1.源始port16位,範圍當然是0-65535啦。

1-2.目的port,同上。

2-1.資料序號32位,tcp為傳送的每乙個位元組都編乙個號碼,這裡儲存當前資料報資料第乙個位元組的序號。

3-1.確認序號32位,為了安全,tcp告訴接受者希望他下次接到資料報的第乙個位元組的序號。

4-1.偏移4位,類似ip,表明資料距包頭有多少個32位。

4-2.保留6位,未使用,應置零。

4-3.緊急位元urg—當urg=1時,表明緊急指標字段有效。它告訴系統此報文段中有緊急資料,應盡快傳送(相當於高優先順序的資料)。

4-3.確認位元ack—僅僅有當ack=1時確認號字段才有效。當ack=0時,確認號無效。參考tcp三次握手

4-4.復位位元rst(reset) —當rst=1時,表明tcp連線**現嚴重差錯(如因為主機崩潰或其它原因),必須釋放連線,然後再又一次

建立運輸連線。參考tcp三次握手
4-5.同步位元syn—同步位元syn置為1,就表示這是乙個連線請求或連線接受報文。參考tcp三次握手

4-6.終止位元fin(final)—用來釋放乙個連線。當fin=1時,表明此報文段的傳送端的資料已傳送完成,並要求釋放運輸連線。

4-7.窗體欄位16位,窗體字段用來控制對方傳送的資料量,單位為位元組。tcp連線的一端依據設定的快取空間大小確定自己的接收窗體

大小,然後通知對方以確定對方的傳送窗體的上限。
5-1.包校驗和16位,包含首部和資料這兩部分。在計算檢驗和時,要在tcp報文段的前面加上12位元組的偽首部。

5-2.緊急指標16位,緊急指標指出在本報文段中的緊急資料的最後乙個位元組的序號。

6-1.可選選項24位,類似ip,是可選選項。

6-2.填充8位,使選項湊足32位。

7-1.使用者資料……

tcp協議的,所以ip包裹還要從使用者資料中扣除20位元組的tcp包頭,這裡已經是40位元組,加上其它程式的連線,狀態確認等等包裹,因

而算出來要比理論值要小。

資料報格式 USB資料報解析

由域構成的包有四種型別,分別是令牌包 資料報 握手包和特殊包,前面三種是重要的包,不同包的域結構不同,介紹如下 1 令牌包 分為輸入包 輸出包 設定包和幀起始包 注意這裡的輸入包是用於設定輸入命令的,輸出包是用來設定輸出命令的,而不是放資料的 其中輸入包 輸出包和設定包的格式都是一樣的 sync p...

解析IP資料報

include stdafx.h include winsock2.h include ws2tcpip.h include iostream.h include stdio.h typedef struct ip header byte servicetype 服務型別 word totallen...

python 解析網路資料報

1 問題描述 網路資料報,我已經使用mitmproxy 抓取了,但是,資料報有些資料是gzip進行編碼的,那麼怎麼還原成原始報文呢?使用的語言是python。2 網上資料 使用的方法,網上有zlib和gzip。使用gzip.decompress這個函式可以直接解密,可惜我的版本不支援。然後網上說的g...