文章目录
1.网络层概述
在计算机网络领域,网络层应该向运输层提供怎样的服务(“面向连接”还是“无连接”)曾引起了长期的争论。争论焦点的实质就是:在计算机通信中,可靠交付应当由谁来负责?是网络还是端系统?
电信网的虚电路网络
- 通信过程:呼叫建立——数据传输——拆除呼叫
- 每个分组携带虚电路标识,而不是目的主机地址
- 虚电路经过的每个网络设备,维护每条经过它的虚电路连接状态
每条虚电路包括:
从源主机到目的主机的一条路径
- 虚电路号(VCID),沿路每段链路一个编号
- 沿路每一个网络层设备,利用转发表记录经过的每条虚电路,所以分组携带的是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协议还可以分层,也就是成主干区和局部区(相对来说),区内路由只掌握所在区的详细拓扑,区边界路由器负责汇总所在区域内网络的距离,通告给其他区边界路由器,主干区同理。