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. tips 【总结】

    需求 移入a标签把对应的详情显示出来并且根据位置判断,当前详情是否超出父级可视区范围,如果超出就定位的距离方向应该正好在父级可视区范围内 需求分析: 需要用到: offsetLeft   获取外边框到 ...

  2. Scrum完整项目实例

    一.背景 在谈 JIRA 之前,就不得不说说敏捷开发了.正式由于项目是基于敏捷开发进行的,因此才引入了 JIRA 这款适合于敏捷开发的项目管理工具.当然,这里不会大篇章的介绍敏捷开发,之前的文章有详细 ...

  3. SpringBoot-11 扩展功能

    SpringBoot-11 扩展功能 异步 同步就是一个任务的完成需要依赖另外一个任务时,只有等待被依赖的任务完成后,依赖的任务才能算完成,这是一种可靠的任务序列.要么成功都成功,失败都失败,两个任务 ...

  4. 学习笔记-vue+quill简单的后台demo

    功能比较单一 https://github.com/opceclee/vue-quill

  5. 快速排序(QuickSort)Java版

    快速排序 快速排序是对冒泡排序的一种改进. 它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排 ...

  6. SSH 教程 ——阮一峰

    SSH 教程 --阮一峰 文章出处 SSH 基本知识 SSH(Secure Shell 的缩写)是一种网络协议,用于加密两台计算机之间的通信,并且支持各种身份验证机制.实务中,它主要用于保证远程登录和 ...

  7. LeetCode剑指Offer刷题总结(一)

    LeetCode过程中值得反思的细节 以下题号均指LeetCode剑指offer题库中的题号 本文章将每周定期更新,当内容达到10题左右时将会开下一节. 二维数组越界问题04 public stati ...

  8. 20 行简单实现一个 unstated-next 🎅

    前言 unstated-next 基于 React 心智模型(hook+context)而设计的状态管理. 在 react hook 出现之前,有基于单一数据源,使用纯函数修改状态的 redux &a ...

  9. 如何查看显著性SNP在数据中的频率?

    我们做完GWAS的关联分析后需要查看显著性SNP在我们数据中的频率分布情况.这时候我们需要用到plink和我们做关系分析所用的二进制文件datas. 第一步,我们用R语言读取分析结果,即*.assoc ...

  10. kubernetes 的API 介绍

    在API conventions doc中描述了API的全部协议. 在API Reference文档中描述了API的端点.资源类型和示例. 在Controlling API Access doc中讨论 ...