數據包解析

數據包理解

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

七層協議詳解

物理層:是參考模型的最低層。該層是網絡通信的數據傳輸介質,由連接不同結點的電纜與設備共同構成。主要跟功能是:利用傳輸介質爲數據鏈路層提供物理連接,負責處理數據傳輸並監控數據出錯率,以便數據流的透明傳輸。
數據鏈路層:四參考模型的第二層。主要功能是:在物理層提供的服務基礎上,在通信的實體間建立數據鏈路連接,傳輸以“幀”爲單位的數據包,並採用差錯控制與流量控制方法,使有差錯的物理線路變成無差錯的數據鏈路。
網絡層:是參考模型的第三層。主要功能是:爲數據在節點之間傳輸創建邏輯鏈路,通過路由選擇算法爲分組通過通信子網選擇最適當的路徑,以及實現擁塞控制、網絡互連等功能。
傳輸層:是參考模型的第四層。主要功能是:向用戶提供可靠地端到端服務,處理數據包錯誤、數據包次序,以及其他一些關鍵傳輸問題。傳輸層向高層屏蔽了下層數據通信的細節。因此,它是計算機通信體系結構中關鍵的一層。
會話層:是參考模型的第五層。主要功能是:負責維擴兩個結點之間的傳輸連接,以便確保點到點傳輸不中斷,以及管理數據交換等功能。
表示層:是參考模型的第六層。主要功能是:用於處理在兩個通信系統中交換信息的表示方法,主要包括數據格式變換、數據加密與解密、數據壓縮與恢復等功能。
應用層:是參考模型的最高層。主要功能是:爲應用軟件提供了很多服務,比如文件服務器、數據庫服務、電子郵件與其他網絡軟件服務。

OSI七層協議中每一層的特徵

第一層:物理層
機械性能:接口的形狀,尺寸的大小,引腳的數目和排列方式等;
電氣性能:接口規定信號的電壓、電流、阻抗、波形、速率好平衡特性等;
工程規範:接口引腳的意義、特性、標準。
工作方式:確定數據位流的傳輸方式,如:半雙工、全雙工等。
物理層協議:美國電子工業協會(EIA)的RS232/RS422/RS423等;
國際電報電話諮詢委員會(CCITT)的X.25/X.21等;
物理層的數據單位是位(BIT),典型設備時集線器HUB。
這主要是和硬件有關,與軟件關係不大。
第二層:鏈路層
鏈路層屏蔽傳輸介質的物理特徵,使數據可靠傳送。
內容包括介質訪問控制、連接控制、順序控制、流量控制、差錯控制和仲裁協議等。
鏈路層協議有:協議有面向字符的通訊協議(PPP)和麪向位的通訊協議(HDLC)。
仲裁協議:CSMA/CD(Carrier Sense Multiple Access with Collision Detection)、Token Bus、Token Ring
鏈路層數據單位是幀,實現對MAC地址的訪問,典型設備是交換機SWITCH。
第三層:網絡層
網絡層管理連接方式和路由選擇。
連接方式:虛電路和數據報服務。
虛電路是面向連接的,數據通訊一次路由,通過會話建立的一條通路。數據報是非連接的,每個數據報都有路由能力。網絡層的數據單位是包,使用的是IP地址,典型設備時路由器Router。
這一層可以進行流量控制,但流量控制更多的是使用第二層或第四層。
第四層:傳輸層
提供端到端的服務,可以實現流量控制、負載均衡。
傳輸層信息包括端口、控制字和校驗和。
傳輸層協議主要是TCP和UDP。
傳輸層位於OSI的第四層,這層使用的設備時主機本身。
第五層:會話層
會話層主要內容時通過 繪畫進行身份驗證、繪畫管理和確定通訊方式。一旦建立連接,會話層的任務就是管理會話。
第六層:表示層
表示層主要是解釋通訊數據的意義,如代碼轉換、格式變換等,使不同的終端可以表示。
還包括加密與解密、壓縮與解壓等。
第七層:應用層
應用層應該是直接面向用戶的程序或服務,包括系統程序和用戶程序,比如www、FTP、DNS、POP3和SMTP等都是應用層服務。
數據再發送時是數據從應用層至物理層的一個大包的過程,接收時是數據從物理層至應用層的一個解包過程。
從功能角度可以分爲三組:1/2層解決網絡通信問題,3/4層解決傳輸問題,5/6/7層處理對應用進程的訪問。
從控制角度可分爲二組:1/2/3層是通信子網,4/5/6/7是主機控制層。

數據包解析

在這裏插入圖片描述

如何改變文本的樣式

如圖,一個刻度表示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.用戶數據。
強調文本 強調文本

TCP數據包結構:

在這裏插入圖片描述

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.用戶數據……

能夠看出,每一個IP包至少要20字節的頭部長度,這些與下載內容無關,加上眼下多數傳輸,包含http協議(就是IE直接下載),都是基於

TCP協議的,所以IP包裹還要從用戶數據中扣除20字節的TCP包頭,這裏已經是40字節,加上其它程序的連接,狀態確認等等包裹,因

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

另外網絡環境(包含穩定因素和傳輸節點的轉發率)也是影響下載速度的重要原因……

python鏈接:https://www.cnblogs.com/baihualin/p/10730513.html
轉自:https://baijiahao.baidu.com/s?id=1623342279899809678&wfr=spider&for=pc
轉自:https://blog.csdn.net/qq_36607836/article/details/88627956

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