每个 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. 苹果iOS锁屏制作

    下面我们开始. 一.锁屏界面 可以观察到,iphone的锁屏界面在时间和解锁部分有着透明强高光风格的背景,高光部分有非常明显的界限,边缘部分1像素的高光也是非常醒目的,整体感觉整个表面非常光滑,如同玻 ...

  2. 学习LINQ,发现一个好的工具。LINQPad!!

    今日学习LINQ,发现一个好的工具.LINQPad!! 此工具的好处在于,不需要在程序内执行,直接只用工具测试.然后代码通过即可,速度快,简洁方便. 可以生成其LINQ查询对应的lambda和SQL语 ...

  3. SQLite本地事务处理

    private void toolStripButton1_Click(object sender, EventArgs e) { //判断新增的年度是否已经存在 if (HasYear()) { M ...

  4. Squid 日志详解

    原文地址: http://www.php-oa.com/2008/01/17/squid-log-access-store.html access.log 日志 在squid中access访问日志最为 ...

  5. Invoke-Express 执行多个批处理命令的函数

    function Mult_ping ($ips) { # $cmdline = "PIng" foreach ($ip in $ips) { $cmdline = "p ...

  6. windows 下实现函数打桩:拦截API方式

    windows 下实现函数打桩:拦截API方式            近期由于工作须要,開始研究函数打桩的方法. 由于不想对project做过多的改动,于是放弃了使用Google gmock的想法. ...

  7. 瑞丽的SQL-基于窗体的排名计算

    在SQL Server中,窗体被定义为用户指定的一组行. 之所以要提出窗体这个概念,由于这种基于窗体或分区的又一次计算在实际工作应用范围比較广泛.比如.假设我们要对每一个班级中的学生按成绩进行排序,在 ...

  8. Demo Swig

    演示使用swig工具创建c语言的java接口,生成.so库和java接口文件. 在此之前先要安装swig,安装方法:sudo apt-get install swig 1.使用eclipse创建工程. ...

  9. 从cin读入一组词并把它们存入一个vector对象,然后设法把所有词都改写为大写字母。

    #include<iostream> #include<vector> #include<string> using namespace std; int main ...

  10. Anaconda packages list

    # packages in environment at D:\Applications\Anaconda3:#alabaster 0.7.6 py35_0 anaconda 2.4.0 np110p ...