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

一、报文格式和分片

因特网网络层协议的内部视图如下:
网际协议:数据报格式和分片以及IPv4编址
包括路由协议、IP协议和ICMP协议。
(1)路由协议的主要功能是路径选择,计算出用于在网络中转发分组的转发表。
(2)IP协议用于规定编址规则、数据报格式以及数据处理规则。
(3)ICMP协议主要复杂报告数据报中的差错和对某些网络层信息请求进行响应。

1、IP数据报格式

网络层的分组被称为数据报。
网际协议:数据报格式和分片以及IPv4编址
(1)版本号:这4比特规定了数据报的IP协议版本。通过查看版本号,路由器能够确定如何解释数据报的剩余部分。不同的IP版本使用不同的数据报格式。上图是IPv4版本的数据报格式。
(2)首部长度:4比特,IPv4数据报中的一些可变数量的选项包含在首部,首部长度用来确定IP数据报中数据部分实际从哪里开始。大多数IP数据报不包含此项。
(3)服务类型:8比特。区别不同类型的数据报如区别实时数据报与非实时数据报。服务类型比特包含在IPv4首部中。
(4)数据报长度:这是IP数据报的总长度即首部加上数据。为16比特。
(5)标识、标志、片偏移:这三个字段与所谓的IP分片有关。新版本的IP即IPv6不允许在路由器上对分组分片。
(6)寿命:用来确保数据报不会永远在网络中循环。每当数据报由一台路由器处理时,该字段的值减1。若寿命字段减为0,则该数据报必须丢弃。
(7)高层:也就是上层协议,指示了IP数据报的数据部分应交给哪个特定的运输层协议。值为6表示上层协议是TCP协议,值为17表示上层协议是UDP协议。该字段仅在一个IP数据报到达其最终目的地才会有用。
(8)首部校验和:该字段用于帮助路由器检测收到的IP数据报中的比特错误。校验和计算方法在之前的文章中提到过。
(9)源和目的IP地址。当生成一个数据报时,它在源IP字段中插入它的IP地址,在目的IP地址字段中插入其最终目的地的地址。
(10)选项:选项字段允许IP首部被扩展。
(11)数据:交付给目的地的运输层报文段。

2、IP数据报分片和重组

2.1、分片原因

因为目前的因特网中并非所有链路层协议都能承载相同长度的网络层分组。有的协议能承载大数据报,而有的协议只能承载小分组。例如以太网帧能够承载不超过1500字节的数据,而某些广域网链路的帧可承载不超过576字节的数据。在因特网中,允许数据报在从发送主机到接收主机的传送过程中经过不同的链路。因此当一个大的数据报转发到一条只能承载小数据报的链路时就需要进行分片。如下图所示:一个大的数据报在中间路由器被分为三个小的数据报,而这些小的数据报将在网络中继续转发,后续路由器将每个数据报作为一个独立的报文进行转发,直到到达接收方主机,接收方主机根据分片相关的标识符、标志位和片偏移等字段对这些报文进行重组。
网际协议:数据报格式和分片以及IPv4编址

2.2、分片方法

那么如何进行分片呢?分片方法需要保证在接收方能准确无误的重新组装。因此首先需要分析组装要考虑的因素。
(1)接收方怎么确定一个收到的数据报是一个大的报文的分片?
(2)如果是分片的话,接收方怎么知道大报文最后一个分片是哪个数据报呢?
(3)如何将收到的分片重新组装成初始的数据报?
为了解决上述问题,设计者将标识符、标志位、片偏移字段放在IP数据报的首部中。通过IP首部中的字段来解决。通过实例来学习具体分片方法。
网际协议:数据报格式和分片以及IPv4编址
如上图所示,示例如下:一个4000字节的数据报(包括了20字节的IP首部和3980字节的IP有效载荷)到达一台路由器,且必须被转发到一条MTU为1500字节的链路上。这就意味着初始数据报中的3980字节数据必须被分配为3个独立的片,其中的每个片也是一个IP数据报。
MTU:最大传送单元,一个链路层帧能承载的最大数据量。
第一个分片是1480个字节的数据加20字节的IP头部,第二个分片也是1480个字节的数据加20字节的IP头部。第三个分片是1020的数据加20字节的IP头部。因此三个分片的长度分别为1500字节、1500字节、1040字节。需要注意的是在后续的路由器转发中将作为独立的报文进行转发。直到三个分片都到达接收方主机,由接收方主机重新组装。
分片情况如下:
标识符通过ID号来表示原始数据报,ID号相同的分组都属于一个原始数据报,假设数据报的标识符为777,也就是图中的x是777。
通过标志位(fragflag)来表示数据报进行的分片,如果标志位为1,则表示后面还有数据。标志位为0表示这是最后一个分片,后面没有数据了。
偏移位为0表示插入的数据开始于字节0;偏移185表示插入的数据开始于字节1480(1858=1480);偏移370表示插入的数据开始于字节2960(3708=2960)。

二、IP地址即IPv4的编址规则

1、IP地址简单介绍

IP地址:分配给主机或路由器接口的32比特的标识符。
接口:主机/路由器与物理链路之间的边界。
因为路由器的任务是从链路上接收数据报并从某些其它链路转发出去,所以路由器必须拥有两条或更多链路与它连接,因此路由器通常有多个接口;因为每台主机与路由器都能发送和接收IP数据报,IP要求每台主机和路由器接口拥有自己的IP地址,因此一个IP地址技术上是与一个接口相关联的,而不是与包括该接口的主机或路由器相关联的。主机也可以有多个接口,例如笔记本通常会有无线网卡接口,也会有有线网卡的以太网接口。每个接口有一个IP地址。在因特网中设备通过IP地址进行寻址。
网际协议:数据报格式和分片以及IPv4编址
上图每台计算机都有一个IP地址,路由器有三个端口,每个端口都有一个IP地址。

2、IPv4编址

2.1、两种书写方法

首先IPv4地址有两种书写方法:
(1)32比特的二进制表示法:例如11011111 00000001 00000001 00000001这样直接写。
(2)点分十进制表示法:是将32比特按照每8比特划分为一个字节,每个字节用10进制数来表示,十进制数之间用”.“号分隔。例如:
网际协议:数据报格式和分片以及IPv4编址

2.2、IP地址类型

根据不同的取值范围,早期将IP地址分为五类。IP地址中前5位用于标识IP地址的类别,A类地址的第一位为”0“,B类地址的前两位为”10“,C类地址的前三位为”110“,D类地址的前四位为”1110“,E类地址的前五位为”11110“。其中,A类、B类与C类地址为基本的IP地址。
网际协议:数据报格式和分片以及IPv4编址
如上图所示,IP地址由两部分组成:
(1)网络号:指明主机所在的物理网络的编号。
(2)主机号:主机在物理网络中的编号。
每个IP地址有32比特。
一个A类地址其网络号最高的8比特,后24比特可以作为主机号。因此可以分配的主机数为2 24 ^{24} 24,但是一个家庭或者组织往往不需要这么多的地址空间,造成浪费。
而一个C类地址网络号为最高的24比特,主机号只有8比特用于分配主机地址,因此可分配的主机数为2 8 ^8 8即256台主机,可分配的数量较少,又不太够用。
因此,逐渐按类别进行地址分配被CIDR技术取代。

2.3、一些常用的特殊IP地址

(1)127.0.0.1-127.255.255.254
这是预留的一组IP地址,主要是用来识别主机本身的地址。也叫做”localhost“,一半用来测试使用的,做开发的人比较熟悉。
(2)10.x.x.x ;172.16.x.x-172.31.x.x ;198.168.x.x
这三个地址段主要是我们私有的内网地址。也就是我们平时企业或者家里局域网所使用的地址段,我们比较熟悉的应该就是192.168.x.x这个地址段了。
注意:内部私有地址是不能够进行全网寻址的。

2.4、子网

上面说过IP地址由网络号和主机号构成,网络号就是子网。
从IP地址的观点来看,子网是一组设备,这些设备接口的IP地址具有同样的网络部分。这些设备通过链路相连,当没有路由器接入时,在物理上能够相互到达。
网际协议:数据报格式和分片以及IPv4编址
上图有三个子网,分别为223.1.1子网、223.2.1子网和223.1.3子网。
从另一个观点来看子网:为了确定子网,分开主机和路由器的每个接口,从而产生了几个分离的网络岛,这写独立网络中的每一个叫做一个子网。如下图所示:
网际协议:数据报格式和分片以及IPv4编址

2.5、CIDR技术

这是一种新的IP地址表示方法,其中网络部分可以任意长度,不同于早期的分类IP地址,网络部分是固定长度。在CIDR中地址的写法为a.b.c.d/x,这里x是地址网络部分的比特数。
网际协议:数据报格式和分片以及IPv4编址
如上图所示,这里的/23表示前23位是网络部分,后面的9比特表示主机部分。
最高位23位是网络部分可以用/23来表示,也可以用子网掩码来表示,在子网掩码中,IP地址的网络部分用全1表示,主机部分用全0表示。
因此这里的/23等价于11111111 11111111 11111110 00000000,对应的点分十进制写法为255.255.254.0。

上一篇:网络损伤仪WANsim的报文分类器--IPv4分类规则介绍


下一篇:S2-016复现