1.网络层概述

在计算机网络领域,网络层应该向运输层提供怎样的服务(“面向连接”还是“无连接”)曾引起了长期的争论。争论焦点的实质就是:在计算机通信中,可靠交付应当由谁来负责?是网络还是端系统?

电信网的虚电路网络

  • 通信过程:呼叫建立——数据传输——拆除呼叫
  • 每个分组携带虚电路标识,而不是目的主机地址
  • 虚电路经过的每个网络设备,维护每条经过它的虚电路连接状态

每条虚电路包括:

从源主机到目的主机的一条路径

  1. 虚电路号(VCID),沿路每段链路一个编号
  2. 沿路每一个网络层设备,利用转发表记录经过的每条虚电路,所以分组携带的是VCID,而不是目的主机地址

网络层核心功能—转发与路由

转发:将分组从路由器的输入端口转移到合适的输出端口,其需要维护一个转发表来确定转发路径

路由:确定分组从源到目的经过的路径,需要路由算法来确定

网络层核心功能—建立连接

数据分组传输之前两端主机需要首先建立虚拟/逻辑连接,

网络层连接是两个主机之间的连接,而传输层连接是两个应用进程间连接(对中间网络设备透明),

网络层服务模型:

连接服务:

  • 不事先为系统分组的传输确定传输路径
  • 每个分组独立确定传输路径
  • 不同分组可能传输路径不同
  • 代表性网络:数据报网络

无连接服务:

  • 首先为系统分组的传输确定传输路径(建立连接)
  • 然后沿该路径传输系统分组
    • 传输结束后拆除连接
  • 代表性网络:虚电路网络

3 数据报(分组)网络

网络层收到传输层的segment,封装为数据报文,进行转发

  • 网络层无连接
  • 每个分组携带目的地址
  • 路由器根据分组的目的地址转发分组
    • 基于路由协议/算法构建转发表
    • 检索转发表

路由转发的最长前缀匹配优先:在检索转发表时,优先选择与分组目的地址匹配前缀最长的入口

4 IP协议

网络层实现功能:

  • 路由协议
    • 路径选择,常见路由协议有RIP、OSPF等
  • 确认路径后存入转发表
  • 通过IP协议进行分组转发
    • 寻址规约
    • 数据报(分组)格式
    • 分组处理规约
  • ICMP协议(可看做IP协议的附属协议)
    • 差错报告
    • 路由器“信令”

4.1 IP数据报格式

4.2 IP数据报分片

由于IP数据分组需要封装到链路层的数据帧中,而网络链路存在 M T U ( 最 大 传 输 单 元 ) MTU(最大传输单元) MTU,而不同链路的MTU是不同的。当大IP分组向较小MTU链路转法时,IP分组可以被“分片”,如果IP分组不允许被分片,则扔掉,并向源主机传送ICMP报文。

IP分组在目的主机重组,由于分组可能乱序达到,IP数据报首部必须有表示分组顺序的标志位,见上图

4.3 IP分片过程

  • 假设原IP分组总长度为L,待转发链路的MTU为M

  • 若L > M,且DF = 0,则可以/需要分片

  • 分片时每个分片的标识复制原IP分组的标识

  • 通常分片时,除最后一个分片外,其他分片均为MTU允许的最大分片

4.4 IP编址

将主机用IP地址标识,同一区域内的主机IP属于一个IP子网

IP地址:

  • 网络号 — 高比特位
  • 主机号 — 低比特位

IP子网:

  • IP地址具有相同网络号的设备接口
  • 不跨越路由器(第三及以上层网络设备)

有类编制:(二分法)

类型 范围
A类 0.0.0.0 ~ 127.255.255.255
B类 128.0.0.0 ~ 191.255.255.255
C类 192.0.0.0 ~ 223.255.255.255
D类 224.0.0.0 ~ 239.255.255.255
E类 240.0.0.0 ~ 255.255.255.255

私有IP地址:结合NAT技术,在IPV4耗尽的情况下internet仍能正常运行

类型 网络IP Blocks
A 10 1
B 172.16 ~ 172.31 16
C 192.168.0 ~ 192.168.255 255

4.5 子网划分

为什么要划分子网:

  • 减少网络流量:子网定义了一个网络最大的广播空间(受限广播),可以减少网络流量
  • 提高IP地址利用率:IP地址分为网络号和主机号,C类地址某网络下主机有255台,如果不划分的话,则可能出现很大的IP地址浪费
  • 提高网络性能:如果不划分,大量主机造成寻址变慢甚至是广播风暴

IP地址:网络号(高位比特)+ 子网号(原网络主机号部分比特) + 主机号(低位比特)

如何确定是否划分了子网?利用多少位划分子网?

查看子网掩码,其形式如下:网络号和子网号全取1,主机号全取0。子网地址+子网掩码确定子网大小

怎么提取子网地址:

将IP分组的目的IP地址与子网掩码进行按位与运算,提取子网地址

4.6 CIDR与路由聚合

CIDR无类域间路由

  • 消除传统的A类、B类和C类地址界限,将网络号+子网号视为前缀
  • 融合子网地址和子网掩码,方便子网划分
    • 无类地址格式:a.b.c.d/x,其中x为前缀长度,如200.23.16.0/23(看起来是c类地址,网络号长24,但这里只用了23位,与传统C类地址不同)
  • 提高了IPV4地址空间分配效率
  • 提高路由效率(路由聚合)

路由聚合:

路由表中存在目的网络-接口的映射,当存在相同路径的子网且能够聚合成一个较大子网时,路由表通过路由聚合极大得减小了路由表的大小

黑洞现象:路由聚合后,可能将未其他区域的子网聚合到一起,此时可以增加一条更小的CIDR地址,通过最长前缀匹配优先,能够避免黑洞现象。

+++

5. DHCP协议

计算机可以通过静态配置获取IP地址,也能够通过DHCP协议动态获取IP地址

  • 从服务器动态获取:IP地址、子网掩码、默认网关地址、DNS服务器名称与IP地址
  • 即插即用
  • 允许地址重用
  • 允许在用地址续租
  • 支持移动用户加入网络

DHCP工作流程:

  • 主机广播“DHCP discover” (发现报文)
  • DHCP服务器利用 “DHCP offer” (提供报文)进行响应
  • 主机请求IP地址“DHCP request” (请求报文)
  • DHCP服务器分配IP地址:“DHCP ack” (确认报文)

DHCP协议实际在应用层,通过应用进程实现的,采用的是典型的客户服务器方式。其将DHCP报文封装在UDP段,再封装到IP数据报进行广播,再在链路层封装成数据帧进行广播。

+++

6. 网络地址转换NAT

NAT的优点

  • 只需从ISP申请一个IP地址
  • 本地网络设备IP地址的变更,无需通告外界网络
  • 变更ISP时,无需修改内部网络设备IP地址
  • 内部网络设备对外界网络不可见,增加了内部网络安全性

6.1 NAT的实现

**替换:**利用(NAT IP地址,新端口号) 替换每个外出IP数据报的(源ip地址,源端口号)

记录:将替换过程记录下来

替换:根据NAT转换表,利用(源 ip地址,源端口号)替换(NAT ip地址,新端口号)

端口号有16-bits字段,因此可以同时支持65535个并行连接。

6.2 NAT穿透问题

外网期望连接内网主机的解决方案:

  • 静态配置NAT,将特定端口的连接请求转发给特定服务器
  • 利用UPnP互联网网关设备协议自动配置
  • 中继:NAT内部的客户与中继服务器建立连接,中继服务器起到桥梁作用

+++

7. 互联网控制报文协议ICMP

主要功能:

  • 差错(或异常)报告
  • 网络探寻

两类ICMP报文:

  • 差错报文(5种):目的不可达、源抑制、超时、参数问题、重定向
  • 网络探寻(2种):回声请求与应答报文(如ping命令)、时间戳请求与应答报文

+++

8. IPv6协议

IPv6数据报格式

  • 固定长度为40字节的基本首部,还有扩展首部(路由器不处理扩展首部,因此可能快速处理和转发数据报)
  • 不允许分片(数据报分片/重组由源主机/目的主机完成,路由器不参与)

IPv6 VS IPv4:

  • 检验和:彻底移除,以减少每条数据报的处理时间
  • 选项:允许,但是从基本首部移出,通过下一个首部指示
  • MTU:如果数据报分片大于MTU,则丢弃,向源主机发送新版ICMP差错控制报文(too big)

IPv6地址表示形式:

IPv6向IPv4逐渐过渡:

隧道技术:将IPv6数据报封装到IPv4的载荷中,利用IPv4网络传输,再解封

+++

9. 路由

9.1 路由算法

静态路由

  • 手工配置
  • 路由更新慢
  • 优先级高

动态路由

  • 路由更新快:定期更新,及时响应链路费用或网络拓扑变化

全局信息:所有路由器掌握完整的网络拓扑和链路费用信息,如链路状态路由算法

分散信息:路由器只掌握物理相邻的邻居及链路费用,邻居间通过信息交换、运算更新状态,如距离向量路由算法

9.2 链路状态路由算法 - Dijkstra算法

9.3 距离向量路由算法 - Bellman-Ford方程(动态规划)

核心思想:

  • 每个结点不定时地将其自身的DV估计(DV:从结点x到结点y的最小费用)发送给其邻居
  • 当邻居收到其邻居发送的DV后,根据此DV更新自身的DV
  • 更新完成后,将DV发送给邻居

距离向量路由算法是异步迭代的,引发迭代可能是局部链路费用的改变,也可能是来自邻居的DV更新

**无穷计数问题:**如果多个节点之间存在链路费用信息差时,容易产生无穷计数问题,如下图。

毒性逆转:如果一个结点1达到某目的节点3的最小费用路径是通过某个邻居2,则更新DV之后将通告邻居2节点1到达目的节点3距离为无穷大。

定义最大度量:定义一个最大的有效费用值,如15跳步,则16跳步表示正无穷。

+++

10. 层次路由

  • 聚合路由器为一个区域:自治系统AS(autonomous systems)
  • 同一AS内的路由器运行相同的路由协议(算法)
  • 不同自治系统AS通过网关路由器连接,其处于自治系统的边缘

11. 路由协议

  • internet采用层次路由
  • AS内部路由协议也称为内部网络协议IGP
  • 最常见的AS内部路由协议:
    • 路由信息协议:RIP协议
    • 开放最短路径协议:OSPF协议

11.1 RIP协议

利用距离向量路由算法,计算内部网络到达其他目的子网的最短距离

  • 距离度量:跳步数(max = 15hops),每条链路1个跳步
  • 每隔30s,邻居间交换一次DV,称为通告
  • 每次通告:最多25个目的子网

链路失效/恢复:

如果180s没有收到某邻居通告,则认为邻居/链路失效,重新计算路由并通告给其他邻居。

RIP路由表的处理:

RIP路由表是利用一个称为route-d的应用层进程进行管理,通告报文周期性通过UDP数据报发送。

虽然RIP协议实现是在应用层,但还是划分到网络层协议,划分根据是作用功能在哪层,而不是具体实现在哪层

11.2 OSPF协议

  • 开放:公众可用

  • 采用链路状态路由算法

    • LS分组扩展(通告)
    • 每个路由器构造完整的网络AS拓扑图
    • 利用Dijkstra算法计算路由
  • OSPF通告中每个入口对应一个邻居

  • OSPF通告直接封装到IP数据报中,并在整个AS范围内广播

OSPF协议的优点:

  • 安全:所有OSPF报文可以被认证
  • 允许使用多条相同费用的路径(RIP只能选一条)

OSPF协议还可以分层,也就是成主干区和局部区(相对来说),区内路由只掌握所在区的详细拓扑,区边界路由器负责汇总所在区域内网络的距离,通告给其他区边界路由器,主干区同理。