网络层的分组为数据报,数据报为首部和数据两部分组成,如下图所示。

首部的长度是以4个字节为单位,长度可以是20-60字节,这跟首部的HLEN字段有关。

版本:

这个4位字段定义了IP协议的版本,目前主流的版本是4。

首部长度:

这个4位字段定义了数据报首部的长度,以4字节的字为单位

当首部没有选项时,首部长度位20字节;当这个字段值位最大值F时,首部长度最大为60字节

服务类型:

在最初这个字段有一部分用于定义数据报的优先级,剩下的一部分定义了服务类型。IETF已经改变了这个8位字段的解释,现在定义了一组区分服务

码点 未使用

在这种解释种,前6位构成了码点(codepoint),最后两位未使用。

X X X 0 0 0

当码点字段最右边为0时,对最左边的解释为优先级:

这个优先级定义了一些在出现一些问题时数据报的优先级,即当路由器需要丢弃一些数据时,优先级低的将会被首先丢弃。

X X X X X 0

因特网指派的服务

X X X X 1 1

本地指派的服务

X X X X 0 1

临时的或实验的服务

当码点字段最右边的3位不全为0时,这6位定义了54种服务,低延时,高吞吐量等等。

总长度:

这个16位字段定义了数据报总长度,其以字节为单位。故IPv4数据报总长度上限值位65536字节

注:为什么需要这个字段?在许多情况下,我们确实不需要这个字段值。但是有些情况下,封装在一个帧里的并不仅仅是数据报,还可能附加了一些填充。比如,以太网协议对帧的数据有最大值(1500字节)和最小值(46字节)的限制,当数据小于46字节时,数据将含有填充数据。

标识(identification):

这个16位字段标志了从源主机发出的一个数据报,这样就确定了数据报的唯一性。这样使得数据报被分片后,在到达终点时终点能根据标识号将同一个数据报的分片重新组装成一个数据报。

标志(flag):

  D M

第一位保留(未用),第二位为“不分片(do not fragment)”,第三位位“还有分片(more fragment)”。

D为1时,不能对数据进行分片;为0可以进行分片。

M为1时,标识还有分片;为0表示最后一个分片。

分片偏移:

这个13位字段表示的是分片在整个数据报中的相对位置。这是数据在原始数据报中的偏移量,以8字节位单位

注:分片本身还可能进行分片,这种情况下,分片偏移值永远是相对于原始数据报的。

生存时间:

这个8位字段用来控制数据报所经过的最大跳数(路由器),每经过一个路由器,这个字段数值都减1,减1后变位0时,路由器就丢弃这个数据报。

协议:

这个8位字段定义了使用IPv4服务的高层协议,如TCP,UDP,ICMP,IGMP,OSPF等的数据都将被封装到IP数据报中。这个字段指明数据报必须交付给哪个最终目的协议。

注:1表示ICMP,2表示IGMP,6表示TCP,17表示UDP,89表示OSPF

检验和:

检验IP数据报首部。

源地址:

定义了源点的IP地址,这个字段始终保持不变。

目的地址:

定义了终点的IP地址,这个字段始终保持不变。

IPv4数据报格式的更多相关文章

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

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

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

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

  3. IPv4与IPv6数据报格式详解

    摘要: 本文给出IPv4与IPv6数据报格式示意图,并整理了各个字段含义,最后对比IPv4与IPv6数据报格式的区别. 一.IPv4数据报 图1 IPv4数据报格式版本号(version) 不同的IP ...

  4. IPv4与IPv6数据报格式

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

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

    文章转自:https://blog.csdn.net/weixin_43914604/article/details/105297642 学习课程:<2019王道考研计算机网络> 学习目的 ...

  6. 以太网帧、TCP与UDP段以及IP数据报格式总结

    传输层及其以下的机制由内核提供,是操作系统的一部分,应⽤层由⽤户进程提供应⽤层数据通过协议栈发到⽹络上时,每层协议都要加上⼀个数据⾸部(header),称为封装.不同的协议层对数据包有不同的称谓,在传 ...

  7. IP数据报格式和IP地址路由

    一.IP数据报格式 IP数据报格式如下: 注:需要注意的是网络数据包以大端字节序传输,当然头部也得是大端字节序,也就是说: The most significant bit is numbered 0 ...

  8. 以太网帧格式、IP数据报格式、TCP段格式+UDP段格式 详解

    转载:http://www.cnblogs.com/lifan3a/articles/6649970.html 以太网帧格式.IP数据报格式.TCP段格式+UDP段格式 详解   1.ISO开放系统有 ...

  9. 把IP字符串转换为IPv4标准格式

    把IP字符串转换为IPv4标准格式,如一个IP为127.0.0.1转为127.000.000.001格式? 即是说“点”分隔的数据不够三位数字长度,转换为三位数字长度. Insus.NET有尝试写了一 ...

随机推荐

  1. ntpdate自动对准时间的脚本

    author:headsen  chen date: 2018-10-09  19:50:15 #!/bin/bash yum -y install ntpdate /usr/sbin/ntpdate ...

  2. EUI组件之CheckBox

    一.CheckBox常规使用 拖动一个checkBox到exml即可 点击效果 二.代码中监听事件 /** * 主页场景 * @author chenkai 2018/5/26 */ class Ho ...

  3. oracle的with as用法

    转自:https://www.cnblogs.com/linjiqin/archive/2013/06/24/3152667.html with as语法–针对一个别名with tmp as (sel ...

  4. Java项目工程化之项目构建工具Maven

    欢迎查看Java开发之上帝之眼系列教程,如果您正在为Java后端庞大的体系所困扰,如果您正在为各种繁出不穷的技术和各种框架所迷茫,那么本系列文章将带您窥探Java庞大的体系.本系列教程希望您能站在上帝 ...

  5. postgresql----UNION&&INTERSECT&&EXCEPT

    多个SELECT语句可以使用UNION,INTERSECT和EXCEPT进行集合处理,其中UNION用于求并集,INTERSECT用于求交集,EXCEPT用于求差集.用法如下 query1 UNION ...

  6. CodeForeces 25E (kmp)

    E. Test time limit per test2 seconds memory limit per test256 megabytes inputstandard input outputst ...

  7. Mercurial

    Contributing Changes http://nginx.org/en/docs/contributing_changes.html Mercurial is used to store s ...

  8. UA-* headers

    HTTP The Definitive Guide Request headers are headers that make sense only in a request message. The ...

  9. linux下的进程,子进程,线程

    1.相同点:(a)二者都具有ID,一组寄存器,状态,优先级以及所要遵循的调度策略.(b) 每个进程都有一个进程控制块,线程也拥有一个线程控制块.(c) 线程和子进程共享父进程中的资源:线程和子进程独立 ...

  10. Git学习-->GitLab如何修改时区?

    一.背景 今天有同事在GitLab上查看时间的时候,发现GitLab上显示的时间和提交的时间不一致. 本地时间现在为:2017-11-28 11:43 查看本地代码提交的时间为:2017-11-28 ...