IPv4首部一般是20字节长。在以太网帧中,IPv4包首部紧跟着以太网帧首部,同时以太网帧首部中的协议类型值设置为080016。 IPv4提供不同,大部分是很少用的选项,使得IPv4包首部最长可扩展到60字节(总是4个字节4个字节的扩展)

0

4

8

12

16

19

24

31

版本

首部长度

服务类型

长度

认证

标志

段偏移量

TTL

协议

校验和

源IP地址

目的IP地址

选项 ...

  IP包头字段说明

  版本:4位,指定IP协议的版本号。

  包头长度(IHL):4位,IP协议包头的长度,指明IPv4协议包头长度的字节数包含多少个32位。由于IPv4的包头可能包含可变数量的可选项,所以这个字段可以用来确定IPv4数据报中数据部分的偏移位置。IPv4包头的最小长度是20个字节,因此IHL这个字段的最小值用十进制表示就是5 (5x4 = 20字节)。就是说,它表示的是包头的总字节数是4字节的倍数。

  服务类型:定义IP协议包的处理方法,它包含如下子字段

  过程字段:3位,设置了数据包的重要性,取值越大数据越重要,取值范围为:0(正常)~ 7(网络控制)

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

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

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

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

  未使用:1位

  长度:IP包的总长

  认证:

  标志:是一个3位的控制字段,包含:

  保留位:1位

  不分段位:1位,取值:0(允许数据报分段)、1(数据报不能分段)

  更多段位:1位,取值:0(数据包后面没有包,该包为最后的包)、1(数据包后面有更多的包)

  段偏移量:当数据分组时,它和更多段位(MF, More fragments)进行连接,帮助目的主机将分段的包组合。

  TTL:表示数据包在网络上生存多久,每通过一个路由器该值减一,为0时将被路由器丢弃。

  协议:8位,这个字段定义了IP数据报的数据部分使用的协议类型。常用的协议及其十进制数值包括ICMP(1)、TCP(6)、UDP(17)。

  校验和:16位,是IPv4数据报包头的校验和。

  源IP地址:

  目的IP地址:

  IP协议是在网络层的协议.它主要完成数据包的发送作用. 下面这个表是IP4的数据包格式,IP封包格式(IPv4包首部长度为20字节)

  |0......4........8..............16....................................32

  -------------------------------------------------------------------------

  |版本4.|首部长度|服务类型(优先级|数据包总长............................|

  -------------------------------------------------------------------------

  |标识...........................|RF|DF|MF|碎片偏移.....................|

  -------------------------------------------------------------------------

  |生存时间TTL....|协议(TCP/UDP)..|首部较验和............................|

  -------------------------------------------------------------------------

  |源IP地址..............................................................|

  -------------------------------------------------------------------------

  |目的IP地址............................................................|

  -------------------------------------------------------------------------

  |选项..................................................................|

  =========================================================================

  |数据..................................................................|

  -------------------------------------------------------------------------

  Version (4) Internet Header Length (4) Type of Service (8) Total Length (16)

  Identification (16) Flags (3) Fragment Offset (13)

  Time To Live (8) Protocol (8) Header checksum (16)

  Source Address (32)

  Destination Address (32)

  Options (Variable) Padding (0-24)

  Data

  ....

  IP包字段含义

  下面我们看一看IP的结构定义

  struct ip

  {

  #if __BYTE_ORDER == __LITTLE_ENDIAN

  unsigned int ip_hl:4;

  unsigned int ip_v:4;

  #endif

  #if __BYTE_ORDER == __BIG_ENDIAN

  unsigned int ip_v:4;

  unsigned int ip_hl:4;

  #endif

  u_int8_t ip_tos;

  u_short ip_len;

  u_short ip_id;

  u_short ip_off;

  #define IP_RF 0x8000

  #define IP_DF 0x4000

  #define IP_MF 0x2000

  #define IP_OFFMASK 0x1fff

  u_int8_t ip_ttl;

  u_int8_t ip_p;

  u_short ip_sum;

  struct in_addr ip_src, ip_dst;

  };

  ip_v IP协议的版本号,这里是4,现在IPV6已经出来了

  ip_hl IP包首部长度,这个值以4字节为单位.IP协议首部的固定长度为20个字节,如果IP包没有选项,那么这个值为5.

  ip_tos服务类型,说明提供的优先权.

  ip_len说明IP数据的长度.以字节为单位.

  ip_id标识这个IP数据包.

  ip_off碎片偏移,这和上面ID一起用来重组碎片的.

  ip_ttl生存时间.没经过一个路由的时候减一,直到为0时被抛弃.

  ip_p协议,表示创建这个IP数据包的高层协议.如TCP,UDP协议.

  ip_sum首部校验和,提供对首部数据的校验.

  ip_src,ip_dst发送者和接收者的IP地址

  关于IP协议的详细情况,请参考 RFC791



IP包头部格式解析的更多相关文章

  1. TCP、UDP、IP包头结构分析(转)

    1.TCP数据段格式 TCP是一种可靠的.面向连接的字节流服务.源主机在传送数据前需要先和目标主机建立连接.然后,在此连接上,被编号的数据段按序收发.同时,要求对每个数据段进行确认,保证了可靠性.如果 ...

  2. TS格式解析

    1.TS格式介绍 TS:全称为MPEG2-TS.TS即"Transport Stream"的缩写.它是分包发送的,每一个包长为188字节(还有192和204个字节的包).包的结构为 ...

  3. plist文件、NSUserDefault 对文件进行存储的类、json格式解析

    ========================== 文件操作 ========================== Δ一 .plist文件 .plist文件是一个属性字典数组的一个文件: .plis ...

  4. IP 协议首部格式与其配套使用的四个协议(ARP,RARP,ICMP,IGMP)

    目录 IP协议首部格式地址解析协议 ARP逆向地址解析协议 RARP网际控制报文协议 ICMP网际组管理协议IGMP IP 数据报首部 IP数据报首部格式: 最高位在左边,记为0 bit:最低位在右边 ...

  5. (网络层)IP 协议首部格式与其配套使用的四个协议(ARP,RARP,ICMP,IGMP)

    目录 IP协议首部格式地址解析协议 ARP逆向地址解析协议 RARP网际控制报文协议 ICMP网际组管理协议IGMP IP 数据报首部 IP数据报首部格式: 最高位在左边,记为0 bit:最低位在右边 ...

  6. 网络层 IP 协议首部格式与其配套使用的四个协议(ARP,RARP,ICMP,IGMP)

    目录 IP协议首部格式地址解析协议 ARP逆向地址解析协议 RARP网际控制报文协议 ICMP网际组管理协议IGMP IP 数据报首部 IP数据报首部格式: 最高位在左边,记为0 bit:最低位在右边 ...

  7. MySQL binlog格式解析

    MySQL binlog格式解析   binlog想必大家都不陌生,在主从复制或者某些情况下的数据恢复会用到.由于binlog是二进制数据,要查看一般都借助mysqlbinlog工具.这篇笔记分析了b ...

  8. IP数据包格式

    IP数据包格式 0 4 8 16 31 |4位版本 | 4位首部长度 | 8位服务类型 | 16位总长度(字节数)| |16位标识 | 3位标志 | 13位片偏移 | |8位生存时间| 8位协议 | ...

  9. IP包头分析

    • IP包头是IP协议(网络层,第三层)为数据包添加的头部.        ○ 格式:        ○ ○ 拆开看,每行是4+4+8+16=32bit=4Byte        ○ ip协议最短20 ...

随机推荐

  1. JavaWeb开发中的分层思想(一)

    JavaWeb开发分层思想(一) 一.认识DAO.Service.Controller层 DAO(Data Access Object) 1.直接看英文意思就是"数据访问对象",也 ...

  2. Linux 切换用户提示Permission denied

    在使用 su - hdfs 切换到 hdfs 用户时提示 su: Permission denied,但是密码确认是没错的. 找到文件 /etc/pam.d/su,注释掉 auth required ...

  3. PTA 求链表的倒数第m个元素

    6-7 求链表的倒数第m个元素 (20 分)   请设计时间和空间上都尽可能高效的算法,在不改变链表的前提下,求链式存储的线性表的倒数第m(>)个元素. 函数接口定义: ElementType ...

  4. 攻防世界 reverse tt3441810

    tt3441810 tinyctf-2014 附件给了一堆数据,将十六进制数据部分提取出来, flag应该隐藏在里面,(这算啥子re,) 保留可显示字符,然后去除填充字符(找规律 0.0) 处理脚本: ...

  5. DAOS 分布式异步对象存储|架构设计

    分布式异步对象存储 (DAOS) 是一个开源的对象存储系统,专为大规模分布式非易失性内存 (NVM, Non-Volatile Memory) 设计,利用了SCM(Storage-Class Memo ...

  6. 如何从 dump 文件中提取出 C# 源代码?

    一:背景 相信有很多朋友在遇到应用程序各种奇葩问题后,拿下来一个dump文件,辛辛苦苦分析了大半天,终于在某一个线程的调用栈上找到了一个可疑的方法,但 windbg 常常是以 汇编 的方式显示方法代码 ...

  7. Day02_15_方法重载

    方法重载 1.什么是方法重载? * 方法重载又被称为 OverLoad,是指在同一个类中,具有相同方法名的不同方法,各个方法虽然方法名相同,但是各自的形式参数不同. 2.什么时候考虑使用方法重载? * ...

  8. Day10_48_Map集合中的常用方法

    Map集合中的常用方法 * 常用方法 - 注意 Map集合中的key是无序不可重复的set集合,如果添加数据时,key值重复了,后面添加的重复数据也是可以添加成功的,但是会覆盖前面相同的数据. 1. ...

  9. 【全网首发】鸿蒙开源三方组件--跨平台自适应布局yoga组件

    目录: 1.介绍 2.如何使用 3.集成方式 4.附录1:FlexBox科普 5.附录2:相关资料 介绍 yoga是facebook打造的一个跨IOS.Android.Window平台在内的布局引擎, ...

  10. 抛弃vuex ,拥抱ts,手撸泛型Store<T>!

    前段时间学习了下vue3 和ts ,就尝试下做了个项目,结果发现vuex和ts几乎无法结合,越写越别扭,开始怀疑用ts就是自己给自己挖坑,然后加了几个vue相关的群,去抱怨了几句,得到大佬指点:你可以 ...