一、网络层提供的服务

  • 网络层只向上层提供简单灵活的、无连接的、尽最大努力交付的数据报服务。

  • 网络层不提供端到端的可靠传输服务。

  • 虚电路方式和数据报方式传递数据的不同:

二、网络层的协议

image-20210325191602705image-20210325192206379

image-20210325191602705image-20210325192206379

虚拟互联网络:

互联起来的各种网络之间的异构性本来是客观存在的,但是我们利用 IP 协议可以使这些性能各异的网络从用户看起来好像是一个统一的网络。

2.1 分类的 IP 地址

image-20210325192936944
  • A类地址:以0开头, 1个字节的网络号3个字节的主机号;第一个可以指派的网络号为1,最后一个可以指派的网络号为126,最大可以指派的网络数为 2^7-2(因为网络号全0表示本网络、网络号127保留作为本地软件换回测试、本主机的进程之间通信使用),每个网络中最大的主机数为 2^24-2(因为主机号全0表示本主机、全1表示所有主机)。
  • B类地址:以10开头, 2个字节的网络号和2个字节的主机号;第一个可以指派的网络号为128.1,最后一个可以指派的网络号为191.255,最大可以指派的网络数为2^14-1(因为 128.0.0.0一般是不指派的),每个网络中的最大主机数为 2^16-2,同样要去除全0全1。B类地址空间共有 2^30个地址,占整个IP地址空间的 25%。
  • C类地址:以110开头, 1个字节的网络号和3个字节的主机号;第一个可以指派的网络号为192.0.1,最后一个可以指派的网络号为233.255.255,最大可以指派的网络数为 2^21-1(因为网络地址 192.0.0.0是不指派的),每个网络中的最大主机数为 2^8-2,整个C类地址空间共有 2^29个地址,占整个IP地址的 12.5%
  • D、E类地址都是多播地址了

网络号和主机号全为1对应的网络是受限网络;主机号全部为1但是网络号不全为1称为直接广播;

三、互联网的IP地址

网络层面上看始终都是都是源地址和目的地址的 IP 地址;

实际过程中变化的只有数据链路层上的 MAC地址;

四、地址解析协议(ARP)

4.1 ARP的作用(Address Resolution Protocol)

为了解决同一局域网上主机或路由器的 IP 地址和硬件地址的映射关系;能够从已知的 IP 地址中解析出数据链路层使用的硬件地址。

每一个主机都设有一个 ARP高速缓存(ARP Cache),里面有所在的局域网上的各主机和路由器的 IP 地址到硬件地址的映射表。

4.2 ARP的工作原理

1:首先,每个主机都会在自己的ARP缓冲区中建立一个ARP列表,以表示IP地址和MAC地址之间的对应关系。
  2:当源主机要发送数据时,首先检查ARP列表中是否有对应IP地址的目的主机的MAC地址,如果有,则直接发送数据,如果没有,就向本网段的所有主机发送ARP数据包,该数据包包括的内容有:源主机 IP地址,源主机MAC地址,目的主机的IP 地址。
  3:当本网络的所有主机收到该ARP数据包时,首先检查数据包中的IP地址是否是自己的IP地址,如果不是,则忽略该数据包,如果是,则首先从数据包中取出源主机的IP和MAC地址写入到ARP列表中,如果已经存在,则覆盖,然后将自己的MAC地址写入ARP响应包中,告诉源主机自己是它想要找的MAC地址。
  4:源主机收到ARP响应包后。将目的主机的IP和MAC地址写入ARP列表,并利用此信息发送数据。如果源主机一直没有收到ARP响应数据包,表示ARP查询失败。广播发送ARP请求,单播发送ARP响应。

4.3 使用ARP的四种典型情况

  1. 处于同一网络的两个主机;

image-20210325203146275

  1. 处于不同网络中的两个主机想要交流信息,通过路由器进行转发。(路由器有两个硬件地址);
image-20210325203158405
  1. 发送方是路由器,要把 IP 数据报转发到与该路由器连接在同一网络上的主机;
image-20210325203246681
  1. 发送方是路由器,要把 IP 数据报转发到另一个网络上的主机;
image-20210325203221409

4.4 为什么我们不直接使用硬件地址进行通信

由于全世界存在着各式各样的网络,它们使用不同的硬件地址。要使这些异构的网络互相通信就必须进行非常复杂的硬件地址转换工作。

但是 IP 编址把这个复杂的过程解决了。连接到互联网的主机只需要各自拥有一个唯一的 IP 地址,它们之间的通信就像连接在一个网络上那样方便简单,调用 ARP 的复杂过程都是计算机软件自动进行的。

4.5 IP 数据报结构

  • 版本: 占4位,IP协议的版本,比如 IPv4、IPv6。
  • 首部长度:占4位,可以表示的最大数值是 15个单位(一个单位 4个字节),因此 IP 的首部长度的最大值是60字节,相应的可选长度最大为 40字节;另外每次添加的可选部分只能是4个字节的整数倍,不足则进行填充。首部长度中的固定长度是20个字节。
  • 区分服务:占8位。
  • 总长度:占16位,当前整个 IP 数据报的长度(首部+数据)。最大长度必须不超过最大传送单元 MTU(Max Transmission Unit,最大1500个字节)。
  • 标识:占16位,存储维持一个计数器,每产生一个数据报,计数器就加1.
  • 标志:占3位,暂时只有后两位有意义,最低位是MF(More Fragment),为1表示后面还有分片,否则表示当前是最后一个;中间一位是 DF(Don’t Fragment)只有值为0才可以分片。
  • 片偏移:占13位,相对于用户数据部分的起点。代表该位置之前的数据报大小。
  • 生存时间:占8位,数据包在网络中的寿命,每经过一次转发就会导致TTL的值减去1,当减到0时就将该数据包丢弃。
  • 协议:占8位,指出此数据报携带的数据是何种协议,以便使目的主机的IP层知道应该将数据部分上交给哪个协议进行处理。
  • 首部校验和:占16位,只检验IP数据报的首部,不会检验数据部分,因为网络层的数据传输不是可靠的。
  • 源地址:占32位,IP 数据报的源地址。
  • 目的地址:占32位,IP 数据报的目的转发地址。

4.6 IP 层转发分组的流程

路由器和主机的路由表组成:

每一个路由器都会存储一个路由表,其中存储的有 目的网络地址和下一跳地址。

每一个主机也会存储一个路由表,其中包含三部分:①到本网络的路由,不需要进行转发,而是直接交付;②到网络N2的路由,对应下一跳路由器;③到其它网络(除开N1、N2)的下一跳路由器;

默认路由:当前路由表中的所有目的地址不包括目的网络时,路由器应该转发的方向。(没有办法转发时才采用默认路由)

IP 数据报转发过程:

当路由器确定了下一跳的 IP 地址时,不是直接把这个 IP 地址写入 IP数据报,而是送交数据链路层的网络接口软件,该软件通过 ARP协议将 IP地址解析为 MAC硬件地址,并且将该地址设置到 MAC帧的首部,然后根据这个硬件地址找到下一跳的路由器。

分组转发算法:

(1)从 IP 数据报的首部提取出 目的主机的IP地址D、目的网络地址N(目的地址的网络号);

(2)若N就是直接与此路由器相连的某个网络地址,则进行直接交付;

(3)否则若路由表中有目的地址为D的特定主机路由或者路由表中有到达网络N的路由,则把数据报传递给路由表中所指定的下一跳路由器;

(4)否则若路由表中有默认路由,则把数据报传递给路由表中所指明的默认路由器;

(5)否则报告转发分组出错。

五、划分子网和构造超网

划分子网是属于一个单位内部的事情,对外而言仍然是一个网络。

子网是从主机号中借用若干位来形成子网号的。

5.1 子网掩码

设置了子网号后,从一个 IP 数据报的首部无法判断源主机或目的主机所连接的网络是否进行了子网划分。

使用子网掩码来区分IP数据报的 网络号+子网号 和 主机号

注意子网全0 和 全1都不能用

因此, (IP地址) AND (子网掩码)= 网络号

5.2 使用子网进行分组转发

在划分子网的情况下从 IP地址不能唯一得出网络地址来,这是因为网络地址取决于那个网络所采用的子网掩码,但是数据报的首部没有提供子网掩码的信息。

  • 判断两个网络地址是否一样?

    掩码是否一样 + 掩码 AND 网络地址 是否一样

使用了子网掩码后的路由表: 目的网络地址+子网掩码+下一跳地址

5.3 加上子网后的分组转发算法:

六、网际控制报文协议(ICMP)

为了更有效地转发 IP 数据报和提高交付成功的机会,在网际层使用了网际控制报文协议 ICMP(Internet Control Message Procotol)。

通常用于数据报出现异常时,用于报告异常信息。

ICMP 不是高层协议,因为 ICMP报文是装在 IP 数据报中,作为其中的数据部分进行,ICMP 不能够保证可靠传输。

6.1 ICMP 报文的种类

(1)ICMP 差错报文:比如路由器将数据报丢弃后向原站发送一个差错报文,通知它因为什么原因将报文丢弃,不需要回复。

① 差错报文共有如下4种:

(1)终点不可达;

(2)时间超过;

(3)参数问题;

(4)改变路由 [重定向];

② 举例:

A 要发送数据到 B,当它将数据发送给 R1 后,由于 R1 也不知道下一步往哪里走,误将数据发送给了R2,R2接收后解析发现它不能够到达B,因此向R1 发送差错报文(终点不可达+改变路由)。R1 接收后会改变路由再次发送数据报。

③ 差错报文的组成:

差错报文会把收到的需要进行差错报告的 IP数据报的首部和数据字段的前8个字节抽取出来,作为ICMP报文的数据字段。然后再加上相应的 ICMP差错报告报文的前8个字节,构成 ICMP 差错报告报文。

提取收到的数据报的数据字段的前8个字节是为了获取运输层的端口号(对于TCP和UDP),以及运输层报文的发送序号(对于TCP)。这些信息对于源点通知高层协议是有用的。

④ 不发送差错报文的几种情况:

  1. 对 ICMP 差错报告报文(如果被丢弃),不再发送差错报告报文;
  2. 对于第一个分片后的所有后续数据报片,不再发送 ICMP 差错报告报文;
  3. 对于具有多播地址的数据报,不发送 ICMP 差错报告报文;
  4. 对于具有特殊地址(127.0.0.1 或 0.0.0.0)的数据报,不再发送 ICMP 差错报告报文;
(2)ICMP 询问报文:比如原站和目的站的通信,来确定发送时间是否一致、发送地址是否正确等等信息,需要接受方进行回复。

常用的有两种:

  1. 回送请求和回答:主机向目的主机发送询问。收到此报文的目的主机必须给源主机发送ICMP回答报文。这种询问报文用来测试目的站是否可达以及了解其有关状态;

​ 举例: 比如利用 PING 命令来测试两个主机之间的连通性;

  1. 时间戳请求和回答:用于时钟同步和时间测量。

七、互联网的路由选择协议

为什么采用分层次的路由选择协议?

1. 互联网非常大,如果让所有的路由器都知道其它的网络如何到达此时路由表会非常大;
   2. 许多单位不愿意外界了解自己单位网络的布局但是同时还希望连接到互联网上;

为此,可以将整个互联网划分为许多较小的自治系统,一般记为 AS。自治系统 AS是在单一技术管理下的一组路由器。一个AS 对其他 AS 表现出的是一个单一的和一致的路由选择策略。

7.1 自治系统 AS

  • 自治系统AS的定义:在单一技术管理下的一组路由器,而这些路由器使用一种 AS 内部的路由选择协议和共同的度量以确定分组在该AS内的路由;同时还使用一种AS之间的路由选择协议用以确定分组在AS之间的路由。
  • 尽管一个 AS 使用了多种内部路由选择协议和度量,但重要的是一个 AS 对其它 AS表现出的是一个单一的和和一致的路由选择协议。
  • 自治域内通常使用 RIP、OSPF;自治域之间使用 BGP协议。

7.2 内部网关协议 RIP

RIP (Routing Information Protocol) 是内部网关协议中使用最广泛的协议,它是一种基于距离向量的路由选择协议。

RIP 协议要求每一个路由器都维护从它自己到其他每一个目的网络的距离记录。

距离定义为:从一路由器到它直接连接的网络的距离为1;否则每次经过一个路由器距离就加1;RIP 允许一条路径最多只能包含15个路由器,距离16表示为不可达状态。

RIP 适用于小型互联网。

RIP 协议的特点:
  1. 仅和相邻的路由器交换信息;(需要通过不断交换路由信息来实时更新路由信息)
  2. 交换的信息是当前本路由器所知道的全部信息,即自己的路由表。
  3. 按照固定时间间隔(30s)交换路由信息。
RIP 优缺点:

优点:实现简单,开销较小;

缺点:当网络出现故障时,要经过比较长的时间才能将此信息传送到所有的路由器;

好消息传播快,坏消息传播蛮

RIP协议报文格式:

RIP使用运输层的 用户数据报UDP进行传送(使用 UDP 端口520)

距离向量算法:
  1. 对地址为 X 的相邻路由器发送来的RIP报文,先修改此报文中的所有项目,把下一跳的地址都改为 X,并把所有距离字段都加1。 每一个项目都包含三个关键数据:到目的网络N,距离 d,下一跳路由器 X。

  2. 对RIP报文的每一个项目,执行判断。

    • 如果原路由表中没有目的网络N,则添加该项目到路由表;
    • 否则查看下一跳路由器地址,如果和原路由表相同,则用接收到的项目替换原路由表的项目;
    • 否则根据项目中的距离 d判断是否进行更新。

    这种算法的基础就是 弗洛伊德算法(Ford),用来求单元

八、OSPF协议

(Open Shortest Path First) 开放最短路径优先,使用了 Dijkstra 算法

OSPF 协议的最主要特征是使用分布式的链路状态协议,而不是像 RIP 那样的距离向量协议。

OSPF和RIP协议的不同点:
  1. OSPF 协议使用洪泛法向本自治区域中的所有路由器发送信息。(路由器通过输出端口向所有相邻的路由器发送信息,相邻的路由器再向其相邻的路由器发送信息,最终整个区域中所有路由器都得到了这个信息的一个副本)。

​ RIP 协议仅仅向自己相邻的几个路由器发送信息。

  1. OSPF发送的信息就是与本路由器相邻的所有路由器的链路状态(链路状态指本路由器都和哪些路由器相邻,以及该链路的度量)。

​ RIP协议发送的是到所有目的网路的距离和下一跳路由器。

  1. 只有当链路状态发生变化时,路由器才向所有路由器用洪泛法发送此信息。

​ RIP 不管网络拓扑有无变化,路由器之间都要定期交换路由表的信息。

  1. OSPF协议能够通过频繁的交换信息来构建一个全网的网络拓扑图,进而使用 Dijkstra 算法计算最短路径。

    RIP协议的每一个路由器虽然知道到所有的网络的距离以及下一跳路由器,但是不知道全网的拓扑结构。

  2. OSPF的更新过程收敛地快。

  3. OSPF不使用UDP而是直接用IP数据报进行传送。

九、BGP(外部网关协议)

互联网规模太大,使得自治系统AS之间路由选择非常困难,因此对于自治系统AS间的路由选择使用代价作为度量来寻找最佳路由是很不现实的。

比较合理的做法是在自治系统之间交换“可达性” 信息。

边界网关协议 BGP 只能是力求找到一条能够到达目的网络且比较好的路由,而并非找到一条最佳路由。

BGP采用路径向量协议,它与距离向量协议和链路状态协议有很大区别。

十、路由器的结构

路由器是一个 具有多个输入端口、多个输出端口的专用计算机,它的任务是转发分组。

整个路由器包括: 路由选择 和 分组转发

(1)路由选择:

核心组件是路由选择处理机,根据所选定的路由选择协议构造出路由表,同时经常定期地和相邻路由器交换路由信息而不断地更新和维护路由表。

(2)分组转发:

核心部分包括 一组输入端口、一组输出端口、交换结构

交换结构的作用是根据转发表对分组进行处理,将某个输入端口输入的分组通过转发表选择一个合适的输出端口输出出去。

注意转发和路由选择的区别

(1)转发:路由器根据转发表把收到的 IP数据报从路由器合适端口转发出去;转发仅仅涉及到一个路由器;

(2)路由选择:路由选择涉及到很多路由器,路由表是许多路由器协同工作的结果。这些路由器按照复杂的路由算法,得出整个网络的拓扑变化情况,因而能够动态的改变所选择的路由。

转发表应当使得查找过程最优化,路由表需要对网络拓扑变化的计算最优化。

路由器工作过程

如图所示,图中的 1、2、3 分别代表物理层、数据链路层、网络层的处理模块。物理层进行比特接收,数据链路层按照链路层协议接收传送分组的帧。去掉帧的头部和尾部后,分组就被送入网络层的处理模块。

若接收到的分组是路由器之间交换信息的分组(RIP或 OSPF),则把这种分组送交路由器的路由选则处理机。若接收到的是数据分组,则按照分组首部中的目的地址查找转发表,根据得出的结果转发到合适的输出端口。