网络层
概念
主要任务:把分组从源端传到目的端,为分组交换网上的不同主机提供通信服务
传输单位:数据报
功能
分组转发与路由选择:寻找最佳路径
分组转发:将分组从一个输入链路接口转移到适当的输出链路接口的路由器本地动作(硬件实现)
路由选择:确定分组从源到目的地址所采取的端到端路径的网络范围选择(软件实现)
就好像自驾从新疆到南京,选择顺着河西走廊一路出来,还是选择一头扎进内蒙古再穿下来,还是说进入青海,走一趟川渝,这个就是路由选择;而进入南京前,选择哪个路口下高速,就是分组转发
异构网络互联
拥塞控制
数据交换方式
通过大量的路由器将各种异构网络(WiFi,校园网,流量)连接起来
电路交换
通信设备通过电路和交换设备,搭建一条物理上的通路,进行数据交换。在数据交换的过程中,交换双方独占这个通信资源
- 建立连接(呼叫/电路建立)
- 通信
- 释放连接(拆除电路)
优点:
- 通信时延小:通信双方独占资源,直接通信,没有等待
- 有序传输
- 没有冲突:独占资源
- 实时性强
缺点:
- 建立连接时间长
- 线路独占,使用效率低
- 灵活性差:通信线路固定,如果线路上某台设备宕机,则通信线路整体失效
- 无差错控制能力:通信线路只会机械的交换数据,不会对错误信息进行控制纠错
报文交换
报文:源应用发送的信息整体(QQ 发送的 pdf,下载的 exe)
优点:
- 无需建立连接:与电路交换的区别
- 存储转发:通信线路空闲时直接转发,线路阻塞时先存储后转发
- 动态分配线路:不拘泥于固定路线,选择通畅的最佳路线
- 线路可靠性较高:选择正常工作的通畅线路
- 线路利用率较高:通信双方不独占通信线路,防止资源浪费
- 多目标服务:一份报文可以转发到多个目的端
缺点:
- 有存储转发时延:线路忙碌时需要等待
- 报文大小不定,需要网络节点有较大缓存空间
分组交换
分组:把大的报文分割成小的数据块
优点:
- 无需建立连接:与电路交换的区别
- 存储转发:通信线路空闲时直接转发,线路阻塞时先存储后转发
- 动态分配线路:不拘泥于固定路线,选择通畅的最佳路线
- 线路可靠性较高:选择正常工作的通畅线路
- 线路利用率较高:通信双方不独占通信线路,防止资源浪费
- 相对于报文交换,存储管理更容易:分组更小,对于缓存要求低
缺点:
- 有存储转发时延
- 需要传输额外的信息量:源地址、目的地址、分组编号等信息
- 乱序到目的主机时,要对分组排序重组
分组交换包含数据报方式和虚电路方式
数据报方式
为网络层提供无连接服务
- 无连接服务:不事先确定传输线路,每个分组独立确定传输线路,不同分组传输线路可能不同
- 每个分组携带源和目的地址
- 路由器根据分组的目的地址转发分组:基于路由协议/算法构建转发表(内含目的网络地址对应的链路接口,实时更新);根据转发表,每个分组独立选择链路接口进行发送
虚电路方式
为网络层提供连接服务
首先为分组确定传输线路(建立连接),然后沿该线路传输一系列分组,传输结束后拆除连接(电路交换 + 分组交换)
- 建立虚电路连接:源主机发送呼叫请求(分组形式)并接收到呼叫应答(分组形式)后建立连接;建立好的链路上的结点维持一张虚电路表,每一项记录了一个建立的虚电路的信息(虚电路号等信息)
- 数据传输:全双工通信,分组携带虚电路号(而非目的地址),检索每个结点的虚电路表,选择链路接口
- 释放虚电路连接
分组交换优于报文交换?
报文:
10000bit/1000bps=10s,即从一个设备传输到链路上需要 10s
从源端和两个交换设备传输到链路上,共需 30s
分组:
10000bit/10bit=1000,即 1000 个分组
10bit/1000bps=0.01s,即从一个设备传输到链路上需要 0.01s
源端在源源不断的将分组送上链路,即最后一个分组上链路且到达目的端时,传输结束
最后一个分组从源端传输到链路上需要 10s,加经过两个交换设备,共需 10.02s
三种方式对比总结
- 报文交换和分组交换都采用存储转发
- 传送数据量大,且传送时间远大于呼叫时,选择电路交换。电路交换传输时延最小
- 从信道利用率看,报文交换和分组交换优于电路交换,其中分组交换时延更小。
IP 协议
TCP/IP 协议栈
IPv4 地址
IP 地址:全世界唯一的 32 位/4 字节标识符,标识路由器主机的接口
IP 地址::={< 网络号 >< 主机号 >}
分类的 IP 地址
通过 IP 地址的网络号分类,可以知道主机号位数,即通过 IP 地址分类变相得知掩码
最大可用网络数:A 类除去 0 和 127 不可用,B 类除去 128.0(全 0),C 类除去 192.0.0(全 0)
最大主机数:除去网络地址(全 0)和广播地址(全 1)
私有的 IP 地址
网络掩码
利用网络掩码,根据主机 IP 地址确定网络信息,即网络号对应 1,主机号对应 0
例如:
主机 IP 地址:172.25.114.250
网络掩码:255.255.0.0 (/16)
此网络掩码代表 IP 地址前 16 位是网络号,剩下 16 位是地址号
将主机 IP 地址和网络掩码转换为二进制,并逐位进行 AND 操作,得到网络地址
有时候没有给出网络掩码,可以根据属于 A 类还是 B 类 C 类网络,推算网络地址
DHCP 协议
动态主机配置协议 DHCP 是应用层协议,使用客户/服务器方式,客户端和服务端通过广播方式进行交互,基于 UDP。
DHCP 提供即插即用联网的机制,主机可以从服务器动态获取 IP 地址、子网掩码、默认网关、DNS 服务器名称与 IP 地址,允许地址重用,支持移动用户加入网络,支持在用地址续租
主机从服务器获取的 IP 地址在一定期限内可以使用,到期后可以重新申请或续租
流程:
- 主机广播 DHCP 发现报文:寻找网络中的主机
- DHCP 服务器广播 DHCP 提供报文:网络中有可用 IP 地址的服务器都会拟分配一个 IP 地址及相关设置
- 主机广播 DHCP 请求报文:主机接收最先收到的 IP 地址,向所有服务器广播请求报文(一是为了向提供 IP 地址的服务器请求;二是为了告诉其他服务器收回提供的 IP 地址
- DHCP 服务器广播 DHCP 确认报文:服务器正式将 IP 地址分配给主机
IP 数据报格式
版本:IPv4 / IPv6
首部长度:表现形式是 4 位二进制,从 5 开始,最大为 15,单位是 4B
首部长度为 5 时,5x4B=20B,即首部最小为 20 字节
首部长度为 15 时,15x4B=60B,即首部最大为 60 字节
区分服务:指示期望获得那种类型的服务
总长度:首部 + 数据部分,单位为 1B,最大
标识:同一数据报的分片使用同一表示
标志:3 位,只有 2 位有意义 X DF MF
中间位 DF(Don’t Fragment):DF=1,禁止分片;DF=0,允许分片
最低位 MF(More Fragment):MF=1,分片未结束;MF=0,代表最后一片
片偏移:13 位,指出较长分组分片后,某片在原分组中的相对位置,以 8B 为单位
除了最后一个分片,前面的分片长度一定是 8B 的整数倍
假设为 0000000000001,1x8B=8B
即这个分片开始的位置是整个 IP 数据报的第 8 个字节开始的位置;结束位置未知,但是下一个分片有起始位置
生存时间(TTL):IP 分组的保质期,经过一个路由器则 -1,变成 0 则丢弃
防止无法交付的数据报在网络中一直传递,会消耗网络资源
协议:数据部分的协议,对应一定的字段值(TCP—6,UDP—17)
首部检验和:只检验首部,由线路上的每个路由器检验首部,查看数据报是否出错
可选字段:0 到 40B,用来支持排错、测量以及安全等措施
填充:全 0,把首部补成 4B 的整数倍
IP 数据报分片
最大传送单元 MTU:链路层数据帧可封装数据的上限
当 IP 数据报大小过大,超过 MTU 会造成数据链路层无法传输,返回差错报告;因此需要分片
设有 3800B 的数据,需要长度不超过 1420B 的数据报片
IPv6
数据报格式
版本:指明协议版本为 6
优先级:区分数据报的类别和优先级
流标签:所有属于同一个流的数据报都具有相同的流标签
流:互联网络上从特定的源点到特定终点的一系列数据报
有效载荷长度:字面意思
下一个首部:标识下一个扩展首部或上层协议首部
跳数限制:IPv4 中的 TTL
IPv6 和 IPv4
- IPv6 将地址从 32 位(4B) 扩大到 128 位(16B),更大的地址空间
- IPv6 将 IPv4 的校验和字段彻底移除,以减少每跳的处理时间
- IPv6 将 IPv4 的可选字段移出首部,变成了扩展首部,成为灵活的首部格式,路由器通常不对扩展首部进行检查,大大提高了路由器的处理效率
- IPv6 支持即插即用(即自动配置),不需要 DHCP 协议
- IPv6 首部长度必须是 8B 的整数倍,IPv4 首部是 4B 的整数倍
- IPv6 只能在主机处分片,IPv4 可以在路由器和主机处分片
- ICMPv6 附加报文类型『分组过大』
- IPv6 支持资源的预分配,支持实时视像等要求,保证一定的带宽和时延的应用
- IPv6 取消了协议字段,改成下一个首部字段
- 1Pv6 取消了总长度字段,改用有效载荷长度字段
- IPv6 取消了服务类型字段
地址标识形式
地址解析协议 ARP
链路上发送数据帧时必须使用 MAC 地址,ARP 协议完成主机/路由器的 IP 地址到 MAC 地址的映射(解决下一跳走哪的问题)
使用过程:
- 检查 ARP 高速缓存,有对应表项则写入 MAC 帧(数据链路层的帧),没有则用目的 MAC 地址为 FF-FF-FF-FF-FF-FF 的帧封装并广播 ARP 请求分组,同一局域网中所有主机都能收到该请求目的
- 目的主机收到请求后就会向源主机单播一个 ARP 响应分组
- 源主机收到后将此映射写入 ARP 缓存(10-20min 更新一次)
四种典型情况:
- 主机 A 发给本网络的主机 B:用 ARP 找到主机 B 的硬件地址
- 主机 A 发给另一网络的主机 B:用 ARP 找到本网络上一个路由器(网关)的硬件地址
- 路由器发给本网络的主机 A:用 ARP 找到主机 A 的硬件地址
- 路由器发给另一网络的主机 B:用 ARP 找到本网络上的一个路由器的硬件地址
在局域网内通信
- PC1 通过 ARP 高速缓存得到目的 IP 地址的 MAC 地址,添加到帧上
- 当 ARP 高速缓存上不存在对应的 MAC 地址时,PC1 通过数据链路层向目的 MAC 地址字段添加广播地址(FF-FF-FF-FF-FF-FF)
- 发送广播 ARP 请求分组到局域网内的每一台主机
- 对应的 PC3 获得广播 ARP 请求分组后,传回自己的 MAC 地址,即单播 ARP 响应分组
- 根据 MAC 地址发送数据
在局域网外通信
- PC1 发送包含默认网关 6 的 MAC 地址的帧,路由器接收后改变源 MAC 地址为 MAC7,目的 MAC 地址为 MAC8
- 下一个路由器接收到后,构建并发送针对 IP5 的广播 ARP 请求分组(源 IP 地址为 IP9,目的 IP 地址为 IP5,因为需要回收单播 ARP 响应分组,源 MAC 地址为 MAC9,设置目的 MAC 地址为广播地址),PC5 发回单播 ARP 响应分组
- 路由器得到 PC5 的 MAC 地址后,封装进数据帧(这个数据帧指 PC1 发出的包含数据的帧)里并发给 PC5
我不清楚以下步骤是否正确,只是个人理解:
先将需要发送的数据帧 ① 放在网关 9,然后通过构建新的广播 ARP 请求分组 ② 来获得 PC5 的 MAC 地址,将获得的 MAC 地址放在数据帧 ① 中,发送给 PC5
《TCP/IP 详解》中没有看到相关过程,《计算机网络:自顶向下》关于局域网外的通信过程描述也不是很详细
网际控制报文协议 ICMP
为了更有效地转发 IP 数据报和提高交付成功的机会,ICMP 协议支持主机/路由器:发送差错/异常报告和网络探寻
ICMP 差错报告报文:
- 终点不可达:当路由器或主机不能交付数据报时就向源点发送终点不可达报文
- 时间超过:当路由器收到生存时间 TTL=0 的数据报时,除丢弃该数据报外,还要向源点发送时间超过报文。当终点在预先规定的时间内不能收到一个数据报的全部数据报片时,就把已收到的数据报片都丢弃,并向源点发送时间超过报文。
- 参数问题:当路由器或目的主机收到的数据报的首部中有的字段的值不正确时,就丢弃该数据报,并向源点送参数问题报文。
- 改变路由(重定向):路由器把改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器(可通过更好的路由)
ICMP 询问报文:
- 回送请求和回答报文:主机或路由器向特定目的主机发出的询问,收到此报文的主机必须给源主机或路由器发送 ICMP 回送回答报文。测试目的站是否可达以及了解其相关状态
- 时间戳请求和回答报文:请某个主机或路 由器回答当前的日期和时间。用来进行时钟同步和测量时间
应用:
- ping:测试两个主机之间的连通性,使用了 ICMP 回送请求和回答报文
- Traceroute:跟踪一个分组从源点到终点的路径,使用了 ICMP 时间超过差错报告报文
划分子网和构建超网
子网划分和子网掩码
子网划分:对二级 IP 地址(网络号,主机号)中的主机号划分为(子网号,主机号),表现为三级 IP 地址(网络号,子网号,主机号)
划分子网后,对外表现仍然为一个网络,即外界看不见本单位内的子网
子网掩码:即网络掩码,在三级 IP 地址中,子网号也对应 1
根据 IP 地址开头,判断 IP 地址是 A 类还是 B 类 C 类,可以得到网络号位数
通过子网掩码,可以得出子网号位数和主机号位数
通过子网转发
- 路由器提取数据报的目的 IP 地址
- 直接交付:根据各个子网的子网掩码对目的 IP 地址做与运算,结果与子网地址相等时寻找子网下与目的 IP 地址相等的主机
- 直接交付失败,寻找特定主机路由:路由器下有没有一个特殊的 IP 地址,和目的 IP 地址相等
- 特定主机路由失败,检测路由表中有无路径
- 通过默认路由 0.0.0.0 处理,发送给其他路由器
- 根据 TTL(生存周期)决定是否丢弃数据报,并报错
啥是特定主机路由?
一般来说,路由器的路由表记录的是子网 IP 地址。寻找某一个主机时,针对 IP 地址通过掩码计算得出子网 IP 地址,再核对路由表找到具体的子网,再找到主机
特定主机路由则是在路由表上直接标注主机的 IP 地址,且设置掩码为
255.255.255.255
,相当于将一个子网特化为主机 IP 地址,直接找到这个特定主机
无分类编址 CIDR
- 消除了传统的 A 类、B 类和 C 类地址以及划分子网的概念
- 直接由(网络前缀,主机号)组成
- 写法例:128.14.32.0/20(由/后面的数字表示网络前缀的长度)
- CIDR 地址块:网络前缀都相同的连续 IP 地址组成
最小地址和最大地址不可以作为主机地址使用
超网
将多个子网聚合成一个较大的子网,通过将网络前缀缩短
网络前缀长度都为 17,网络 1 和网络 2 前 16 位一致,看后面
网络 1 为中 0 转换为二进制为 00000000
网络 2 为中 128 转换为二进制为 10000000
可以看出,第 1 位(即总的第 17 位)不同,则向前缩短一位得到超网
即超网是 206.1.0.0/16
最长前缀匹配
查找路由表可能得到几个匹配结果,应该选择具有最长网络前缀的路由,前缀越长,地址块越小,路由越具体
A 和 B 明显符合,看 C
C 中前缀长度标注为 22 位,则除去 132.19,还剩下 6 位
232 的二进制是 1110 1000,则网络前缀的后 6 位是 1110 10
题目中的 237 的二进制是 1110 1101,它的前六位与网络前缀的后 6 位不符合,则 C 错误
选择 B
网络地址转换 NAT
网络地址转换 NAT ( Network Address Translation) :在专用网连接到因特网的路由器上安装 NAT 软件,安装了 NAT 软件的路由器叫 NAT 路由器,它至少有一个有效的外部全球 IP 地址
通过 NAT 发送信息:
- 专用网中的主机在数据报中封装源 IP 地址(192.168.0.3)、目的 IP 地址(B 主机,213.18.2.4)和端口号(30000)
- NAT 路由器通过 NAT 转换表,将数据报中的源 IP 地址和端口号转换为(172.18.1.5:40001),发送到因特网中
- 同理,对于 B 主机发送的数据报,NAT 路由器转换数据报中的信息,并传给专用网中的主机
路由算法与路由协议
路由协议
自治系统 AS:在单一的技术管理下的一组路由器,而这些路由器使用一种 AS 内部的路由选择协议和共同的度量以确定分组在该 AS 内的路由,同时还使用一种 AS 之间的路由协议以确定在 AS 之间的路由
一个 AS 内的所有网络都属于一个行政单位来管辖,一个自治系统的所有路由器在本自治系统内都必须连通
路由选择协议:
- 内部网关协议 IGP:一个 AS 内使用(RIP、OSPF)
- 外部网关协议 EGP:AS 之间使用(BGP)
即因特网分为很多个 AS,这些 AS 之间的主机用特定的 IGP 传输数据,防止 AS 外的人知道;而 AS 之间用特定的 EGP 传输数据,使之互联互通
路由算法
用于为路由表/转发表选择最佳的路径
分为静态路由算法和动态路由算法:
静态路由算法(非自适应路由算法),由管理员手工配置路由信息
优点:简便、可靠,在负荷稳定、拓扑变化不大的网络中运行效果很好,广泛用于高度安全性的军事网络和较小的商业网络
缺点:路由更新慢,不适用大型网络
动态路由算法(自适应路由算法),路由器间彼此交换信息,按照路由算法优化出路由表项
优点:路由更新快,适用大型网络,及时响应链路费用或网络拓扑变化
缺点:算法复杂,增加网络负担
动态路由算法有全局性和分散性:
- 全局性,链路状态路由算法,所有路由器掌握完成的网络拓扑结构和链路费用信息
- 分散性,距离向量路由算法,路由器只掌握物理相邻的邻居及链路费用
RIP 协议与距离向量算法
RIP 协议
RIP 是一种分布式的基于距离向量的路由选择协议,是因特网的协议标准,最大优点是简单
RIP 协议要求网络中每一个路由器都维护从它自己到其他每一个目的网络的唯一最佳距离记录(即一组距离)
距离:通常为『跳数』,即从源端口到目的端口所经过的路由器个数,经过一个路由器跳数 +1。从一路由器到直接连接的网络距离为 1。RIP 允许一条路由最多只能包含 15 个路由器,因此距离为 16 表示网络不可达
RIP 协议只适用于小互联网
工作:
- 仅和相邻路由器交换信息
- 路由器交换的信息是自己的路由表
- 每 30 秒交换一次路由信息,然后路由器根据新信息更新路由表。若超过 180 秒没收到邻居路由器的通告,则判定邻居没了,并更新自己路由表
路由器初始化时,只知道直接连接的网络的距离(距离为 1),相连的每一个路由器也和数目有限的相邻路由器交换并更新路由信息;若干次更新后,所有路由器会知道本自治系统的网络情况,即收敛
特点:当网络出现故障时,要经过比较长的时间(例如数分钟)才能将此信息传送到所有的路由器,慢收敛
当与路由器 R1 直接连接的网络 Net1 出现故障时,路由器 R1 更新路由表,到 Net1 的距离为 16,同时发送更新信息给相邻路由器 R2
同时,R2 发送更新信息回来,显示 R2 到 Net1 的距离是 2(网络正常情况下确实如此)
R1 接收信息以后,会误认为 R2 可以联通 Net1,更新自己的路由表,转向以 R2 为中介联通 Net1,距离为 3;并发送更新信息给相邻路由器 R2
R2 接收信息以后并不知道其中的弯弯绕绕,于是也 +1,更新距离为 4
来回传递,来回更新距离
最后距离更新成 16,俩路由器才知道是网络故障连不上了
报文格式
距离向量算法
修改相邻路由器发来的 RIP 报文中所有表项
对地址为 X 的相邻路由器发来的 RIP 报文,修改此报文中的所有项目:把『下一跳』字段中的地址改为 X,并把所有的『距离』字段 +1
对修改后的 RIP 报文中的每一个项目,进行以下步骤:
- R1 路由表中若没有 Net3,则把该项目填入 R1 路由表
- R1 路由表中若有 Net3,则查看下一跳路由器地址:
若下一跳是 X,则用收到的项目替换源路由表中的项目(更新当前路径情况)
若下一跳不是 X,原来距离比从 X 走的距离远则更新,否则不作处理(从两条路径中选出最短路径)
若 180s 还没收到相邻路由器 X 的更新路由表,则把 X 记为不可达的路由器,即把距离设置为 16
返回(30 秒更新一次)
例题 1:
根据路由器 R6 的路由表,以及相邻路由器 R4 发来的路由更新信息,更新路由器 R6 的路由表
根据路由更新信息,进行距离 +1 及修改下一跳,得到修改版,然后对比原来的 R6 路由表,更新及修改路线
例题 2:
根据红框,得到
C 到 B:(11,6,14,18,12,8)
C 到 D:(19,15,9,3,12,13)
C 到 E:(12,11,8,14,5,9)
由此得到答案:(11,6,0,3,5,8)
第三个是 C,填 0
OSPF 协议与链路状态算法
OSPF 协议
开放最短路径优先协议,使用分布式的链路状态协议
工作:
使用洪泛法(洪水泛滥般)向自治系统内所有路由器发送信息,即路由器通过输出端口向所有相邻的路由器发送信息,而每一个相邻路由器又再次将此信息发往其所有的相邻路由器
最终整个区域内所有路由器都得到了这个信息的一个副本
发送的信息就是与本路由器相邻的所有路由器的链路状态(本路由器和哪些路由器相邻,以及该链路的度量/代价——费用、距离、时延、带宽等)
只有当链路状态发生变化时,路由器才向所有路由器洪泛发送此信息
最终,所有路由器都能建立一个链路状态数据库,即全网拓扑图
区域
OSPF 将一个自治系统再划分为若干个更小的范围,叫区域;每个区域有一个 32 位区域标识符;一个区域内的路由器最好不超过 200 个
分组
特点:
- 每隔 30min,要刷新一次数据库中的链路状态
- 由于一个路由器的链路状态只涉及到与相邻路由器的连通状态,因而与整个互联网的规模并无直接关系。因此当互联网规模很大时,OSPF 协议要比距离向量协议 RIP 好得多
- OSPF 不存在坏消息传的慢的问题,它的收敛速度很快
链路状态算法
- 每个路由器发现它的邻居结点【HELLO 问候分组】,并了解邻居节点的网络地址
- 设置到它的每个邻居的成本度量 metric
- 构造【DD 数据库描述分组】,向邻站给出自己的链路状态数据库中的所有链路状态项目的摘要信息
- 如果 DD 分组中的摘要自己都有,则邻站不做处理;如果有没有的或者是更新的,则发送【LSR 链路状态请求分组】请求自己没有的和比自己更新的信息
- 收到邻站的 LSR 分组后,发送【LSU 链路状态更新分组】进行更新
- 更新完毕后,邻站返回一个【LSAck 链路状态确认分组】进行确认
只要一个路由器的链路状态发生变化:
- 泛洪发送【LSU 链路状态更新分组】进行更新(发生变化的路由器向相邻路由器发送,相邻路由器向它的)
- 更新完毕后,其他站返回一个【LSAck 链路状态确认分组】进行确认
- 使用 Dijkstra 根据自己的链路状态数据库构造到其他节点间的最短路径
RIP 协议中每个路由器只知道最短路径;而 OSPF 协议中每个路由器都有一个链路状态数据库,记录整个网络的拓扑结构,然后通过特定算法计算最短路径
BGP 协议
- 与其他 AS 的邻站 BGP 发言人交换信息
- 交换的网络可达性的信息,即要到达某个网络所要经过的一系列 AS
- 发生变化时更新有变化的部分
交换信息过程:
BGP 所交换的网络可达性的信息就是要到达某个网络所要经过的一系列 AS(即路径向量)。当 BGP 发言人互相交换了网络可达性的信息后,各 BGP 发言人就根据所采用的策略从收到的路由信息中找出到达各 AS 的较好路由
报文格式
一个 BGP 发言人与其他自治系统中的 BGP 发言人要交换路由信息,就要先建立 TCP 连接,即通过 TCP 传送,然后在此连接上交换 BGP 报文以建立 BGP 会话(session),利用 BGP 会话交换路由信息
特点:
- BGP 支持 CIDR,BGP 的路由表包括目的网络前缀、下一跳路由器,以及到达该目的网络所要经过的各个自治系统序列
- 在 BGP 刚刚运行时,BGP 的邻站是交换整个的 BGP 路由表。但以后只需要在发生变化时更新有变化的部分。这样做对节省网络带宽和减少路由器的处理开销都有好处
BGP—4 的四种报文:
- OPEN(打开)报文:用来与相邻的另一个 BGP 发言人建立关系,并认证发送方
- UPDATE(更新)报文:通告新路径或撤销原路径
- KEEPALIVE(保活)报文:在无 UPDATE 时,周期性证实邻站的连通性;也作为 OPEN 的确认
- NOTIFICATION(通知)报文:报告先前报文的差错;也被用于关闭连接
三种协议比较
① 只求最小距离
② 某个结点的所有链路状态,然后求最佳
③ 求较好的路径
IP 组播(多播)
IP 数据报的三种传输方式
- 单播:单播用于发送数据包到单个目的地,且每发送一份单播报文都使用一个单播 IP 地址作为目的地址。是一种点对点传输方式
- 广播:广播是指发送数据包到同一广播域或子网内的所有设备的一种数据传输方式。是一种点对多点传输方式
- 组播:当网络中的某些用户需要特定数据时,组播数据发送者仅发送一次数据,借助组播路由协议为组播数据包建立组播分发树,被传递的数据到达距离用户端尽可能近的节点后才开始复制和分发。是一种点对多点传输方式
组播提高了数据传送效率,减少了主干网出现拥塞的可能性;组播组中的主机可以是同一个物理网络,也可以来自不同的物理网络(需要组播路由器支持)
IP 组播地址
IP 组播地址让源设备能够分组发送给一组设备;属于多播组的设备被分配一个组播组 IP 地址
组播地址范围为 224.0.0.0~239.255.255.255(D 类地址),一个组播地址只能用作分组的目标地址,源地址是单播地址
- 组播数据报是尽最大努力交付,不提供可靠交付,应用于 UDP
- 对组播数据报不产生 ICMP 差错报文
- 并非所有 D 类地址都可以作为组播地址
硬件组播
组播 MAC 地址:01-00-5E 打头,余下 6 个十六进制更具 IP 组播组地址的最后 23 位转换得到
IGMP 协议
网际组管理协议 IGMP,让路由器知道本局域网上是否有主机(的进程)参加或退出了某个组播组;使用 IP 数据报传递报文
工作:
- 某主机要加入组播组时,该主机向组播组的组播地址发送一个 IGMP 报文,声明自己要称为该组的成员
- 本地组播路由器收到 IGMP 报文后,要利用组播路由选择协议把这组成员关系发给因特网上的其他组播路由器
- 本地组播路由器周期性探询本地局域网上的主机,以便知道这些主机是否还是组播组的成员
- 只要有一个主机对某个组响应,那么组播路由器就认为这个组是活跃的;如果经过几次探询后没有一个主机响应,组播路由器就认为本网络上的没有此组播组的主机,因此就不再把这组的成员关系发给其他的组播路由器
组播路由选择协议
目的:找出以源主机为根结点的组播转发树
对不同的多播组对应于不同的多播转发树;同一个多播组,对不同的源点也会有不同的多播转发树
算法:
- 基于链路状态的路由选择
- 基于距离—向量的路由选择
- 协议无关的组播(稀疏/密集)
移动 IP
移动 IP 技术是移动结点(计算机/服务器等)以固定的网络 IP 地址,实现跨越不同网段的漫游功能,并保证了基于网络 IP 的网络权限在漫游过程中不发生任何改变
移动结点:具有永久 IP 地址的移动设备
归属代理(本地代理):一个移动结点拥有的就『居所』称为归属网络,在归属网络中代表移动节点执行移动管理功能的实体叫做归属代理
外部代理(外地代理):在外部网络中帮助移动节点完成移动管理功能的实体称为外部代理
永久地址(归属地址/主地址):移动站点在归属网络中的原始地址
转交地址(辅地址):移动站点在外部网络使用的临时地址
通信过程:
A 刚进入外部网络:
- 在外部代理登记获得一个转交地址,离开时注销
- 外地代理向本地代理登记转交地址
B 给 A 发送数据报:
- 本地代理截获数据报
- 本地代理再封装数据报,新的数据报目的地址是转交地址,发给外部代理(隧道)
- 外部代理拆封数据报并发给 A(外部代理通过 MAC 地址发送)
A 给 B 发送数据报:
A 用自己的主地址作为数据报源地址,用 B 的 IP 地址作为数据报的目的地址
A 移动到下一个网络:
- 在新外部代理登记注册一个转交地址
- 新外部代理给本地代理发送新的转交地址(覆盖旧的)
- 通信
A 回到了归属网络:
- A 向本地代理注销转交地址
- 按原始方式通信
网络层设备
路由器:一种具有多个输入/输出端口的专用计算机,其任务是转发分组
路由选择:根据所选定的路由选择协议构造路由表,同时经常或定期地和相邻路由器交换路由信息而不断地更新和维护路由表
分组转发:根据转发表(路由表得来),由交换结构对分组进行转发(输入端口到输出端口)
若收到 RIP/OSPF 分组等,则把分组送往路由选择处理机;若收到数据分组,则查找转发表并输出
路由器中的输入或输出队列产生溢出是造成分组丢失的重要原因
若路由器处理分组的速率赶不上分组进入队列的速率,则队列的存储空间最终必定减少到零,这就使后面再进入队列的分组由于没有存储空间而只能被丢弃
三层设备区别
路由器:可以互联两个不同网络层协议的网段
网桥:可以互联两个物理层和链路层不同的网段
集线器:不能互联两个物理层不同的网段