网络层概述
地位: 网络核心功能,运输层功能的实现依赖于网络层提供的服务,即运输层实现端到端 的,网络层实现主机到主机的通信
功能 :实现主机到主机的通信
选路:在全局范畴为主机之间的通信进行选路,选路的结果反映为分组交换机上的转发表
转发:分组交换机上的网络层根据转发表以及分组首部信息,将分组通过对应链路进行转发
状态报告:通过控制消息感知网络通不通、主机是否可达、路由是否可用等状态
虚电路和数据报网络
面向连接:虚电路

组成:源到目的路径、VC(Virtual Circuit)号、路径中路由器的转发表
过程:
建立连接:每当建立起一条虚电路,中间可能会有多个路由器,这些路由器都会建立一 个新项;
拆除连接:当数据传输完毕,A/B想要结束连接,会发送一条拆除指令,该指令包含了指令含义、端口和入VC号,删除该表项后转到下一跳直至所有删除完毕
缺点:建立连接、维护、拆除造成开销;当VC中间出现故障可能会导致该条路径瘫痪
面向无连接:数据报

转发策略:根据目的IP地址
综上来看,互联网的应用环境下,数据报网络更加合适,因为互连更加简单 ,且启用新服务的速度快,不需要维护连接
路由器的工作原理
路由器的结构

输入端口:分散式交换 快速查找从哪个端口出。输入端口处理速率大于交换处理速率时,善生排队。HOL阻塞
内联网络
输出端口:缓存管理:当交换机构转交给输出端口的速率超过输出链路速率,调度原则:数据报传输 调度策略:FIFO、WFQ
IP数据报格式
格式(IPV4)

报文长度相关字段 链路帧最多只允许携带1500字节。超出时,进行IP分片和重组
分片相关字段
标识 :同一个IP分组的标识
标志 :3bit,前2bit有意义。最低位为MF,MF=1即表示后面还有分片的数据报,MF=0表示这已是若干数据报片的最后一个。第二位记为DF,当DF=0时才允许分片
片偏移:每个分片在整个报文(分组)中的位置
生存时间:TTL,每经过一台路由器,TTL-1。减为0时,分组被丢弃。反映从源到目的的跳数。
协议:8bit,指出此数据报携带的数据使用何种协议

源&目的地址:32bit
报文长度相关字段:
首部长度:4bit,单位4字节,取值5~15,表示20~60字节。
总长度:16bit,单位字节。实际报文长度 = 总长度 - 首部长度。
以太网链路帧最大1500byte,当ip包大小超过时,需要进行IP分片和重组。


分片相关字段。标识16bit,标志3bit(前两位:MF = 0 : 后面没分片了,1则还有;DF = 0 :允许分片)片偏移:每个分片在报文段中的位置,以8Byte为单位,要求除最后一片外均为8的倍数
eg: 4000Byte ,链路帧最大长度 1500Byte

IP地址
ip地址:32位主机或路由器的[接口]标识符 只与接口有关,与主机和路由器无关。一个接口一个IP,多接口设备多IP!
结构:高位网络号,低位主机号,点分十进制
分类:

A类:0.... ,7位网络号 B类:128.... C类:192. 。。。
互联网中的ip地址:
1.每一个路由器的端口对应一个子网
2.同一个子网下的所有接口 的网络号相同
3.路由器总是有多个IP地址,因为它有多个端口,每个端口对应一个接口

ipv4&IPV6:ipv4消耗地址空间,且首部长度不定,中间节点需要消耗很多资源用于分组处理
ipv6 扩大地址空间,首部长度固定,实现QoS,不支持分割,分割由端节点负责,需要提前确定所有节点中的最小的最大传输单元(MTU),以此进行划分
IPV6:
数据报格式:
子网划分
背景:ABC类网络等大中小型网络,网络号位数少,主机号位数大,数万台机器难以配置和管理。
目的 :优化网络性能 提高地址利用率 增强安全性 支持多区域部署
做法:从主机号中借用位数,来组成子网号。
如何决定借多少位? -->根据你需要的子网数来决定。比如,需要32个子网,对应2的五次方,需要5位。需要33个,则6位。这样就从一个路由器接口的2级IP的主机号中,划分出去了n位子网。
管理员划分好子网后,主机用户如何知道主机号被子网借了多少位? -->子网掩码。

子网掩码:
作用:对外隐藏子网存在,对内指示网络号和子网号的位置
计算方法:网络号和子网号全置1,主机号置0.
现在,我们对数以万计的接口IP划分了子网,并且每个子网都进行了掩码处理,内部的IP地址对外不可见,外部只可以知道子网地址这个"街道"号,还无法知道内部的'门牌"号。 要想不同"门牌"号的接口进行数据交流,我们还需要做些事情。用一个例子说明:
划分子网后分组转发:

当H1向H2发送分组
首先判断目的地址是否和自己处于一个子网 方法:子网掩码和目的网络地址做与运算 ,和自身地址做相同运算后的结果比较。为什么可以这样做?若我们是一个子网,得到的结果肯定和我一样,是自家人。结果不一样说明不是街坊,但也无法判断是哪个街道的。即,同一个子网下,不同IP的设备,IP和子网掩码做与运算得到的结果相同!此时,H1便可以直接交付。
若不处于1个子网 ,和路由表逐项比对,将H1收到的目的地址和路由表中的子网掩码做与运算 ,看和R1路由表的哪一行匹配。结果若和路由表中的目的网络地址相同,则找到该目的地址

子网聚合:找最大前缀匹配,得到的就是单个网络前缀
无类域间路由
CIDR:
编址格式:
IP地址:= {<网络前缀>, <主机号>}
地址格式:a.b.c.d/x x表示地址中网络部分的位数 #
写法:192.168.0.1/24
寻址:
最长前缀匹配 确定数据包转发的最优路径。其目标是在路由表中找到与目的地址最长匹配的前缀条目
NAT:私有网络和公共网络之间的转换技术
设计动机:减少本地网络和外部网络相连所需要的IP地址成本,以及安全性
网络地址转换NAT:
实现: 发送:外出报文的IP ,端口替换为NAT IP地址和端口
接收:根据NAT转换表 将 进入报文的NAT & IP 替换为相应的IP和端口
原理:
Q:内网如何访问?
A:端口映射、通用即插即用UPnP、中继
ICMP协议:是TCP/IP协议族 的核心协议之一,主要用于在IP主机、路由器之间传递控制消息 ,如网络通断、主机是否可达、路由是否可用等。它通常被认为是IP层的组成部分,但严格来说属于网络层协议 ,封装在IP数据报中传输
选路算法:
目的:给定一组路由器以及连接路由器的链路,从中找到一条从源路由器到目标路由器"好的"路径
分类:全局&分散、静态&动态、负载敏感&迟钝
代表:
链路状态选路算法(OSPF协议)
算法流程:

代码如下:

运行结果:

算法复杂度:

潜在问题:可能产生震荡,因为链路的费用等于链路上的承载的负载,一次运行的结果会影响负载

解决方案:

距离向量选路算法(RIP协议)
概述:距离向量选路算法(Distance Vector Routing Protocol, DVR)是一种分布式路由算法,通过相邻节点间交换路由信息动态更新路径。其核心思想是每个节点维护到其他节点的最短距离及下一跳信息,通过迭代更新优化路由表。
步骤:

初始化
每个节点维护一个距离向量表,记录到所有已知目标节点的最短距离及下一跳节点。初始时,节点仅知道直接相连邻居的链路成本,其他目标距离设为无穷大(∞)。
周期性更新
节点定期向邻居发送自身的距离向量表。接收方节点根据以下规则更新路由表:
- 对于目标节点 j ,当前节点 i 计算通过邻居 k 的新距离:
D_i(j) = \\min \[D_i(j), c(i,k) + D_k(j)\]
其中 ( c(i,k) ) 为节点 i 到邻居 k 的直接链路成本,( D_k(j) ) 为邻居 k 报告的距离。
收敛与稳定性
当所有节点的距离向量表不再变化时,算法收敛。为应对网络变化(如链路故障),节点会重新计算并广播更新,但可能因环路问题导致收敛延迟
特点:"好消息"(找到更短路径)传的快,"坏消息" 传的慢
BGP4
一、BGP是什么?
BGP 是互联网核心的路由协议 ,用于不同自治系统(AS,Autonomous System)之间的路由选择和交换,是一种路径向量协议。
通俗点说:
-
互联网由成千上万个网络(ISP、企业网络、学校等)组成;
-
每个网络称为一个 自治系统 AS;
-
BGP 负责在这些 AS 之间通告、选择、维护最佳网络路径。
如果没有 BGP,全球互联网无法互连。
二、BGP的特点
| 特点 | 说明 |
|---|---|
| 路径向量协议 | 每一条路由要带上经过的 AS 列表 |
| 面向连接(TCP port 179) | BGP 会建立 TCP 连接来传递路由 |
| 策略优先 | 路由选择不是最短路径,而是根据策略(Policy) |
| 稳定性强 | 有路由抖动抑制机制(Route Flap Dampening) |
三、BGP与OSPF/ISIS区别
| 协议 | 范围 | 类型 | 路由依据 | 场景 |
|---|---|---|---|---|
| OSPF / IS-IS | AS 内部 | 链路状态协议 | 最短路径(开销) | 企业/内部网络 |
| BGP | AS 之间 | 路径向量协议 | 策略、商业关系 | 互联网路由、运营商网络 |
总结:内部用 OSPF,外部用 BGP。
BGP 发言人 = 运行 BGP 并负责代表自己的自治系统与外部交换路由信息的路由器
子网划分
子网聚合
把多个前缀合并成1个前缀,如何寻找? 将子网IP划成32位,寻找最大前缀匹配
目的:减少路由表规模,提高路由效率。
BGP路由通告:BGP 发言人(运行 BGP 的路由器)通过 BGP UPDATE 报文向邻居传播路由信息的过程。
BGP 路由通告方向(重点)
| 类型 | 场景 | 特点 |
|---|---|---|
| eBGP | 不同 AS 之间 | 默认 会传播学到的路由 |
| iBGP | 同一 AS 内 | 不会再传播从 iBGP 学到的路由(iBGP Split-Horizon Rule) |
iBGP 学到的路由不能再传给另一个 iBGP。