1. 程式人生 > >IP資料報首部checksum的計算

IP資料報首部checksum的計算

一、首先區別下面兩個概念:
(1)one's complement:正數=原碼,負數=反碼
(2)two's complement:就是通常所指的補碼

二、計算ip首部校驗和

1.傳送IP資料報計算checksum
(1)將校驗和欄位置為0;
(2)對首部中(一般為20B)每個16位字進行二進位制反碼求和;
(3)將(2)中得到的和再取反碼,即得checksum,寫入校驗和欄位中。


抓個IP資料包,取IP資料報報頭部分(20B),資料如下:

 45 00 00 30 80 4c 40 00 80 06 b5 2e d3 43 11 7b cb 51 15 3d

下面我來計算一下校驗和:
(1)將校驗和欄位置為0:
將b5 2e置為00 00,即變成:
45 00 00 30 80 4c 40 00 80 06 00 00 d3 43 11 7b cb 51 15 3d

(2)反碼求和
 4500+0030+804c+4000+8006+0000+d343+117b+cb51+153d=34ace
 將將進位(3)加到低16位(4ace)上:0003+4ace=4ad1

(3)取反碼
 將4ad1取反得:checksum=b52e
 
2.接收IP資料報檢驗IP校驗和
(1)對首部中每個16 bit進行二進位制反碼求和;
(2)將(1)中得到的和再取反碼 ,看是否為0.

接收到的IP資料報首部:
45 00 00 30 80 4c 40 00 80 06 b5 2e d3 43 11 7b cb 51 15 3d
 
下面來驗證下:
(1)反碼求和

4500+0030+804c+4000+8006+b52e+d343+117b+cb51+153d=3fffc
0003+fffc=ffff

(2)取反碼:~ffff=0 正確
    
 
三、求IP資料報首部校驗碼程式碼

已將IP首部校驗和0xb52e置為0x0000

 

 

相關推薦

IP資料checksum計算

一、首先區別下面兩個概念:(1)one's complement:正數=原碼,負數=反碼 (2)two's complement:就是通常所指的補碼 二、計算ip首部校驗和 1.傳送IP資料報計算checksum(1)將校驗和欄位置為0;(2)對首部中(一般為20B)每

IP數據checksum計算

ip協議 nbsp 字節順序 接收 否則 spa 校驗和 校驗 網絡 下面摘自《TCP/IP協議簇》的IP頭校驗和算法: 發送時: 1. 將校驗和字段置為0; 2. 將整個首部分為16bit的部分,求和; 3. 取反碼,填入到校驗和字段中; 接收時: 1. 直接

IP數據格式

ria 例如 tcp 包括 報文 校驗 應用 size 協議 IP協議提供不可靠、無連接的數據報傳送服務。 不可靠:盡力而為地傳輸,不保證IP數據報能成功到達目的地。無連接:每一個數據報之間相互獨立地進行路由選擇,可不按發送順序接收。 IP首部格式例如以下:

一篇文章講懂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

IP資料格式

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

IP資料及其路由表

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

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

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

TCP報文段、UDP資料IP資料區別

重要說明:既然TCP/IP現在如此成熟,那麼裡面的技術必然是經過各種各樣的大牛們千錘百煉而來,它的每個特有片語,十分肯定的說不是隨隨便便命名的,其背後隱含著設計者的考慮,例如,TCP傳輸給IP的資料單元為什麼叫TCP報文段(TCPsegment)(詳見《TCP/IP詳解卷

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

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

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

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

IP資料格式及如何判斷報文型別

1. IP資料報 TCP/IP協議定義了一個在因特網上傳輸的包,稱為IP資料包。IP資料報(IP Datagram) 由首部和資料兩部分組成,首部的前一部分是固定長度,共20位元組,是所有IP資料報必須具有的。在首部的固定部分的後面是一些可選欄位,其長度是可變

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

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

【 TCP/IP 】乙太網(RFC 894)幀格式、 ARP資料格式、 IP資料格式

乙太網(RFC 894)幀格式乙太網的幀格式如下所示:其中的源地址和目的地址是指網絡卡的硬體地址(也叫MAC地址),長度是48位,是在網絡卡出廠時固化的。用ifconfig命令看一下,“HWaddr 00:15:F2:14:9E:3F”部分就是硬體地址。協議欄位有三種值,分別

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

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

ip資料格式;ip資料分片

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

TCP/IP協議各層資料格式及含義

TCP/IP四層模型 原帖:http://www.cnblogs.com/BlueTzar/articles/811160.html TCP/IP參考模型      ISO制定的OSI參考模型的過於龐大、複雜招致了許多批評。與此對照,由技術人員自己開發的TCP/IP協議棧獲得了更為廣泛的應用

關於IP協議長度的計算

看到《TCP/IP詳解》IP協議中提到IP資料報首部長度是一個4位元欄位,因此首部最長是60個位元組。最小是20個位元組。那麼這個怎麼算的呢? 我的理解是這樣的 先看下IP資料報報格式及首部中各個欄位,如下圖: 這裡只看首部長度(報文長度)部分 首部長度代表的是IP資

002::每天五分鐘入門TCP/IP協議棧::IP協議之IP長度問題

IP 首部 首部長度 事出反常必有妖,邪乎到家必有鬼。 整個TCP/IP協議中,IP協議是最核心的協議。 IP協議是不可靠的、無連接的服務。 何為不可靠?不能保證IP數據報能夠成功到達目的地,傳輸的可靠×××給傳輸層或應用層去實現。 何為無連接?IP並不維護任何關於後續數據報的狀態信息。 進入正題

TCP/IP詳解--TCP選項中時間戳選項的作用

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

TCP/IP實現(十一) UDP使用者資料協議

一.已連線UDP       我們可以對UDP套接字呼叫connect進行連線,但與TCP連線的差別很大。UDP進行連線並不進行三次握手,核心只是核心只是檢查一些立即可知的錯誤(如一個顯然不可達的目的地),並將對端的IP地址和埠號記錄在PCB協議控制塊中,之後立即返