RFC791-IP-2.OVERVIEW

2. OVERVIEW

2.1 Relation to other protocols

下图说明了IP协议在协议层级中的位置

在这里插入图片描述

IP协议一方面向上与host-to-host协议进行通信另一方面向下与本地网络协议进行通信。这里的本地网络可能是指一栋建筑中的小型网络,也可能是一个向ARPENET之类的大型网络。

2.2 Model of Operation

下述方案展示了数据包从一个应用传输到另一个应用的操作模型

    我们假定传输过程需要一个中间网关。

    发送方准备好数据,然后调用它本地的internet模块去发送数据,并将目的地址以及其它的一些参数传入

    internet模块准备好数据首部,并将其与数据连接。internet模块会检查匹配该目的地址的本地网络地址(下一跳),在这个例子中是网关的地址。它将封装好的数据以及本地网络地址发送到本地网络接口上

    本地网络接口构造一个本地网络首部,并将其与传来的数据连接,然后将其经由本地网络发送。

    网络数据包外封装着本地网络的首部到达网关,本地网络接口会拆开首部,然后将数据包传输给internet模块,。internet模块从internet地址中检测出该数据需要继续传输到另一个网段中的另一个主机。internet模块找到一个发往目的主机的下一跳本地网络地址,然后调用本地网络接口发送数据。

    本地网络接口构建本地网络首部,并将其与数据包连接,然后将结果发送到目的主机。

    在这个目的主机中,本地网络模块会将本地网络首部与数据包拆开,然后将数据包交付给internet模块

    internet模块检测到该数据包是发送给本机的一个应用,它将数据作为系统调用的响应传输给目标应用程序,并将发送的源地址与其它一次参数作为此次系统调用的结果的一部分。

在这里插入图片描述

2.3 Function Description

IP协议的目的或者作用是将数据包通过连通的网段进行移动。该目的是通过从一个internet模块传输到另一个,直到到达目的地来实现的。internet模块存在于网络系统中的主机和网关中。数据包在独立的网段中基于对网络地址的解析完成路由选择。所以,在IP协议中一个非常重要的机制就是网络地址

在数据传输的过程中,一个数据包可能会通过某些网段,这些网段允许的最大包长度小于数据包的长度。为了克服这个困难,IP协议中提供了一个分片机制。

寻址

一个目的地包括名称、地址、路由,名称表示我们要寻找什么,地址表示它在哪,路由表示如何到达。IP协议主要关注地址。名称到地址的匹配是高层协议的任务。internet模块将网络地址和本地网络地址做映射。本地网络地址到路由的映射是底层协议的任务。

地址的固定长度是4个字节(32位)。一个地址以一个网络号开始,之后是本地地址(也叫the “rest” field,剩余字段)。网络地址有三种格式或类别:

  • a类:首位是0,接下来7位是网络号,剩下的24位是本地地址(主机号)
  • b类:最高位是10,接下来14位是网络号,之后的16位是本地地址
  • c类:最高位是110,接下来21位是网络号,之后的8位是本地地址

在网络地址到本地网络地址的映射时必须小心。一个物理主机必须能够充当多个目的主机来作为使用多个网络地址的扩展。一些主机可以拥有多个物理接口

所以,当一个主机有多个物理接口,而每个接口都对应几个网络地址时,就必须有相应的协议。

地址映射的例子可以在“Addresss Mappings”中找到

分片

当一个数据包在一个允许较大长度的网段中产生,但是要途径一些允许较小长度的网段时,数据包分片就十分有必要。

一个数据包可以被标识为“don’t fragment(不要分片)”,一个被这样标记的数据包在任何情况下都不能被分片。如果一个数据包不允许分片,但是又超过了网段允许的最大数据长度,那它会被丢弃。

在本地网络中的分片、传输和重组对internet模块是不可见的,这个过程称为内部网络分片(intranet fragmentation)

网络分片和重组过程需要能将数据包拆成一定数量的分片,并且之后可以被重组。接收方通过标识字段(identification)来确定不同数据包的分片不会混淆。偏移字段(offset)告诉接收方该分片在原数据包中的位置。片偏移字段和长度字段决定了分片在原数据包中的位置。more-fragments标志位可以指明该分片是否是最后一个分片。这些字段为分片重组提供了足够的信息。

identification字段将一个数据包的分片与其它的数据包分片区别开来。源发送方在构建数据包的时候必须将在字段设置为一个值,该值对于在网络系统中处于活跃状态的源-目的对(source-destination pair)和协议来说必须是唯一的。一个完整报文的最初的协议模块将最后一个分片的more-fragments位设置成0,片偏移也设置成0。

要将要给长的网络数据包拆分,一个IP模块需要构建两个新的网络数据包,并将原数据包的首部拷贝至新的数据包首部。长数据包的数据会被拆成两部分,以8字节位单位(第二个可能不是8字节的整数倍,但是第一个必须是)。将第一部分中的8字节的块的个数称为NFB(number of fragment blocks),数据的第一部分放在第一个新数据包中,长度字段设置成第一个数据包的长度。more-fragments设置成1。第二部分放入第二个新数据包中,长度字段设置成第二个数据包的长度,more-fragment字段设置成和原数据包一致,其片偏移字段设置成源数据包里的值加上NFB

这个过程可以概况成一个拆成n片的过程,不只是拆成2片

要重组一个网络数据包的分片,一个IP模块需要将所有以下四个字段值相同的网络数据包组合起来:identification、源source、目的destination、协议protocol。重组的过程就是通过片偏移字段,将各片的数据部分放到相应位置。第一个分片的片偏移是0,最后一个分片的more-fragments被重置为0。

2.4 Gateways

网关应用IP协议将数据包在网段间继续传输。网关还应用网关间协议(gateway to gateway protocol,GGP)来交换路由信息和其它一些网络控制信息

在网关中,需要应用高层协议,并且GGP功能需要添加到IP模块中
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hhfMhjsi-1579768669375)(../RFC/images/ip-3.png)]

发布了140 篇原创文章 · 获赞 2 · 访问量 1867

猜你喜欢

转载自blog.csdn.net/weixin_40602200/article/details/104076595
rfc
今日推荐