每个 IP 数据报都以一个 IP 报头开始。源计算机的 TCP/IP 软件构造这个 IP 报头,目的计算机的 TCP/IP 软件利用 IP 报头中封装的信息处理数据。IP 报头包含大量信息,包括源 IP 地址、目的 IP 地址、数据报长度、IP版本号和对路由器的特殊指令等。

Version

这个 4 位的字段表示所使用的 IP 版本。IPv4 相应的二进制是 0100。

IHL(Internet Header Length)

这个 4 位字段表示 IP 报头以 32 位字为单位的长度。IP 报头的最小长度是 5 个 32 比特字,相应的二进制表示 0101。

Type of Service

源 IP 能够指定特殊的路由信息。有些路由器会忽略这个地段的信息,但随着服务质量(QoS)技术的出现,这个字段得到了更多的重视。这个 8 位字段的主要用途是对等待通过路由器的数据报区分优先级,而目前大多数 IP 实现是把这个字段全填为 0。

Total Length

这个 16 位的字段表示 IP 数据报的长度,单位是字节,这个长度包含了 IP 报头和数据载荷。

Identification

这个 16 位的字段是一个依序变大的数值,分配给源 IP 发出的消息。当传递到 IP 层的消息太大而不能放到一个数据报里时,IP 会把消息拆分到多个数据报,并对这些数据报排序分配相同的标识号。接收端利用这些数值重组为原始消息。

Flags

这个字段表示分段可能性。第 1 位未使用,其值应该为 0。第 2 位称为 DF(Don’t Fragment),表示是否允许分段,0 表示允许,1 表示不允许。第 3 位是 MF(More Fragments),表示是否还有分段正在传输,设置为 0 时表示没有更多分段需要发送,或是数据报根本没有分段。

Fragment Offset

这个 13 位的字段是一个数值,被赋予每个连续的分段。目的设备的 IP 利用这个值以正确的次序重组分段。

Time To Live (TTL)

这个字段表示数据报在被抛弃之前能保留的时间(以秒为单位)或路由器跳数。每个路由器都会检查这个字段,并且至少把它减去 1,或数据报在路由器中延迟的秒数。当这个字段的值为 0 时,数据报会被抛弃。

Protocol

这个 8 位的字段表示接收数据载荷的协议,比如协议标识为 6(二进制位为 00000110)的数据报会被传递到 TCP 模块。下面是一些常见的协议标识值。

 协议名称   协议标识 
ICMP 1
TCP 6
UDP 17

Header Checksum

这个字段包含 16 位的校验和,只用于检验报头本身的有效性。数据报经过的每个路由器都会对这个值重新进行计算,因为 TTL 字段的值是在不断变化的。

Source IP Address

这个 32 位的字段包含了数据报的源 IP 地址。

Destination IP Address

这个 32 位的字段包含了数据报的目的 IP 地址。目的 IP 根据这个值检验发送的正确性。

IP Options

这个字段支持一些可选的报头设置,主要用于测试、调试和安全的目的。这些选项包括严格源路由(数据报必须经过指定的路由)、网际时间戳(经过美国路由器的时间戳记录)和安全限制。

Padding

IP 选项字段的长度不是固定的。填充字段可以提供一些额外的 0,从而保证整个报头的长度是 32 位的整倍数(报头长度必须是 32 位字的整数倍,因为 IHLL 字段以 32 位字为单位表示报头的长度)。

IP Data Payload

这个字段用于保存传递给 TCP 或 UDP(在传输层中)、ICMP 或 IGMP 的数据。数据块的长度不定,可以包含数千字节。

Networking - IPv4 报文格式的更多相关文章

  1. MAC帧格式、IPV4数据报格式、TCP报文格式、UDP数据报格式

    1.MAC帧格式 类型:2字节,指出数据域中携带的数据应交给哪些协议实体处理 校验码:校验数据段(采用32位CRC冗余校验方式进行校验) 2.IPV4数据报 版本:IP协议版本,这里为4 首部长度:占 ...

  2. DNS报文格式

    原文链接地址:http://blog.chinaunix.net/uid-24875436-id-3088461.html DNS报文格式(借个图贴过来):     说明一下:并不是所有DNS报文都有 ...

  3. 【转】TCP/IP报文格式

    1.IP报文格式 IP协议是TCP/IP协议族中最为核心的协议.它提供不可靠.无连接的服务,也即依赖其他层的协议进行差错控制.在局域网环境,IP协议往往被封装在以太网帧(见本章1.3节)中传送.而所有 ...

  4. tcp、udp、ip、icmp报文格式分析

    TCP .UDP .IP. ICMP协议报文格式分析 Tcp报文格式: Wireshark抓包如图: 源端口/目的端口(16bit): 在TCP报文中包涵了源端口/目的端口,源端口标识了发送进程,目的 ...

  5. 第11章 拾遗4:IPv6(1)_报文格式和地址类型

    1. IPv4和IPv6协议栈的比较 (1)IPv6取代IPv4,支持IPv6的动态路由协议都属于IPv6协议(如RIPng.OSPFv3). (2)Internet控制消息协议IPv6版(ICMPv ...

  6. 【转】IP报文格式详解

    下图为常见的IP报文格式表: 上面是IP的报文格式,接下来我们先说明各个字段的意义.然后,用Etheral软件转包分析IP的报文格式. 1.版本:ip报文中,版本占了4位,用来表示该协议采用的是那一个 ...

  7. TCP协议探究(一):报文格式与连接建立终止

    一 TCP:传输控制协议报文格式 1 TCP服务 提供面向连接.可靠的字节流服务 面向连接意味着两方通信,不支持多播和广播 可靠性的支持: 应用数据被分割成TCP认为最适合发送的数据块.由TCP传递给 ...

  8. IPv4数据报格式及其语义

    一.IP数据报的格式如下图所示 版本 首部长度 服务类型 数据报长度 16比特标识 标志 13比特片偏移 寿命 上层协议 首部检验和 32比特源IP地址 32比特目的IP地址 选项(如果有的话) 数据 ...

  9. DNS报文格式(RFC1035)

    一.域名和资源记录的定义 1.Name space definitions 2.资源记录定义(RR definitions)      2.1 格式          后面分析报文的时候详细解释.   ...

随机推荐

  1. mybatis杂记

    mybatis学习官网: 1.如果项目中使用maven管理,又引用 了mybatis框架, 下面是mybatis官网给出的 mybatis在maven中央仓库的坐标原文 详情见连接:https://c ...

  2. dao 获取表最大排序实现

    public Long getMaxOrder(Long parentId) { Query query = this.getSession().createSQLQuery( "selec ...

  3. System.getProperties()对应的key/value列表

    Key                     Meaning ——————-     —————————— "file.separator"        File separa ...

  4. IoC模式(Inversion of Control)

      1.依赖 依赖就是有联系,有地方使用到它就是有依赖它,一个系统不可能完全避免依赖.如果你的一个类或者模块在项目中没有用到它,恭喜你,可以从项目中剔除它或者排除它了,因为没有一个地方会依赖它.下面看 ...

  5. strutx.xml中配置文件的讲解

    Struts2框架的核心就是struts.xml文件了,该文件主要负责管理Struts的2的业务控制组件的核心内容.为了避免struts.xml的文件国 语庞大和臃肿,我们可以通过把一个struts. ...

  6. Keil C51基本数据类型

  7. delphi 08 HTML组件

    ///HTML组件///后面的字符串为这个控件的ID号///直线          Line         (WebBrowser1.Document as IHTMLDocument2).exec ...

  8. iOS 2D绘图详解(Quartz 2D)之路径(点,直线,虚线,曲线,圆弧,椭圆,矩形)

    前言:一个路径可以包含由一个或者多个shape以及子路径subpath,quartz提供了很多方便的shape可以直接调用.例如:point,line,Arc(圆弧),Curves(曲线),Ellip ...

  9. XtraBackup原理5

    http://www.cnblogs.com/gomysql/p/3650645.html xtrabackup是Percona公司CTO Vadim参与开发的一款基于InnoDB的在线热备工具,具有 ...

  10. SVN Cleanup failed的解决办法

    一开始没有更新执行了提交操作,提示有冲突 再执行更新操作的时候出现了“之前操作未完成,如果该操作被中断了执行cleanup命令”的提示