网络层协议


本文整理自 《TCP-IP详解》

1. IP网地位

  1. 地位:
    T C P、U D P、I C M P及I G M P数据都以I P数据报格式传输。IP网协议是TCP/IP协议族的核心

  2. 特点:
    I P提供不可靠 无连接的数据报传送。
          不可靠( u n r e l i a b l e)的意思是它不能保证I P数据报能成功地到达目的地。I P仅提供最好的传输服务。如果发生某种错误时,如某个路由器暂时用完了缓冲区, I P有一个简单的错误处理算法:丢弃该数据报,然后发送I C M P消息报给信源端。任何要求的可靠性必须由上层来提供(如T C P)。
          无连接( c o n n e c t i o n l e s s)这个术语的意思是I P并不维护任何关于后续数据报的状态信息。
    每个数据报的处理是相互独立的。这也说明, I P数据报可以不按发送顺序接收。如果一信源
    向相同的信宿发送两个连续的数据报(先是A,然后是B),每个数据报都是独立地进行路由
    选择,可能选择不同的路线,因此B可能在A到达之前先到达

2. IP协议格式

1.格式
最高位在左边,记为0 bit;最低位在右边,记为31 bit。这种传输次序称作big endian字节序。
在这里插入图片描述2. 字段

  • 4位版本:
          目前的协议版本号是4,因此I P有时也称作I P v 4

  • 4位首部长度:
          IP首部占32 bit字的数目,包括任何选项。由于它是一个4比特字段,因此首部最长为6 0个字节

  • 8位服务类型:
          服务类型(TO S)字段包括一个3 bit的优先权子字段(现在已被忽略),4 bit的TO S子字段和1 bit未用位但必须置0
          4 bit的TO S分别代表:最小时延、最大吞吐量、最高可靠性和最小费用。4 bit中只能置其中1 bit。如果所有4 bit均为0,那么就意味着是一般服务。
    4 bit TOS说明如下图:
    在这里插入图片描述
          Te l n e t和R l o g i n这两个交互应用要求最小的传输时延,因为人们主要用它们来传输少量的交互数据。另一方面, F T P文件传输则要求有最大的吞吐量。最高可靠性被指明给网络管理(S N M P)和路由选择协议。用户网络新闻( Usenet news, NNTP)是唯一要求最小费用的应用。
          现在大多数的T C P / I P实现都不支持TO S特性,但是自4.3BSD Reno以后的新版系统都对它进行了设置。另外,新的路由协议如O S P F和I S - I S都能根据这些字段的值进行路由决策

  • 16位总长度:
          整个I P数据报的长度,以字节为单位。最大IP数据包可达65536字节,但是大多数的链路层都会对它进行分片

  • T T L(t i m e - t o - l i v e)
          生存时间字段设置了数据报可以经过的最多路由器数。它指定了数据报的生存时间。T T L的初始值由源主机设置(通常为3 2或6 4),一旦经过一个处理它的路由器,它的值就减去1。当该字段的值为0时,数据报就被丢弃,并发送I C M P报文通知源主机。

  • 首部检验和
    根据I P首部计算的检验和码。它不对首部后面的数据进行计算。I C M P、I G M P、U D P和T C P在它们各自的首部中均含有同时覆盖首部和数据检验和码。

3. IP地址编址

3.1 IP地址规则

IP数据包从源地址发送到目标地址!讨论下IPV4地址的编码

  1. IP分类
    根据网络地址范围,人为规定了A,B,C,D,E五类网络地址并且指定了网络号与主机号
    在这里插入图片描述

  2. 主机上的分类:
          现在所有的主机都要求支持子网编址不是把I P地址看成由单纯的一个网络号和一个主机号组成,而是把主机号再分成一个子网号和一个主机号。
          这样做的原因是因为A类和B类址为主机号分配了太多的空间,可分别容纳的主机数为2^24-2和 2^16-2(由于全0或全1的主机号都是无效的,因此我们把总数减去2)。事实上,在一个网络中人们并不安排这么多的主机。
          譬如:
          这里有一个B类网络地址(1 4 0 . 2 5 2),在剩下的16 bit中,8 bit用于子网号, 8 bit用于主机号,。这样就允许有2 5 4个子网,每个子网可以有2 5 4台主机。
    在这里插入图片描述

  3. 子网掩码
    对于一个IP地址,主机需要知道多少个bit用于网络号,多少个bit用于子网号。主机借助子网掩码可以得到这一信息

      首先,A类地址网络号为8bit,B类地址网络号为16bit
      其次,除去网络号掩码,剩余的bit为子网号占用的bit
在这里插入图片描述
      假设我们的主机地址是1 4 0 . 2 5 2 . 1 . 1(一个B类地址),而子网掩码为2 5 5 . 2 5 5 . 2 5 5 . 0(其中8b i t为子网号, 8 bit为主机号)。
       如果目的I P地址是1 4 0 . 2 5 2 . 4 . 5,那么我们就知道B类网络号是相同的( 1 4 0 . 2 5 2),但是子网号是不同的(1和4)。
      如果目的I P地址是1 4 0 . 2 5 2 . 1 . 2 2,那么B类网络号还是一样的( 1 4 0 . 2 5 2),而且子网号也
是一样的,但是主机号是不同的。
      如果目的I P地址是1 9 2 . 4 3 . 2 3 5 . 6(一个C类地址),那么网络号是不同的,因而进一步的
比较就不用再进行了。

3.2 应用实例

      大多数的子网例子都是B类地址。其实,子网还可用于C类地址,只是它可用的比特数较少而已。很少出现A类地址的子网例子是因为A类地址本身就很少(但是,大多数A类地址都是进行子网划分的)。
      子网对外部路由器来说隐藏了内部网络组织(一个校园或公司内部)的细节。在我们的网络例子中,所有的I P地址都有一个B类网络号1 4 0 . 2 5 2。但是其中有超过3 0个子网,多于4 0 0台主机分布在这些子网中。由一台路由器提供了I n t e r n e t的接入。

实例图说明:

  1. 我们把大多数的路由器编号为Rn,n是子网号。我们给出了连接这些子网的路由器
  2. 以太网用粗线表示,点对点链路用虚线表示。我们没有画出不同子网中的所有主机。例如,在子网1 4 0 . 2 5 2 . 3上,就超过5 0台主机,而在子网1 4 0 . 2 5 2 . 1上则超过1 0 0台主机。

在这里插入图片描述
      与3 0个C类地址相比,用一个包含3 0个子网的B类地址的好处是,它可以缩小I n t e r n e t路由表的规模。
      B类地址1 4 0 . 2 5 2被划分为若干子网的事实对于所有子网以外的I n t e r n e t路由器都是透明的。为了到达I P地址开始部分为1 4 0 . 2 5 2的主机,外部路由器只需要知道通往I P地址1 4 0 . 2 5 2 . 1 0 4 . 1的路径。这就是说,对于网络1 4 0 . 2 5 2只需一个路由表目,而如果采用3 0个C类地址,则需要3 0个路由表目。因此,子网划分缩减了路由表的规模
      子网对于子网内部的路由器是不透明的。一份来自I n t e r n e t的数据报到达g a t e w a y,它的目的地址是1 4 0 . 2 5 2 . 5 7 . 1。路由器g a t e w a y需要知道子网号是5 7,然后把它送到k p n o。同样,k p n o必须把数据报送到R 5 5,最后由R 5 5把它送到R 5 7。

3.3 特殊IP地址

在这里插入图片描述

4. IP路由过程

4.1 IP路由概念

      从概念上说, I P路由选择是简单的,特别对于主机来说。如果目的主机与源主机直接相连(如点对点链路)或都在一个共享网络上(以太网或令牌环网),那么I P数据报就直接送到目的主机上。否则,主机把数据报发往一默认的路由器上,由路由器来转发该数据报。大多数的主机都是采用这种简单机制。

4.2 IP路由过程

4.2.1 IP数据报源

  1. T C P、U D P、I C M P和I G M P协议模块数据报(即在本地生成的数据报
  2. 一个网络接口接收数据报(待转发的数据报)并进行转发

4.2.2 IP路由表

      I P层在内存中有一个路由表。当收到一份数据报并进行发送时,它都要对该表搜索一次

4.2.3 IP路由过程

  1. 情景1 网络接口输入
    当数据报来自某个网络接口时, I P首先检查目的I P地址是否为本机的I P地址之一或者I P广播地址。如果确实是这样,数据报就被送到由I P首部协议字段所指定的协议模块进行处理。如果数据报的目的不是这些地址,那么( 1)如果I P层被设置为路由器的功能,那么就对数据报进行转发(也就是说,像下面对待发出的数据报一样处理);否则(2)数据报被丢弃。
  2. 情景2 本地生成数据报
    路由表中的每一项都包含下面这些信息:
  • 目的I P地址。
    它既可以是一个完整的主机地址,也可以是一个网络地址,由该表目中的标志字段来指定。主机地址有一个非0的主机号以指定某一特定的主机,而网络地址中的主机号为0,以指定网络中的所有主机(如以太网,令牌环网)。
  • 下一站(或下一跳)路由器( next-hop router)的I P地址,或者有直接连接的网络I P地址。下一站路由器是指一个在直接相连网络上的路由器,通过它可以转发数据报。下一站路由器不是最终的目的,但是它可以把传送给它的数据报转发到最终目的。
  • 标志。其中一个标志指明目的I P地址是网络地址还是主机地址,另一个标志指明下一站路由器是否为真正的下一站路由器,还是一个直接相连的接口(我们将在9 . 2节中
    详细介绍这些标志)。
  • 为数据报的传输指定一个网络接口。

具体工作
I P路由选择主要完成以下这些功能:

  1. 搜索路由表,寻找能与目的I P地址完全匹配的表目(网络号和主机号都要匹配)。如果
    找到,则把报文发送给该表目指定的下一站路由器或直接连接的网络接口(取决于标
    志字段的值)。
  2. 搜索路由表,寻找能与目的网络号相匹配的表目。如果找到,则把报文发送给该表目
    指定的下一站路由器或直接连接的网络接口(取决于标志字段的值)。目的网络上的所
    有主机都可以通过这个表目来处置。例如,一个以太网上的所有主机都是通过这种表
    目进行寻径的。
    这种搜索网络的匹配方法必须考虑可能的子网掩码。关于这一点我们在下一节中进行
    讨论。
  3. 搜索路由表,寻找标为“默认( d e f a u l t)”的表目。如果找到,则把报文发送给该表目
    指定的下一站路由器。
    如果上面这些步骤都没有成功,那么该数据报就不能被传送。如果不能传送的数据报来自
    本机,那么一般会向生成数据报的应用程序返回一个“主机不可达”或“网络不可达”的错误。

4.3 路由过程举例

4.3.1 同一个网络

我们的主机b s d i有一个I P数据报要发送给主机s u n,双方都在同一个以太网上。

当I P从某个上层收到这份数据报后,它搜索路由表,发现目的I P地址(1 4 0 . 2 5 2 . 1 3 . 3 3)在一个直接相连的网络上(以太网1 4 0 . 2 5 2 . 1 3 . 0)
数据报被送到以太网驱动程序,然后作为一个以太网数据帧被送到s u n主机上。I P数据报中的目的地址是s u n的I P地址( 1 4 0 . 2 5 2 . 1 3 . 3 3),而在链路层首部中的目的地址是48 bit的s u n主机的以太网接口地址。这个48 bit的以太网地址是用A R P协议获得的
在这里插入图片描述

4.3.2 不在一个网络(甚至跨越不同的链路网络)

主机b s d i有一份I P数据报要传到f t p . u u . n e t主机上,它的I P地址是1 9 2 . 4 8 . 9 6 . 9

  1. 首先,主机b s d i搜索路由表,但是没有找到与主机地址或网络地址相匹配的表目,因此只能用默认的表目,把数据报传给下一站路由器,即主机s u n。当数据报从b s d i被传到s u n主机上以后,目的I P地址是最终的信宿机地址(1 9 2 . 4 8 . 9 6 . 9),但是链路层地址却是s u n主机的以太网接口地址
  2. 当s u n收到数据报后,它发现数据报的目的I P地址并不是本机的任一地址,而s u n已被设置成具有路由器的功能,因此它把数据报进行转发。经过搜索路由表,选用了默认表目。根据s u n的默认表目,它把数据报转发到下一站路由器n e t b,该路由器的地址是1 4 0 . 2 5 2 . 1 . 1 8 3。数据报是经过点对点S L I P链路被传送的。这里,我们没有
    给出像以太网链路层数据帧那样的首部,因为在S L I P链路中没有那样的首部。
  3. 当n e t b收到数据报后,它执行与s u n主机相同的步骤:数据报的目的地址不是本机地址,而n e t b也被设置成具有路由器的功能,于是它也对该数据报进行转发。采用的也是默认路由表目,把数据报送到下一站路由器g a t e w a y(1 4 0 . 2 5 2 . 1 . 4)。位于以太网1 4 0 . 2 5 2 . 1上的主机n e t b用A R P获得对应于1 4 0 . 2 5 2 . 1 . 4的48 bit以太网地址。这个以太网地址就是链路层数据帧头上的目的地址。
  4. 路由器g a t e w a y也执行与前面两个路由器相同的步骤。它的默认路由表目所指定的下一站路由器I P地址是1 4 0 . 2 5 2 . 1 0 4 . 2…
    在这里插入图片描述

5. IP接收包的分用

在这里插入图片描述