0%

学习TCP/IP(3):网际协议 Internet Protocol for IPv4 :无连接的数据报交付

学习TCP/IP(3):网际协议 Internet Protocol for IPv4 :无连接的数据报交付

引言

最基本的互联网服务包含一个分组交换系统,该交换系统不可靠尽最大努力交付无连接

  1. 由于分组可能丢失、重复、延迟、失序,因此认为该服务不可靠
  2. 由于互联网软件会努力尝试发送每一个分组,除非遇到资源耗尽或底层网络故障,否则互联网软件不会随意丢弃任何一个分组,因此该服务是尽最大努力交付的。
  3. 在数据报传送的过程中,每个分组都被独立处理,不同分组可能经由不同的路径抵达目的站,所以认为该服务是无连接的。

目的

我们将这种不可靠、尽最大努力交付、无连接的交付协议称为网际协议(Internet Protocol).根据协议版本的不同,又可分为IPv4和IPv6,分别代表版本4和版本6.

应当注意到,我们常说的"IP地址"其实是网际协议地址(Internet Protocol Address)的简称。

第一,IP定义了整个TCPIP互联网使用的数据传送基本单元,换句话说,它定义了数据在互联网上传输时的数据格式。 第二,IP软件完成了转发(Forwarding)的功能。 第三,IP包含了一组体现不可靠分组交付思路的规则。

IP是设计的最基本的部分,因此互联网有时又被称为基于IP的技术(IP-based technology)

IPv4数据报格式

数据报的一般格式如下表所示

数据报首部 数据报的数据区
Header Area Data Area

数据报的详细格式如下表所示

数据报格式-来源于Wikipedia

网络MTU及分片

网络的最大传送单元(Maximum Transfer Unit),即MTU,是网络硬件对分组交换技术每帧内可传送的数据大小的上界限制,以太网限制传输1500个字节每帧(但与SNAP首部一起使用时,IEEE802.3标准将其限制到1492字节)。

当需要传送的数据大小超过了当前网络的MTU时,会自动将数据报分片(Fragmentation),也即将数据报分解为若干更小的、小于当前MTU大小的数据报片(Fragment)以便通过当前网络,通过当前网络后,必须在赶在目的站处理前将其重装为完整的数据报。

IP协议并没有把数据报限制的很小。分片和重装操作自动进行,源站不必采取任何特殊的操作。因此,源站可以选择任意合适的数据报大小.

由于IP以8字节的倍数来表示数据的偏移量,因此数据报片的大小必须是8的倍数。 P.S. RFC 791规定了 Internet Minimum MTU: 576 Bytes

当一个数据报被分片时,除了最后一个数据报片外,其他的数据报片首部都会设置更多分片位(More Fragment Bit)以表示后面还有数据报片。

此外,一个数据报一旦被分片,那么数据报片就会作为独立的数据报传送,直到抵达必须对其进行重装的最终目的站。当目的站接收到第一个数据报片之后会启动一个重装计时器(Reassembly Timer),如果在计时器超时之前都还没有接收到该数据报对应的所有的数据报片时,目的站就会丢弃已经接收到的该数据报对应的数据报片。

数据报首部的标识标志片偏移量这三个字段控制着数据报的分片和重装。 标识用来唯一识别一个数据报,通常是随着数据报的不同而不同的一个值,同一个数据报产生的数据报分片所带有的标识一致。 在3个比特位的标志字段中,低2位控制着分片。中间的比特位称之为不分片(Do not fragment)位,如果这个位设置为1,则表明该数据报不可被分片,一个站点接收到该数据报只能选择接受或丢弃,不能对其分片。 最低位是更多分片位, 表示当前数据报片不是数据报的最后一个数据报片,后面还有数据报片。

片偏移量是该数据报分片相对于数据报起始位置的偏移除以8后的结果。

生存时间(TTL)

生存时间TTL(Time To Live),标志着允许该数据报在互联网系统中保留多久。 当一个数据报每经过一次路由器转发,TTL值就会减一,当TTL为0时,该数据报就会被丢弃。

还有什么没提到?

Internet 数据报选项