在 TCP/IP 协议中,使用 IP 协议传输数据的包被称为 IP 数据包,每个数据包都包含 IP 协议规定的内容。IP 协议规定的这些内容被称为 IP 数据报文(IP Datagram)或者 IP 数据包
IP 数据报文由首部(称为报头)和数据两部分组成。首部的前一部分是固定长度,共 20 字节,是所有 IP 数据报必须具有的。在首部的固定部分的后面是一些可选字段,其长度是可变的。
每个 IP 数据报都以一个 IP 报头开始。源计算机构造这个 IP 报头,而目的计算机利用 IP 报头中封装的信息处理数据。IP 报头中包含大量的信息,如源 IP 地址、目的 IP 地址、数据报长度、IP 版本号等。每个信息都被称为一个字段。
IP 数据报头字段如图所示:

IP 报头的最小长度为 20 字节,上图中每个字段的含义如下:
1) 版本(version)

占 4 位,表示 IP 协议的版本。通信双方使用的 IP 协议版本必须一致。目前广泛使用的IP协议版本号为 4,即 IPv4。(同时兼容IPV6)

2) 首部长度(网际报头长度IHL)

占 4 位,可表示的最大十进制数值是 15。这个字段所表示数的单位是 32 位字长(1 个 32 位字长是 4 字节)。因此,当 IP 的首部长度为 1111 时(即十进制的 15),首部长度就达到 60 字节。当 IP 分组的首部长度不是 4 字节的整数倍时,必须利用最后的填充字段加以填充。
数据部分永远在 4 字节的整数倍开始,这样在实现 IP 协议时较为方便。首部长度限制为 60 字节的缺点是,长度有时可能不够用,之所以限制长度为 60 字节,是希望用户尽量减少开销。最常用的首部长度就是 20 字节(即首部长度为 0101),这时不使用任何选项。

3) 区分服务(tos)

也被称为服务类型,占 8 位,用来获得更好的服务。这个字段在旧标准中叫做服务类型,但实际上一直没有被使用过。1998 年 IETF 把这个字段改名为区分服务(Differentiated Services,DS)。只有在使用区分服务时,这个字段才起作用。

4) 总长度(totlen)

首部和数据之和,单位为字节。总长度字段为 16 位,因此数据报的最大长度为 2^16-1=65535 字节。

5) 标识(identification)

用来标识数据报,占 16 位。IP 协议在存储器中维持一个计数器。每产生一个数据报,计数器就加 1,并将此值赋给标识字段。当数据报的长度超过网络的 MTU,而必须分片时,这个标识字段的值就被复制到所有的数据报的标识字段中。具有相同的标识字段值的分片报文会被重组成原来的数据报。

6) 标志(flag)

占 3 位。第一位未使用,其值为 0。第二位称为 DF(不分片),表示是否允许分片。取值为 0 时,表示允许分片;取值为 1 时,表示不允许分片。第三位称为 MF(更多分片),表示是否还有分片正在传输,设置为 0 时,表示没有更多分片需要发送,或数据报没有分片。

7) 片偏移(offsetfrag)

占 13 位。当报文被分片后,该字段标记该分片在原报文中的相对位置。片偏移以 8 个字节为偏移单位。所以,除了最后一个分片,其他分片的偏移值都是 8 字节(64 位)的整数倍。

8) 生存时间(TTL)

表示数据报在网络中的寿命,占 8 位。该字段由发出数据报的源主机设置。其目的是防止无法交付的数据报无限制地在网络中传输,从而消耗网络资源。
路由器在转发数据报之前,先把 TTL 值减 1。若 TTL 值减少到 0,则丢弃这个数据报,不再转发。因此,TTL 指明数据报在网络中最多可经过多少个路由器。TTL 的最大数值为 255。若把 TTL 的初始值设为 1,则表示这个数据报只能在本局域网中传送。

9) 协议

表示该数据报文所携带的数据所使用的协议类型,占 8 位。该字段可以方便目的主机的 IP 层知道按照什么协议来处理数据部分。不同的协议有专门不同的协议号。
例如,TCP 的协议号为 6,UDP 的协议号为 17,ICMP 的协议号为 1。

10) 首部检验和(checksum)

用于校验数据报的首部,占 16 位。数据报每经过一个路由器,首部的字段都可能发生变化(如TTL),所以需要重新校验。而数据部分不发生变化,所以不用重新生成校验值。

11) 源地址

表示数据报的源 IP 地址,占 32 位。

12) 目的地址

表示数据报的目的 IP 地址,占 32 位。该字段用于校验发送是否正确。

13) 可选字段

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

14) 填充

由于可选字段中的长度不是固定的,使用若干个 0 填充该字段,可以保证整个报头的长度是 32 位的整数倍。

15) 数据部分

表示传输层的数据,如保存 TCP、UDP、ICMP 或 IGMP 的数据。数据部分的长度不固定。

TCP/IP协议中IP数据保报文格式详解相关推荐

  1. TCP/IP(五):UDP 报文格式详解

    1.概述 UDP 是User Datagram Protocol的简称, 中文名是用户数据报协议,是OSI(Open System Interconnection,开放式系统互联) 参考模型中一种无连 ...

  2. docker导入MySQL文件_Docker容器中Mysql数据的导入/导出详解

    前言 Mysql数据的导入导出我们都知道一个mysqldump命令就能够解决,但如果是运行在docker环境下的mysql呢? 解决办法其实还是用mysqldump命令,但是我们需要进入docker的 ...

  3. 程序员必知必会网络传输之TCP/IP协议族,共864页的详解文档让你原地起飞!

    我们现实网络无处不在,我们被庞大的虚拟网络包围,但我们却对它是怎样把我们的信息传递并实现通信的,我们并没有了解过,那么当我们在浏览器中出入一段地址,按下回车这背后都会发生什么? 比如说一般场景下,客户 ...

  4. icmp报文格式_TCP/IP(二):IP报文格式详解

    1. IP 报文格式 0bit是指位于最左边的最高位,31bit是指位于最右边的最低位,4个字节的32bit按照 bigendian(大端格式:低字节位于高地址)字节序传输:首先是0~7bit,其次 ...

  5. 数据帧、IP数据包、TCP、UDP报文格式详解----网络通信原理

    数据链路层.网络层.传输层----网络通信原理 物理层 数据链路层 eNSP抓包实验 网络层 ICMP协议概述 eNSP抓包实验 ARP协议概述 eNSP抓包实验 传输层 TCP协议 eNSP抓包 三 ...

  6. tcp欢动窗口机制_TCP协议中的窗口机制------滑动窗口详解

    一.窗口机制的分类 在TCP协议当中窗口机制分为两种: 1.固定的窗口大小 2.滑动窗口 二.固定窗口存在的问题 如下图所示: 我们假设这个固定窗口的大小为1,也就是每次只能发送一个数据,只有接收方对 ...

  7. tcp 协议中发送窗口的大小应该是_面试必备--TCP协议中的窗口机制滑动窗口详解...

    窗口机制分类 在TCP协议当中窗口机制分为两种: 1.固定的窗口大小 2.滑动窗口 固定窗口存在的问题 我们假设这个固定窗口的大小为1,也就是每次只能发送一个数据,只有接收方对这个数据进行了确认后才能 ...

  8. Bacnet协议报文格式详解(一)

    系统实现基于BACnet/IP(又称B/IP)网络进行通讯.BACnet虚拟链路层(BVLL)提供了BACnet网络层和某指定的通讯子系统的接口,本文指定了BACnet虚拟链路控制(BVLC)要求支持 ...

  9. tcp报文格式udp报文格式详解

    http://blog.csdn.net/a19881029/article/details/29557837 TCP(Transmission Control Protocol)传输控制协议是一种面 ...

  10. QUIC报文格式详解

    QUIC的packet分为Special Packets和Regular Packets两种,其中各自又有两种不同的packet 特殊报文: 版本协商报文(Version Negotiation Pa ...

最新文章

  1. Silverlight C# 游戏开发:Silverlight开发环境
  2. 两个pytorch版本Fnet
  3. 前台提示_住哲随手记:前台工作备忘录,记你想记的所有事
  4. 和linux关系_Linux内核Page Cache和Buffer Cache关系及演化历史
  5. R语言实战应用精讲50篇(七)-因子
  6. 数据中心空调系统应急方案
  7. 硬件安全系列 逻辑电路基础知识介绍(一)
  8. WOLF ISP CCIE 方向优惠最后10天,价格低至13800!!
  9. Git——git push 错误[error: src refspec master does not match any]解决方案
  10. myeclipse springboot 运行内存溢出_springboot学习心得 - aowumao
  11. 休眠事实:访存策略的重要性
  12. java推荐系统算法,阿里“推荐系统”背后的算法介绍
  13. main函数的argc和argv
  14. Hibernate获取'上一条'和'下一条'记录
  15. lidar与相机联合标定开源软件介绍
  16. 超详细带你用Java实现QQ的聊天功能
  17. smb协议讲解_smb协议心得
  18. WPS-Word : 页首的段落段前间距失效/不起作用/无效,段前一行无效没反应
  19. 学习记录:自平衡莱洛三角形v1(原理,代码)学习记录(一)
  20. js实现下载excel

热门文章

  1. 搭建Nexus3(maven私服搭建)
  2. 天空测试显卡软件,自由天空综合驱动包
  3. Java面试题及答案(2021年Java面试题大全带答案)
  4. 华为数通笔记-NQA
  5. python自定义函数拟合_python自定义函数拟合
  6. 聊聊ConcurrentHashMap
  7. asp毕业设计——基于asp+access的公司门户网站设计与实现(毕业论文+程序源码)——公司门户网站
  8. 查询高校名【Python习题】(保姆级图文+实现代码)
  9. 时间序列分析:非平稳序列的确定性分析
  10. 回溯法求解n个元素的集合的幂集