功能概述
主要任务是把 分组 从源端传到目的端,为分组交换网上不同主机提供通信,传输单位是:数据报
- 路径选择与分组转发【选择最佳路径】
- 进行分组转发时,每个路由器只知道它的下一跳,而不知道整个路径
- 转发IP数据报时,重新封装源MAC和目的MAC地址
- 异构网络互联
- 异构网络指:数据链路层和物理层均不同
- 每个互联的局域网网络层及以下协议可以不同,以上必须相同
- 拥塞控制【1.开环控制(静态) 2.闭环控制(动态)】
IPV4
IP数据报格式 P144
【要求:熟记各个字段的意义和功能】
首部检验和:只检验首部
源IP和目的IP:32bit
可选字段:0~40B
填充字段:把首部补成4B的整数倍
TCP对应协议字段值为6,UDP对应协议字段值为17
IP数据报分片
最大传送单元MTU:链路层能承载的最大数据量。以太网中为1500B
IP分组规定的最大长度:65535B
**
- 标识:同一个数据报的分片使用同一标识
- 标志:x DF MF(只有两位有意义)
- DF(Don’t Fragment):1为禁止分片,0允许
- MF(More Fragment):1为还有分片,0代表最后一片
- 片偏移:在原分组中的相对位置,以8B为单位。

【记忆:首部长度(4B),总长度(1B),片偏移(8B)】
【除最后一片的数据部分,需要为8B的整数倍】
IPV4地址
分类的IP地址
全世界唯一的32bit/4B的标识符,标识路由器主机接口。
IP地址{<网络号>,<主机号>}
【熟记下面几个图】【拿到一个非CIDR的IP地址,需要先判断它属于什么类再进行做题】


- A最大可用网络:-2:【①全0不可用②127不可用】
- A最大主机数:-2:【全0表示整个网络;全1表示广播地址】
B最大可用网络:-1:【减去剩余全0情况,即128.0不作为可用网络号】
网络地址转换NAT
私有IP地址【只用于LAN,不能出现在因特网上】

- NAT(Network Address Translation):专用网连接到因特网需进行网络地址转换,NAT路由器至少有一个外部全球IP地址
- NAT转换表:{本地IP:端口} <——> {目的IP:端口}
- Note: 普通路由器转发IP数据报时,不改变源IP和目的IP。NAT路由器进行转发时,更换其IP地址(源或者目的)
子网划分与子网掩码
子网划分
【TODO:翻书解决定长子网和VLSM子网划分】
- 主机号不能全0全1,子网号看情况
- 对外仍表现为一个网络
子网掩码
- 1对应IP地址的网络号以及子网号,0表示主机号
【141.14.64.0】
【广播分组:主机号全1;由子网掩码得:主机号10位;】
- 路由表
- 目的网络地址
- 目的网络子网掩码
- 下一跳地址
- 路由表算法
- 提取目的IP地址
- 判断是否直接交付【当前路由器所连子网为直接交付】
- 特定主机路由
- 检测路由表中有无路径
- 默认路由 0.0.0.0
- 丢弃,报告转发分组出错
无分类编址CIDR

CIDR记法:IP地址后加上“/”,然后写上网络前缀(可以任意长度)的位数。 e.g. 128.14.32.0/20 
应用
- 构成超网:将多个子网聚合成一个较大的子网,叫构成超网或路由聚合。
方法:将网络前缀缩短(所有网络地址取交集)
例子:
取交集,其长度为到第一次不同之前为止。 C
- 最长前缀匹配
使用CIDR可能会得到几个匹配结果,从所有网络掩码按位相与,选择具有最长网络前缀的路由。
ARP协议
由于在实际网络的链路上传输数据帧时,必须使用MAC地址
ARP协议:完成主机或路由器IP到MAC的映射【解决下一跳走哪】
ARP协议使用过程
检查ARP高速缓存,有对应表项则写入MAC帧,没有则用目的MAC地址为FF-FF-FF-FF-FF-FF的帧封装并广播ARP请求分组,同一局域网中所有主机都能收到该请求。目的主机收到请求后就会向源主机单播一个ARP响应分组,源主机收到后将此映射写入ARP缓存。
使用情况分类
- A发给本网络的B:用ARP找到B的MAC地址
- A发给另一网络的B:用ARP找到本网络上一个路由器(网关)的MAC地址
- 路由器发给本网络的A:用ARP找到A的MAC地址
- 路由器发给另一网络的B:用ARP找到下一个路由器的(网管)的MAC地址
ARP例题
主机发送IP数据报给主机B,经过5个路由器,请问使用了几次ARP协议?【默认路由器中无分组】
6次
【A - ROUTER - B】
A经过路由器发送IP数据报给B时,其MAC地址分别为:
- A -> ROUTER:【源MAC:A的MAC地址,目的MAC:ROUTER的MAC】
- ROUTER -> B:【源MAC:ROUTER的MAC地址,目的MAC:B的MAC】
DHCP协议(Dynamic Host Configuration Protocol)
DHCP协议 是 应用层协议,使用client/server方式,客户端与服务端通过广播交互,基于UDP,即插即用。
使用流程
- 主机广播DHCP发现报文
- DHCP服务器广播DHCP提供报文
- 主机广播DHCP请求报文
- DHCP服务器广播DHCP确认报文
使用UDP的原因:
执行初期,客户端不知道服务器端的IP地址
ICMP(Internet Control Message Protocol)
种类
- 终点不可达。无法交付
- 源点抑制。路由器或主机由于拥塞而丢数据报,使发送方发送速率放慢。
- 时间超过。①路由器收到TTL=0的数据报;②当终点在预先时间内不能收到一个数据报的全部数据时。
- 参数问题。首部字段有问题。
- 改变路由(重定向)。让主机知道下次数据报应该发送的路由。

不发送ICMP差错报文【选择】
- 对ICMP差错报告报文不再发送ICMP差错报告报文
- 对第一个分片的数据报片的所有后续数据报片都不发送。
- 对具有组播地址的数据报不发送
对具有特殊地址(127.0.0.0或0.0.0.0)的数据报不发送ICMP差错报告报文
ICMP询问报文
回送请求和回答报文:测试目的站是否可达以及了解相关状态
- 时间戳请求和回答报文
常见应用
- PING:测试主机之间的连通性,使用ICMP回送请求与回答报文
- Traceroute:跟踪一个分组从源点到终点的路径,使用ICMP时间超过差错报文
IPV6
【简单看看】
与IPv4区别
- 地址扩充为 128位(16B)
- 移除 校验和 字段
- 可选字段移出首部,变成了扩展首部,路由器不检查扩展首部
- 即插即用(自动配置),不需要DHCP协议
- 首部长度必须是 8B的整数倍
- IPv6只能在主机处分片,IPv4可在路由器和主机处分片
- 当IPv6分组过大时,使用ICMPv6:”分组过大”报文
- 从一般意义上来说,IPv6不能分片
取消总长度字段,改用 有效载荷长度字段 = 扩展首部 + 数据
IPv6地址表示形式
一般形式:冒号十六进制:

压缩形式:将连续的进行压缩,但要保证每组至少有一个数字。

零压缩:一连串的0可以压缩为双冒号(但双冒号只能出现一次

IPv6地址类型
- 单播:一对一
- 多播:一对多
- 任播:一对多,但只交给其中的一个
IPv4向IPv6地址过度
- 双栈协议:在一台设备上同时启用IPv4与IPv6协议栈
- 隧道技术:将其他协议的数据帧或包 重新封装 通过隧道发哦是哪个
路由算法与路由协议
路由算法
路由表:
动态路由算法
- 链路状态路由算法 OSPF 【全局】
所有路由器掌握完整的网络拓扑和链路费用信息。
- 距离向量路由算法 RIP 【分散】
路由器只掌握物理相连的邻居及链路费用。
自治系统AS:在单一技术管理系的一组路由器,自治系统内部使用单独协议,外部使用不同协议。
路由选择协议
- 内部网关协议 IGP: RIP、OSPF
- 外部网关协议 EGP:BGP
交付方式
- 直接交付
- 间接交付
- 判断方法:将源IP与目的IP分别与子网掩码进行“与”操作,若得到的子网地址相同,则直接交付;若不同,则间接交付。
RIP协议【基于距离】
应用层协议,使用UDP传送数据。
只适用于小互联网。
每一个路由器维护从自己到其他每一个目的网络的唯一最佳距离记录。
【距离:通常为“跳数”,从源端口到目的端口所经过的路由器个数。距离为16表示网络不可达】
交换信息
- 仅和相邻路由器交换信息。
- 路由器交换的信息是自己的路由表。
- 每30s交换一次路由信息。若180s没收到邻居路由器通告,则判定邻居无了
距离向量算法
- 修改RIP报文所有表项【每个RIP报文最多可以包括25个路由表项】
对地址为X的路由器发来的RIP报文,修改:把“下一跳”字段的地址改为X,并把所有的“距离”字段 +1
- 对修改后的的报文,进行:
- 若路由表中没有当前表项,直接插入
- 若有当前表项,查看路由表下一跳地址:
- 若二者下一跳相等,则使用当前表项替换路由表中表项
- 若二者下一跳不等,则选择距离更小者
- 若180S还没收到相邻路由器X的路由表,把X记为不可达,距离设置为16
【例题】
分别在向量上,加上C到各节点的距离。
RIP特点:当网络出现故障时,经过比较长的时间才能将此信息传送给所有路由器。
比如: 到Net1有且仅有R1一条,但R1此时坏掉,却未来得及向R2发送更新信息。R2向Net1发送数据时,让R1误以为R2可以到达Net1,于是R1更新到Net1的路由表长为R2发来数据+1。二者数据不停叠加至为16时,才会意识到网络出现故障
【慢收敛是导致路由回路的根本原因】
OSPF协议【开放最短路径优先】
链路状态协议,适用于互联网规模大
OSPF特点:
- 使用洪泛法向AS内所有路由器发送信息,路由器传给自己的邻居,邻居传给自己的邻居。【和谁交换】
- 发送的是相邻的所有路由器的链路状态【交换什么】
- 只有链路状态发生变化时,路由器才洪泛信息。【多久交换】
收敛速度很快
路由算法
- 路由器通过【问候HELLO分组】发现邻居节点
- 设置到每个邻居的成本度量metric
- 构造一个【数据库(DD)描述分组】,向邻站给出自己链路状态数据库中所有链路状态的摘要信息。
- 邻站收到【DD分组】后,存在自己没有或者更新的,发送【LSR链路状态请求分组】,请求进行更新。
- 收到邻站【LSR分组】后,发送【LSU链路状态更新分组】进行更新
- 邻站更新完毕后,返回【LSAck链路状态确认分组】进行确认
只要有一个路由器状态发生变化:
- 洪泛发送【LSU链路状态更新分组】
- 更新完毕后,其他站返回【LSAck】
- 使用Dijkstra根据自己链路状态到其他节点间的最短路径。 【不会考查】
OSPF划分自治区域
利用洪泛法交换链路状态信息的范围局限在每个区域而非整个自治系统。处在上层的区域为主干区域。
BGP协议
应用层协议,借助TCP传送,需要先建立TCP连接
- 和其他AS邻站的BGP发言人(边界路由器)交换信息【和谁】
- 交换网络可达性信息,即到达某个网络所要经过的一系列AS【交换什么】
- 发生变化时【多久交换】
特点
- 支持CIDR,需要包含目的网络前缀
- 首次交换时,交换整个路由表。其他时候,只在发生变化时更新有变化的部分
BGP-4的四种报文
- OPEN:与另一个BGP发言人建立关系,并认证发送方
- UPDATE:通告新路径或撤销原路径
- KEEPALIVE:在无UPADTE时,周期性验证邻站的连通性
- NOTIFICATION:报告先前报文的差错;也可关闭连接
三者比较

【RIP应用层,OSPF网络层,BGP应用层】
IP组播
不提供可靠传输,仅应用于UDP
对组播数据报不馋为ICMP差错报文
并非所有D类都可以作为组播地址
IP组播地址
属于组播组的设备将被分配一个组播组IP地址。地址范围为224.0.0.0 ~ 239.255.255.255(D类地址),只能作为分组的目标地址。原地址总是单播地址。
IP组播类型
- 本局域网进行硬件组播
- 在因特网范围内进行组播
硬件组播
组播IP地址也需要相应的组播MAC地址在本地网络中实际传输帧,组播MAC地址以01-00-5E打头。
TCP/IP协议使用的以太网多播地址范围:01-00-5E-00 到 01-00-5E-7F-FF-FF
【考点:D类IP地址与MAC之间的映射】
由于D类IP地址的5位为可变位,则同一个组播MAC地址可能对应不同的D类IP地址IGMP协议与组播路由选择协议
[IGMP: Internet Group Management Protocol,因特网组管理协议]IGMP工作过程
- 某主机想要加入组播组时,该主机向组播组的组播地址发送IGMP报文,申请加入
组播路由器收到IGMP后,利用组播路由选择协议把这组成员关系发给其他组播路由器
- 组播路由器周期性探询本地局域网上的主机
组播路由选择协议
找出以源主机为根结点的组播转发树。
- 基于链路状态路由选择
- 基于距离-向量的具有选择
- 协议无关的组播(稀疏/密集)
移动IP
移动IP技术是移动结点以固定的网络IP地址,实现跨越不同网段的漫游功能。
- 移动结点:具有永久IP地址的移动设备
- 归属代理(本地代理): 一个移动结点的永久”居所”,称为归属网络。归属网络中代表移动结点执行移动管理功能的实体叫归属代理。
- 永久地址(归属地址/住地址):移动站点在归属网络中的原始地址
- 外部代理:在外部网络中帮助移动结点完成移动管理功能
- 转交地址:外部代理地址

【代理发现,注册,分组路由,注销】
当移动结点处于外部网络时,分组转发过程:
- 路由选择处理机
- 路由选择协议
- 路由表
- 需要包含到达 目的网络 的下一跳地址
- 默认路由:0.0.0.0[目的地址] 0.0.0.0[子网掩码]
- 分组转发部分
- 输入端口
- 输出端口
- 交换结构:根据转发表(由路由表得来)对分组进行转发
- 若收到RIP/OSPF分组,则把其交给路由器选择处理机处理
- 路由器可以互联两个不同网络层协议的网段
- 网桥可以互联两个物理层和链路层不同的网段
- 集线器不能互联两个物理层不同的网段
