IPv4数据报格式及其语义

一、IP数据报的格式如下图所示

版本

首部长度

服务类型

数据报长度

16比特标识

标志

13比特片偏移

寿命

上层协议

首部检验和

32比特源IP地址

32比特目的IP地址

选项(如果有的话)

数据

IPv4数据报格式

二、各部分语义

1)版本(号):4bit,规定了数据包的IP协议版本;通过查看版本号,路由器能够确定如何解释IP数据报的剩余部分

2)首部长度:因为IPV4数据报可包含一些可变数量的选项,所以需要用这4bit来确定首部的长度,以确定IP数据报的数据部分实际从哪里开始。大多数IP数据报不包含选项,所以一般IP数据报具有20字节的首部

3)服务类型:8bit,服务类型包含在首部中以使不同类型的IP数据报能相互区分开来,例如,将实时数据报(如用于IP电话应用)与非实时流量(如FTP)区分开来也许是有用,提供特定等级的服务是一个由路由器管理员决定的策略问题

4)数据报长度:这是IP数据报的总长度(首部加上数据),以字节计,因为该字段长为16bit,所以IP数据报的理论最大长度为65535字节,然而数据报很少有超过1500字节的(因为IP数据还要靠数据链路层运输的,而链路层帧能承载的最大数据量为叫做最大运输单元(Maximum Transmission Unit,MTU))

5)标识、标志、片偏移:

  要理解这三个内容,要先理解一些其他知识

  (1)分片:把IP数据报中的数据分成两个或者更多个较小的IP数据报,用单独的链路层帧封装成较小的IP数据报,每个这些较小的数据报称为片

  (2)为什么要分片:因为每个IP数据报封装在链路层帧中从一台路由器传输到下一台路由器,而链路层帧能承载的最大数据量(最大运输单  元(Maximum Transmission Unit,MTU)是一定的,故链路层帧严格限制着IP数据报的长度;而且发送方和与目的路径上的每段链路可能使用不同的链路层协议,且每种协议可能具有不同的MTU,所以就更有可能需要分片了,以便能够使得数据报能够顺利的传递数据报

  (3)组装:目的主机从相同源收到一系列数据报时,需要确定哪些数据报是分片,如果是分片的话,还要进一步指导何时收到最后一个分片,如何将接收到的分片拼接起来以形成初始的数据报,故IPV4的设计者将标识、标志和片偏移字段放在IP数据报首部中,当生成一个数据报时,发送主机为该数据报设置源和目的地址的同时,再填上标识号

标识:16bit,源主机发送IP数据报的时候,通常为它发送的每个数据报的标识号加1,所以当某个路由器需要对某一个数据报分片时,形成的每个数据报(分片)具有初始数据报的源地址、目的地址、与标识号,这样目的主机就可以判别哪些分片是属于一个初始数据报的

标志:3bit,由于IP是一种不可靠服务,一个或者多个片可能永远到不了目的地,所以为了让目的主机绝对的相信它已经收到了初始数据报的最后一个片,最后一个片的标志比特被设置为0,而所有其他片的标志比特被设置为1

片偏移:13bit,标示数据相对于初始数据报的偏移值,并且偏移值应当被规定以8字节块为单位。所以除了最后一个片的所有初始有效载荷数据的数量应当是8字节的倍数

6)寿命:8bit,寿命(Time-To_Live ,TTL )字段是用来确保数据报不会永远(如由于长时间的路由选择环路)在网络中循环,每当数据报由一台路由器处理时,该字段的值减1。若TTL字段减为0,则该数据报必须丢弃。

7)协议:8 bit,该字段仅当一个IP数据报到达其最终目的地才会有用,改字段指示了IP数据报的数据部分应交给哪个特定的运输层协议,如:值为6应该交给TCP,而值为17表示数据部分要交给UDP ,其他可能值查看   https://www.iana.org/assignments/protocol-numbers/protocol-numbers.xhtml

8)首部检验和: 16bit,首部检验和用于帮助路由器检测收到的IP数据报中的比特错误。首部检验和是这样计算的:将首部中的每2个字节当做一个数,用反码运算对这些数求和;具体到发送方或接收方计算如下:

  在发送数据时,为了计算IP数据包的校验和。应该按如下步骤:
  (1)把IP数据包的校验和字段置为0;
  (2)把首部看成以16位为单位的数字组成,依次进行二进制反码求和;
  (3)把得到的结果存入校验和字段中。
     在接收数据时,计算数据包的校验和相对简单,按如下步骤:
  (1)把首部看成以16位为单位的数字组成,依次进行二进制反码求和,包括校验和字段;
  (2)检查计算出的校验和的结果是否等于零(反码应为16个0);
  (3)如果等于零,说明被整除,校验和正确。否则,校验和就是错误的,协议栈要抛弃这个数据包。

路由器要对每个收到的IP数据报计算其首部检验和,如果数据报首部中携带的检验和与计算得到的检验和不一致,则检验出是个差错,路由器一般会丢弃检测出错误的数据报

9)源和目的IP地址:32bit,当某源生成一个数据报时,在这两个字段中插入发送主机的IP地址和目的地的IP地址,通常源主机DNS查找来决定目的地址

10)选项:32bit,选项字段允许IP首部被扩展。首部选项意味着很少使用,因此决定对每个数据报首部不包括选项字段的信息,这样能够节约开销,但是因为有些数据报有选项,有些数据报没有选项,故导致一台路由器处理一个IP数据报所需的时间变化很大。

11)数据(有效荷载):32bit,这是数据报存在的首要理由!大多数情况下,IP数据报中的数据字段包含要交付给目的地运输层报文段(UDP或TCP)

注:注意到一个IP数据报有总长为20字节的首部(假设无选项)如果一个数据报承载一个TCP报文,则每个(无分片的)数据报共承载了总长40字节的首部(20字节的IP数据报加上20字节的TCP首部)以及应用文报文

三、关于标识、标志、片偏移的例子

  假设一个4000字节的数据报(20字节加上3980字节IP数据有效荷载)到达路由器,且必须被转发到一条MTU为1500字节链路上,该如何进行分片?

  答:初始数据报会被分为3个片,其中的每个片也是一个IP数据报,假定该数据报的发送时,主机给予的标识号为777,三个片的特点如下:

字节

ID

偏移

标志

第一片

1480

ID=777

Offset=0

Flag=1

第二片

1480

ID=777

Offset=185

Flag=1

第三片

1020(3980-1480*2)

ID=777

Offset=370

Flag=0

注:此时就需要4040个字节来运输初始数据报,所以分片是需要开销的

posted on 2019-06-24 22:20 初妍 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/alphabetical/p/11079902.html

IPv4数据报格式及其语义相关推荐

  1. IPv4数据报格式和Ipv6数据报格式(长文,详细解释每个字段)

    IPv4数据报介绍 IPv3数据报结构 版本号.这4比特规定了数据包的IP协议版本.通过查看版本号,路由器能够确定如何 解释IP数据报的剩余部分.因为不同版本的IP数据包的格式是不一样的. 首部长度. ...

  2. ip数据报格式;ip数据报分片

    点击打开链接 IPv4数据报格式: 上图表示的数据,最高位在左边,记为0位:最低位在右边,记为31位.在网络中传输数据时,先传输0~7位,其次是8~15位,然后传输16~23位,最后传输24~31位. ...

  3. 4.4 IPv6(诞生原因、数据报格式、与IPv4的不同、地址表现形式、基本地址类型、IPv6与IPv4的过渡策略)

    文章目录 0.思维导图 1.为什么要有IPV6? 2.IPV6的数据报格式 3.IPV6与IPV4的比较 4.IPV6的地址表示形式 5.IPV6基本地址类型 6.IPV6向IPV4过滤的策略 0.思 ...

  4. 网际协议:数据报格式和分片以及IPv4编址

    一.报文格式和分片 因特网网络层协议的内部视图如下: 包括路由协议.IP协议和ICMP协议. (1)路由协议的主要功能是路径选择,计算出用于在网络中转发分组的转发表. (2)IP协议用于规定编址规则. ...

  5. IPv4与IPv6数据报格式

    IPv4: IPv4数据报中的字段: 版本号:规定了数据报的IP协议版本,通过查看版本号,路由器能够确定如何解释IP数据报 的剩余部分,因为不同IP版本使用不同的数据报格式. 首部长度:IPv4数据报 ...

  6. 【计算机网络】湖科大微课堂笔记 p54-56 IPv4数据报的首部格式、网际控制报文协议ICMP、虚拟专用网VPN与网络地址转换NAT

    文章目录 IPv4数据报的首部格式 小结 一些例题 网际控制报文协议ICMP 小结 一些例题 虚拟专用网VPN与网络地址转换NAT 小结 IPv4数据报的首部格式 版本 首部长度.可选字段.填充字段 ...

  7. IPv4 和 IPv6 数据报格式详解

    IPv4 报文头格式及各字段功能 IPv4 报头格式 各字段功能: 1.版本号(Version):长度 4 bit .标识目前采用的 IP 协议的版本号.一般的值为 0100(IPv4),0110(I ...

  8. 【网络】IPV4数据报头部格式

    文章目录 前言 前言 系列文章: <Wireshark分析Netty建链过程( tcp三次握手.osi模型)> <IPV4数据报头部格式> <Wireshark分析RST ...

  9. 【计算机网络】网络层 : IP 数据报格式 ( IP 数据报首部格式 )

    文章目录 一.TCP / IP 协议栈 二.IP 数据报 格式 三.IP 数据报 首部格式 一.TCP / IP 协议栈 TCP / IP 协议栈 : ① 应用层 : HTTP , FTP , DNS ...

最新文章

  1. 配置动态路由协议OSPF
  2. Calibre-免费开源的“一站式”的电子书管理阅读格式转换软件
  3. Excel 不能直接打开文件的解决方法
  4. 如何去设计硬件与程序之间的通信协议
  5. 语音技术(百度语音)开发 - 第一篇
  6. PostgreSQL 空间处理函数
  7. Linux进阶之进程与线程
  8. Catboost:超越Lightgbm和XGBoost的又一个boost算法神器
  9. 学习Linux必备的硬件基础一网打尽
  10. IOS开发之——屏幕适配-AutoLayout代码实现(03)
  11. 部署和应用程序没有匹配的安全区域错误
  12. 2020cpu天梯图
  13. WIFI营销读书笔记之二:跑马圈地
  14. 微信小程序通过PHP控制云开发数据库的写入,读出,更新,删除
  15. k8s部署微服务项目
  16. 【超详细】Docker从入门到干活,就看这一篇文章
  17. EOS测试链加入流程(代码版本与主网同步)
  18. 公众号h5获取手机号权限_微信公众号h5获取用户openId的方法和步骤
  19. 对象存储OSS之ossbrowser的使用
  20. Mackey-Glass时滞混沌系统

热门文章

  1. IntelliJ IDEA 项目开发中各个目录的关系
  2. 使用 vim 开发-编译-查错-运行/测试-调试最佳实践流程
  3. vue对象拼接_vue 俩个数组对象合并成一个
  4. matlab中prprob,pr-sr-master
  5. 【安卓开发 】Android初级开发(网络操作)
  6. Python3实现红黑树[下篇]
  7. python 用while输出数字金字塔_用Python实现一个Dual Thrust数字货币量化交易策略
  8. java future用法_纯干货:Java学习过程中的21个知识点和技术点
  9. php如果字符串有1 3 5,Day3-php 字符串1
  10. php组成,php接口有几部分组成?