首頁 運維 安全 IP資料封包的分片和組裝原理是什麼

IP資料封包的分片和組裝原理是什麼

May 24, 2023 am 11:12 AM
ip


當一個主機傳送資料到另一個主機時,這些資料需要透過多個路由層轉送。 IP在路由層的轉送過程較為複雜,如何處理目的主機所傳送的資料封包呢?

   首先我們需要了解資料封包的格式:

IP資料封包的分片和組裝原理是什麼

IP的轉送與控制都是由IP資料封包的頭部決定

4位首長度的數值是以 4位元組為單位的,最小值為 5,也就是說首長度最小是 4x5=20位元組 ,

#也就是不帶任何選項的 IP首部 ,4位能表表示的最大值是 15,也就是說首長度最大是 60位元組

8位元TOS字段有 3個位元用來指定IP資料封包的優先權(目前已經廢棄不用 ),還有4個位元表示可選

包括服務類型的最小延遲、最大吞吐量、最大可靠性和最小成本,以及總位元始終為0。

16位元總長度是整個資料封包 (包括IP首部和 IP層payload)的位元組數。

每傳一個 IP資料封包 ,16 位元的識別加1,可用來分片和重新組裝資料封包。

3位元標誌和13位元片偏移用於分片 。

TTL(Time to live) 是這樣用的 :來源主機為封包設定一個生存時間 ,例如 64,每過一個路由器

就把該值減 1,如果減到 0就表示路由已經太長了仍然找不到目的主機的網路 ,就丟棄該包 ,因此

這個生存時間的單位不是秒 ,而是跳 (hop) 。

協定欄位指示上層協定是 TCP、 UDP、 ICMP或 IGMP。

接著是 校驗和, 只校驗IP首部 ,資料的校驗由更高層協定負責。

IPv4的IP位址長度為 32位元。

    在IP資料封包中總長度是16位元的字段,一次資料封包的最大長度為2^16-1,雖然盡可能長的資料封包能夠提高傳輸效率,但是很少有超過1500字節的;所以這裡只要超過1500字節,就認為此數據報該分片了。 IP資料封包被分片以後,各分片分別組成一個具有IP首部的分組,並各自獨立的路由,分別抵達目的主機後,目的主機的IP層會在傳送給傳輸層之前將收到的所有分片重新組裝成一個數據報。

一.IP分片

1.IP分片原理:

    分片與重新組裝的過程對於傳輸層是透明的,原因是IP資料封包進行分片以後,只有它到達下一站時才可以進行重新組裝,且它是由目的端的IP層來完成的,分片之後的數據報根據需要可以再次分片;

     IP分片和完整的報文差不多擁有相同的IP頭,ID域對美英分片都是一致的,這樣才能在進行組裝的時候識別出來同一個IP頭報文分片。在IP頭裡面,16位元識別號碼唯一記錄了一個IP報的ID,具有同一個ID的IP分片將會重新進行組裝;而13位片偏移則記錄了某IP片相對於整個包的位置;這兩個表中間的3位標誌則標示該分片後面是否還有新的分片。接收者可透過這三個領域中提供的資訊對IP資料進行重組,而這三個領域是構成IP分片的全部資訊。

(1)標誌欄位的功能

   0   DF  MF

標誌欄位共三位,最高位元為0,且必須複製到所有分組中

不分片(Do not Fragment ,DF)值必須複製。 DF=1表示 接受主機不能對分組進行分片。如果無法對分組進行分片,但其長度超過了MTU,那麼這個分組只能被丟棄,同時需要使用ICMP錯誤訊息通知來源主機。 DF=0,表示可以分片

分片(MF)表示分片是不是最後一個分片,MF=1表示接受分片不是最後一個分片,MF=0表示接受分片時是最後一個分片

故意發送部分IP分片而不是全部,則會導致目標主機總是等待分片消耗並佔用系統資源。

2.MTU(最大傳輸單元)原理

    當兩台遠端CP互聯的時候,他們的資料要穿過很多的路由器和各種各樣的網路媒介才能到達對端

,網路中不同媒介的MTU各不相同,就好比一長段的水管,由不同粗細的水管組成(MTU不同)通過這段水管最大水量就要由中間最細的水管決定。

    對於網路層的上層協定而言(這裡以TCP/IP協定簇為例)他們對水管的粗細不在意因為他們認為 這是網路的事情。 IP協定在網路層會偵測每個從上層協定傳送下來的資料包的大小,根據本機的MTU大小來判斷是否需要對其進行分片處理。分片的最大缺點是會降低傳輸效能,需要將原本可以一次完成的任務分成多次處理。所以在網路的更高一層(傳輸層的實作)往往會對此加以注意,因為有些高層因為某些原因可能就要求不能對分組進行分片,索引會在IP資料報的包頭加上一個標籤:DF這樣IP封包在一大段網路傳輸的時候,如果遇到MTU小於封包的情況,轉送設備會根據情況丟掉這個封包。然後回傳一個錯誤訊息給發送者,這往往會造成通訊上的問題,不過幸運的是大部分網路連結MTU都是1500或大於1500

    對於UDP而言,這個協定本身是無連接的協議,對資料包的到達順序是否正確並不關心,所以一般UDP對分片沒有多大要求

    對於TCP就不一樣了,這個協議是面向連接的協議,對於TCP而言它非常在意資料包的到達順序

以及在傳輸過程中是否有錯誤發生,所以有些TCP應用程式對分片有要求---不能分片

3.MSS(最大封包長度)原理

    MSS就是TCP封包每次能夠傳輸的最大資料分段,為了達到最佳的傳輸效能TCP協定在建立連線的時候通常要協商雙方MSS的值,這個值TCP協定在實現的時候用MTU取代(要減去IP封包的包頭大小20bites和TCP資料段的包頭20BITES)所以MSS大小往往為1460,雙方會根據提供的MSS最小值來決定這次連接的MSS最大值

二.IP分片步驟

    一個未分片的資料封包的分片資訊欄位全為0,即多個分片標誌位元為0,且偏移量為0,分片一個資料報需要經過一下步驟

(1)檢查DF標誌位,查看是否允許分片,如果設定了該位,則資料報將被丟棄,並將ICMP錯誤傳回給來源端

(2)基於MTU值,把資料欄位分成兩個或對個部分,除了最後的資料部分外,所有新建的資料選項長度必須為8位元組的倍數

(3)每個資料被放入一個IP資料報,這些資料報的包頭稍微改變了原先的封包頭

(4)除了最後的資料報分片外,所有的分片都設定了多個分片標誌位元

(5)每個分片中的片偏移量欄位設為這個資料部分在原來資料封包中所佔的位置,這個位置相對於原來未分片資料報中的開頭處。
(6)如果在原來的資料報中包含了選項,則選項類型位元組的高位元組決定了這個資訊是被複製到所有分片資料報,還是只複製到第一個資料報。
(7) 設定新資料封包的封包頭欄位及總長度欄位。
(8)重新計算封包頭部校驗和欄位。

   此時這些分片資料封包如一個完整的IP資料封包一樣被轉發,IP獨立的處理每個資料報分片,資料報分片能夠通過不同的路由,到達目的,如果他們通過了那些規定了較小的MTU路由,也能夠進一步對他們進行分片

    在目的主機上,資料被重新組合成原來的資料報,發送主機設定的標示欄位與資料報中的袁IP位址和目的IP位址一起使用,分片過程不改變這個欄位

三.重組

為了重建這些資料封包的分片,接收主機會在第一個分片到達時分配一個儲存緩衝區。這個主機還將啟動一個計時器。當資料報的後續分片到達時,資料被複製到緩衝區記憶體中片偏移量指定的位置,當所有分片都到達時,完整的未分片的原始資料報就被恢復了。

如果計時器逾時且分片保持未經認可狀態,則資料將無法保留。這個計時器的初始值為IP資料封包的生存期值,它依賴實現的,一些實作允許對他進行設定。

重組步驟

在接受方,一個由發送方發出的原始資料IP報,將所有的分片重新組合,才能夠提交到上一層協議,每一個將被重組的IP資料封包都用一個ipq結構來表示

為了能夠有效提高組裝分片,用來保存分片的結構必須做到以下幾點

(1)快速定位某一個資料報的一組分組

(2)在屬於某一個資料報的一組分片中快速插入新的分片

(3)有效的判斷一個資料報的所有分片是否已經被全部接收

(4)具有重組超時機制,如果在重組完成之前超時溢出,則刪除該資料報的所有內容

以上是IP資料封包的分片和組裝原理是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
4 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

網站怎麼透過nginx設定黑/白名單IP限制及國家城市IP存取限制 網站怎麼透過nginx設定黑/白名單IP限制及國家城市IP存取限制 Jun 01, 2023 pm 05:27 PM

一、黑/白名單IP限制存取配置nginx配置黑白名單有好幾種方式,這裡只介紹常用的兩種方法。 1.第一種方法:allow、denydeny和allow指令屬於ngx_http_access_module,nginx預設載入此模組,所以可直接使用。這種方式,最簡單,最直接。設定類似防火牆iptable,使用方法:直接設定檔中新增:#白名單設置,allow後面為可存取IPlocation/{allow123.13.123.12;allow23.53.32.1/100;denyall;}#黑名單設置,

ip與mac綁定什麼意思 ip與mac綁定什麼意思 Mar 09, 2023 pm 04:44 PM

ip與mac綁定是指將特定的IP位址與特定的MAC位址關聯起來,使得只有使用該MAC位址的設備才能夠使用該IP位址進行網路通訊。 ip與mac綁定可以防止被綁定的主機的IP位址不被假冒,前提條件:1、MAC位址是唯一的,且不可假冒;只能綁定與路由器直接相連的網路上的主機(也就是主機的網關在路由器上)。

微信怎麼查看ip位址 微信怎麼查看ip位址 May 31, 2023 am 09:16 AM

微信查看ip位址的方法:1、登入電腦版微信,右鍵點選螢幕下方的工作欄,點選「工作管理員」;2、彈出工作管理員時,點選左下角的「詳細資料」;3、工作管理器進入“性能”選項,點擊“打開資源監視器”;4、選擇“網絡”,勾選微信進程“Wechat.exe”;5、點擊下面的“TCP連接”即可監視微信網絡IP相關情況,發送訊息得到回覆就會顯示他人的IP位址。

nginx如何設定目錄白名單和ip白名單 nginx如何設定目錄白名單和ip白名單 May 18, 2023 pm 03:52 PM

1.設定目錄白名單:對指定請求路徑不設定限制,如對請求路徑為api目錄下的請求不做限制,則可寫為server{location/app{proxy_passhttp://192.168.1.111:8095/app ;limit_connconn20;limit_rate500k;limit_reqzone=fooburst=5nodelay;}location/app/api{proxy_passhttp://192.168.1.111:8095/app/api}}#因比率

基於nginx反向代理如何取得使用者真實Ip位址 基於nginx反向代理如何取得使用者真實Ip位址 May 13, 2023 pm 05:07 PM

引言nginx做反向代理時,預設的設定後端取得到的Ip位址都來自於nginx,用request.getRemoteAddr();取得到的是nginx的ip位址,而不是使用者的真實ip.1.修改Nginx設定:server{listen80;server_namejenkins.local.com;location/{proxy_set_headerHost$host;proxy_set_headerX-Real-IP$remote_addr;proxy_passhttp://192.168.10.

本機ip位址查詢 本機ip位址查詢 Jan 05, 2024 pm 01:42 PM

本機ip位址查詢的方法有:1、 Windows系統下,開啟「開始功能表」並蒐索“cmd”開啟命令提示符,輸入“ipconfig”,然後按下回車鍵,尋找名為“IPv4 位址”的一行,其旁邊的數字就是本機的IP位址;2、macOS系統下,點擊螢幕左上角的蘋果圖標,選擇“系統偏好設定”,在“網路”選項中找到目前連接的網絡,點擊“進階”按鈕,在「TCP/IP」標籤中尋找本機的IP等等。

wifi顯示無ip分配怎麼辦 wifi顯示無ip分配怎麼辦 Aug 30, 2023 am 11:58 AM

wifi顯示無ip分配的解決方案:1、重新啟動設備和路由器,關閉設備上的Wi-Fi連接,關閉設備,關閉路由器,等待幾分鐘,然後重新打開路由器鏈接wifi;2、檢查路由器設置,重啟DHCP,確保DHCP功能已啟用;3、重置網路設置,將刪除所有已儲存的WiFi網路和密碼,在執行此操作之前,請確保已備份;4、更新路由器韌體,登入路由器管理介面,查找韌體更新選項,並按照提示進行操作。

NGINX怎麼統計網站的PV、UV、獨立IP NGINX怎麼統計網站的PV、UV、獨立IP May 19, 2023 am 09:13 AM

概念:uv(uniquevisitor):獨立訪客,將每台獨立上網電腦(以cookie為依據)視為一位訪客,一天之內(00:00-24:00),造訪您網站的訪客數量。一天之內相同cookie的訪問只被計算1次pv(pageview):訪問量,即頁面瀏覽量或點擊量,用戶每次對網站的訪問均被記錄1次。用戶對同一頁面的多次訪問,訪問量值累計統計獨立ip:00:00-24:00內相同ip地址只被計算一次,做網站優化的朋友最關心這個先聲明下環境,此次運行的nginx版本1.7,後端tomcat運行的是動

See all articles