1. 程式人生 > >IP資料報中如果不分片,分片標誌值是什麼?

IP資料報中如果不分片,分片標誌值是什麼?

過了好久才解決這個簡單的問題,罪過罪過……

答案:如果IP資料報不分片,分片標誌DF(Don’t Fragment)會被設定為1。分片標誌MF(More Fragment)設定為0。

下面是詳細解釋:

1:首先來一張IP資料報的報文頭部結構。
這裡寫圖片描述

2:需要注意第二行資料,有這麼三個欄位

  • 序列號:開始傳送資料時由傳送方生成。標識傳送方傳送的每一個數據報,如果傳送的資料報未發生分片,則此值依次加1,如果發生了分片,分片後的各個資料報使用同一個序列號
  • 分片標誌:三個bit位。第一位保留,未使用。第二位是DF(Don’t Fragment),如果為1,表示未發生分片。第三位是MF(More Fragment),如果為1
    ,表示發生了分片,並且除了分片出的最後一個報文中此標誌為0,其餘報文中此標誌均為1
  • 偏移量:分片相對於原始IP資料報開始處的偏移。

這就基本回答我提出的問題了,下面再扯扯為什麼要分片,會有什麼影響。

以tcp/ip四層協議為例,應用層->傳輸層->網路層->資料鏈路層,我們說的IP分片現象發生在網路層,什麼時候會發生呢?當資料包的大小大於MTU(Maximum Transmission Unit)最大傳輸單元(MTU也就是在資料鏈路層“幀”的資料部分大小。)舉個例子如下所示:

1:假設從傳輸層下來的資料大小為1648個位元組(包含tcp資料報報頭和資料部分)
2:我們在網路層繼續新增20位元組的IP資料報(假設IP資料報沒有使用擴充套件選項)
3:目前大小為1648+20=1668 > 1500(乙太網協議MTU預設大小為1500),因此會發生IP分片。
4:先不考慮IP資料報的大小,考慮原始資料大小1648位元組,應該這樣分片 1480 + 168,然後再將IP資料報頭分別加上去,資料報變成了這樣:1500 和 188
5:這兩個資料報中:
第一個大小為1500,序列號:1234(假設值),DF:0,MF:1
第二個大小為188,序列號:1234,DF:0,MF:0

繼續向下就到了資料鏈路層,看看資料鏈路層的結構。

這裡寫圖片描述

資料部分就是IP資料報,大小從46~1500,1500現在不難理解,那最小為什麼又是46位元組呢?

不要亂猜什麼TCP資料報頭部最少20位元組,IP資料報頭部最少20位元組,那你加到一起也才40位元組。真正的原因是因為資料鏈路層傳送出去的包大小最少是64位元組!!
64 - 6(目的MAC地址)- 6(源MAC地址)- 2(型別)- 4 (CRC)= 46

那為什麼資料鏈路層發出去的包大小最小要是64位元組呢?

相關推薦

IP資料如果分片分片標誌是什麼?

過了好久才解決這個簡單的問題,罪過罪過…… 答案:如果IP資料報不分片,分片標誌DF(Don’t Fragment)會被設定為1。分片標誌MF(More Fragment)設定為0。 下面是詳細解釋: 1:首先來一張IP資料報的報文頭部結構。 2:需

IP資料在網路為什麼要分片和重組

一、什麼是IP分片?IP協議在傳輸資料包時會將資料報文分成若干片進行傳輸,並在目標系統中進行重組。這以過程就成為分片。二、為什麼要進行IP分片如果IP資料報加上資料幀頭部後大於MTU,資料報文就會分成若干片進行傳輸。那麼什麼是MTU呢?每一種物理網路都會規定鏈路層資料幀的最大

結構如果包含AnsiString是就能簡單的復制?

手表 爆炸 復制 南方 故事 天空 難受 中間 兩個 今年春遲,春節已過去很久天氣依然寒冷。對於生於南方的我來說, 10 攝氏度 以下的氣溫足以讓我很難受。 周末,天空透過窗隙投進來一束灰白的光,讓我讀取到今天又是陰冷的一天。伸手去摸床頭櫃上的手表,時間已是中午。記得昨晚是

一篇文章講懂IP資料分片、組裝以及與TCP/UDP的聯絡

http://www.mamicode.com/info-detail-1465195.html https://blog.csdn.net/leex_brave/article/details/51971053 https://blog.csdn.net/buptzwp/article

Glide在listview使用時getview圖片顯示但也沒

在4.3.1版本中 implementation 'com.github.bumptech.glide:glide:4.3.1' annotationProcessor 'com.github.bumptech.glide:compiler:4.3.1' 在getview中都跟以前寫法一樣,

C程式設計實現strcat函式最完善程式碼如果請大神留言

#define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> #include <assert.h> #include <string.h> char *My_strcat(c

計算機網路IP資料包的3個標誌位以及IP資料分片和重組過程

1.3個標誌位是哪3位? 目前只有兩位有意義 <1>標誌位中的最低位記為MF(More Fragment)。MF=1即表示後面"還有分片"的資料報。MF=0表示這已是若干資料報片中的最後一個。 <2>標誌欄位中間的以為記為DF(Don't Fragm

乙太網幀、IP資料、TCP報文的格式詳解TCP的三次握手和四次揮手過程

乙太網幀、IP資料報、TCP報文等各級報文在更底層的報文或(幀)中的位置: 乙太網幀格式: 上面的源地址和目的地址是指網絡卡的硬體地址(MAC地址),長度均為6B。 網絡卡晶片(例如DM9000A)收到的資料就是如上所示的一長串資料;其中包括乙太網幀頭、IP報報

下面的函式統計子字串substr在字串str出現的次數如果substr在str出現則返回0

c++ #include<iostream> #include<string> using namespace std; int str_count(string substr, string str) { int times

ip資料格式;ip資料分片

IPv4資料報格式:上圖表示的資料,最高位在左邊,記為0位;最低位在右邊,記為31位。在網路中傳輸資料時,先傳輸0~7位,其次是8~15位,然後傳輸16~23位,最後傳輸24~31位。由於TCP/IP協議頭部中所有的二進位制數在網路中傳輸時都要求以這種順序進行,因此把它稱為網

linuxmycat的配置分片以及主從復制

chan 命令 star ice limit 第一步 execute ado master 1.1 安裝環境 1、jdk:要求jdk必須是1.7及以上版本 2、Mysql:推薦mysql是5.5以上版本 1.2 安裝步驟 Mycat有windows、linux多種版

報名 | 大資料應用日交流論壇共探資料應用與政策制度差異

正值中日和平友好條約簽訂40週年,清華資料科學研究院特於11月15日與清華大學·野村綜研中國研究中心聯合舉辦大資料應用中日交流論壇。為加強中日雙方對資料科學學科的交流,促進科研合作,互相學習,共同進步,本場論壇邀請中日雙方資料科學領域的專家、學者及企業代表共聚一堂,交流中日資料使

IP資料格式

IP協議提供不可靠無連線的資料報傳輸服務,IP層提供的服務是通過IP層對資料報的封裝與拆封來實現的。IP資料報的格式分為報頭區和資料區兩大部分,其中報頭區是為了正確傳輸高層資料而加的各種控制資訊,資料區包括高層協議需要傳輸的資料。 IP資料報的格式如下: 注意,上圖表示的資料,最高位在

IP資料及其路由表

IP資料報格式 16位標識 :      IP軟體在儲存器中維持一個計數器,每產生一個數據報,計數器就加1,並將此值賦給標識欄位,但此標識並不是序號,因為IP是無連線服務,資料報不

HTML圖片存在顯示預設圖片

一個圖片連結<img src="" /> 想用js 判斷url是否有效如果404 就載入預設的圖片路徑 <img src="xxx" onerror="this.src=預設圖地址"/> 圖片標籤img的 onerror事件 <img sr

list.stream.filter 過濾的物件如果有列舉過濾後列舉變數就變成null了

List chargeToCalcs1= chargeToCalcs.stream().filter(ChargeToCalc -> CostNameType.trustservicecharge.getCode().equals(ChargeToCalc

乙太網幀格式、IP資料格式、TCP段格式+UDP段格式 詳解

1、ISO開放系統有以下幾層: 7 應用層 6 表示層 5 會話層 4 傳輸層 3 網路層 2 資料鏈路層 1 物理層 2、TCP/IP 網路協議棧分為應用層(Application)、傳輸層(Transport)、網

livereload-實時自動重新整理頁面(只要檢測的資料檔案有修改頁面就會自動重新整理)(適用pc端、移動端)

開發專案時需要不斷的重新整理瀏覽器才能看到效果,這個是個很麻煩的事情,總是得手動去重新整理。如果可以邊改專案邊重新整理就好了。 livereload就是這個你想要的工具。 安裝livere

Tomcat 伺服器啟動很慢資料庫連線又參雜了其他專案的錯誤

       這幾天吃不好睡不好就是因為部署專案,啟動Tomcat報了連線不上資料庫(連線超時),我把ssh的幾個配置檔案重新看了好幾遍,我就納悶了,這到底是怎麼回事呀?我把錯誤資訊拿到網上查,一一看解決方案,幾乎都試了一遍還是報錯,心碎了!於是乎找群裡大神們問問,都建議叫我檢查程式碼,相關的配置檔案,可我之