网络层
网络层的主要功能
- 转发:将分组从一个输入链路接口转移到适当的输出链路接口的路由器本地操作
- 选路:分组从源到目的地时,决定端到端路径的网络范围
分组交换机
- 交换机:基于链路层字段中的值作转发决定
- 路由器:基于网络层字段中的值作转发决定
网络层提供尽力而为服务
虚拟电路和数据报
主要区别
网络层提供连接服务的网络:虚电路网络
网络层提供无连接服务的网络:数据报网络
虚电路网络
虚电路的组成
源与目的主机之间的路径、VC号(沿着该路径每段链路一个号码)、沿着该路径每台路由器的转发表表项
该网络的路由器必须为进行中的连接维持连接状态信息,建立新连接时将新的连接项加入转发表中,释放时删除
虚电路的阶段
虚电路建立、数据传送、虚电路拆除
路由器之间传递的用于建立VC的报文称为信令报文,用来交换这些报文的协议成为信令协议
数据报网络
最长前缀匹配原则
转发表由选路算法修改,1-5min更新一次
路由器原理
交换结构
交换技术
- 经内存交换
- 经一根总线交换
- 经一个互联网络交换
经过总线比内存快:不需要经过路由处理器的干预
输出端口
交换结构->排队(缓存管理)->数据链路处理(协议、封装)->线路段接->
排队
输入输出端口若发生排队,必须有一个分组调度程序来选择下一个传送的分组:FCFS、加权公平排队(WFQ)…
缓存满时要弃尾或者删除一个已排队的分组
线路前部阻塞(HOL):若输入端口排队中,之前的的分组被阻塞,则之后的分组也必须等待,即使其输出端口无竞争
IP协议
数据报格式
版本号:IPv4、IPv6
首部长度:存在可选项故需要首部长度,一般为20字节
服务类型
数据报长度(字节):2字节,故数据报理论长度为65535字节
标识、标志、片偏移:IP分片相关
寿命TTL:保证数据报不会永远在网络中循环
上层协议
首部检验和
为什么传输层和网络层都差错检测?
- IP层对IP首部检验,TCP/UDP对整个TCP/UDP报文段进行
- TCP/UDP与IP不一定是同一个协议栈
源和目的IP地址
选项:很少使用
IP数据报分片
原因
链路层的最大传输单元(MTU)比以太网帧最大可承受的数据小
IP片
- 标识:说明属于同一数据包
- 偏移:每个offset表示8字节数据
- 标志:flag==1说明后面还有,flag==0说明是最后一片
在目的地端系统,数据报在IP层完全重构为初始的IP数据报才会被交付给目的地传输层,数据报的重新组装工作在端系统中完成,而不是路由器
若不允许分片,则路由器收到过大的数据报会丢包
子网
分开主机和路由器的每个接口,产生的几个分离的网络岛,每个独立的网络都是一个子网
无类别域间选路CIDR
因特网的地址分配策略:无类别域间选路
将32位地址划分为a.b.c.d/x,x为子网长度,该地址的x最高比特构成IP地址的网络部分,称为该地址的前缀
分类编址
8 16 24比特子网地址的网络成为A B C类网络
- A 10.0.0.0 - 10.255.255.255
- B 172.16.0.0 - 172.31.255.255
- C 192.168.0.0 - 192.168.255.255
子网广播:子网.all 1
子网ID:子网.all 0
动态主机配置协议DHCP
为组织内的主机和路由器接口分配IP地址,还允许主机获取其他信息如其子网掩码、默认网关、DNS服务器地址
也称为即插即用协议
DHCP步骤
- DHCP服务器发现:主机广播(255.255.255.255)DHCP发现报文,源地址为0.0.0.0
- DHCP服务器提供:DHCP服务器用DHCP提供报文进行响应,用广播地址255.255.255.255
- DHCP请求:客户机选择DHCP服务器(可能有多个),发送DHCP请求报文,广播,目的为通知其他用户
- DHCPACK:服务器用DHCPACK对请求报文进行响应,广播,同理
不足
在子网间移动时不能维持与远程应用间的连接
网络地址转换NAT
原理
NAT路由器上维护NAT转换表,表项中包含了端口号和IP地址
e.g
WAN端 | LAN端 |
---|---|
138.76.29.7,5001 | 10.0.0.1,3345 |
… | … |
问题
违反端到端原则,妨碍P2P应用程序:P2P要求任何参与对等发A应该能够向任何其他参与向任何对等参与方B发起一个TCP连接
NAT穿越
对等方A通过一个中间对等方C与对等方B联系,对等方A能够经由对等方C请求对等方B,发起直接返回对等方A的一个TCP连接
互联网控制报文协议ICMP
ICMP结构上位于IP之上,但通常被认为是IP的一部分
TraceRoute
向目的主机一次发送一系列IP数据报,均携带不可到达的UDP端口号的UDP报文,TTL依次增大。若不到达源主机,路由器丢弃该数据报,返回ICMP警告报文,包含路由器名字与IP地址,若到达,源主机从定时器得到往返时延和路由器名字与IP地址
如何知道何时停止:目的主机会向源主机发送一个端口不可到达的ICMP报文,收到时得知应停止
ICMP报文类型
p231 4-23
IPv6
数据报格式与IPv4的不同
- 去除检验和
- 支持选项但在下一个首部 字段中
- 地址扩容 32->128
- 舍弃许多IPv4的首部字段
- 流标签:用于标识一个数据报的流
取消了分片功能、首部检验和,加快IP转发速度
从IPv4向IPv6迁移
双栈 隧道 p235 p236
双栈:直接做转换,但是会丢失字段
隧道:将IPv4作为数据封装进IPv6
选路算法
源主机的默认路由器(第一跳路由器):源路由器
目的主机的默认路由器:目的路由器
选路算法的分类
- 按全局性/分布式分类
- 全局选路算法:链路状态算法(LS),必须知道每条链路的费用
- 分布式选路算法:距离向量算法(DV),每个节点得知与其直接相连链路的费用即可工作
- 按静态动态分类:静态选路算法中,路由变化缓慢,动态算法周期性随拓扑或费用的变化运行
- 按负载敏感/迟钝分类:负载敏感算法中,链路费用动态变化,反应底层链路的拥塞水平,RIP、OSPF、BGP都是负载迟钝的
链路状态选路算法
Dijkstra算法 p240
对于每个节点记录(距离,上一跳路由)
最坏情况:O(n2)
防止振荡:保证并非所有的路由器都同时运行LS算法,但会出现自同步,每台路由器随机发送链路通告的时间来避免自同步
距离向量选路算法
迭代、异步、分布式
dx(y) = min{c(x, v) + dv(y)}
每个节点维护下列选路数据
- 直连每个邻居的费用c(x,y)
- 节点的距离向量:节点到N中所有目的地费用的估计值
- 节点每个邻居的距离向量
每个节点不时向每个邻居发送它的距离向量,当节点收到来自邻居的距离向量时,保存并更新自己的距离向量
毒性逆转
DV可能导致选路环路,从而导致计数到无穷问题
解决:毒性逆转
若z通过y选路到达目的地x,则z通告y:z到x的距离为无穷大
但毒性逆转无法检测到3个或更多节点的环路
LS与DV的比较
- DV中,节点仅与它直接相连的邻居通信,告知对其他所有节点的链路费用;LS中,每个节点与其他所有节点通信,但仅告知直接相连的链路费用
- 报文复杂性:LS O(N*E),DV仅在新联路费用导致与相连的节点最低费用路径改变时才传播改变的链路费用
- 收敛速度:LS O(N2), DV收敛较慢
- 健壮性:LS中,每个节点仅计算自己的转发表,一定程度上是分离的;DV中一个不正确的节点计算值会扩散到整个网络
层次选路
自治系统内部选路协议(RIP、OSPF)intra
- 自治系统内部选路
自治系统间选路协议(BGP) inter
- 从相邻AS获取可达性信息
- 向该AS中所有路由传播可达性信息
- 转发表项(x,I)x为子网,I为从该路由器到网关路由器的位于最低费用路径上的路由器接口
热土豆算法:选择具有最小的最低费用的网关
在转发表中增加AS外目的地的步骤
- 从AS间协议知道经多个网关可达子网x
- 使用来自AS内部协议的选路信息来决定每个网关的最低费用路径的费用
- 热土豆选路:选择具有最小的最低费用的网关
- 从转发表决定通向最低费用网关的接口I,将(x,I)项放入转发表中
因特网中的选路
选路信息协议RIP
一种距离向量协议,用跳数作为其费用测度
用RIP响应报文交换选路更新信息,又称RIP通告
每台路由器维护一张称为选路表的RIP表:
目的子网 | 下一台路由器 | 到目的地的跳数 |
---|---|---|
w | A | 2 |
设置最大跳数为15,防止环路
一旦超过180秒没有监听到其邻居,该邻居不再被认为是可达的,修改本地选路表,通告相邻邻居
RIP使用UDP来传递信息,可当做一个应用层进程
开放最短路径优先OSPF
一个使用洪泛链路状态信息的链路状态协议和一个Dijkstra最低费用路径算法
每当一条链路的状态发生变化,路由器广播链路状态信息
OSPF通告包含在OSPF报文中,OSPF报文直接承载在IP分组中
优点
- 安全
- 允许多条相同费用的路径
- 对单播和多播选路的综合支持
- 支持单个选路域内的层次结构
层次结构的OSPF
4种OSPF路由器
- 内部路由器:位于非主干区域且只执行AS内部选路
- 区域边界路由器:同时属于区域和主干两个区域
- 主干路由器:执行主干中的选路
- 边界路由器:与属于其他AS的路由器交换选路信息
边界网关协议BGP
BGP基础
位于连接端点的两台路由器称为BGP对等方,沿着该连接发送所有BGP报文的TCP连接称为BGP会话
跨越两个AS的BGP会话称为外部BGP会话(eBGP),AS内部的BGP会话称为内部BGP会话(iBGP会话)
BGP中,目的地不是主机而是CDIR化的前缀
路径属性和BGP路由
一个AS有全局唯一的自治系统号(ASN)
重要的BGP属性
- AS-PATH:包含了前缀的通告已经通过的AS,若路由器看到自己的AS包含在AS-PATH中,拒绝该通告,防止循环通告
- NEXT-HOP:一开始某AS-PATH的路由器接口
网关路由器收到一个路由器通告时,它使用输入策略来决定是否接受或过滤改路由,是否设置某种属性
BGP路由选择
按以下顺序消除直至留下一条路由:
- 选最高本地偏好值(设定或从另一路由学习到)
- 选最短AS-PATH的路由
- 选最靠近NEXT-HOP路由器的路由(热土豆选路)
- 用BGP标识符来选择路由
选路策略
任何穿越某ISP主干网的流量必须是源或目的地位于该ISP的某个客户网络,否则这些流量将会搭便车
广播和组播
洪泛
节点向其所有邻居发送该分组的拷贝
若无控制,会出现广播风暴
受控洪泛的方法
- 源节点将其地址和广播序号加入广播分组再发送,接受时检查该分组是否在列表中,在则丢弃;不在则向除来源外的邻居转发
- 反向路径转发(反向路径广播):当一台路由器接收到具有给定源地址的广播分组时,仅当该分组到的的链路正好是位于自己到其源的最短单播路径上,才向其他出链路转发分组