网络层

网络层是整个互联网的核心,因此应当让网络层尽可能简单。网络层向上只提供简单灵活的、无连接的、尽最大努力交互的数据报服务

IP协议可以将异构的物理网络连接起来,看起来就像是一个统一的网络

路由器工作原理

路由器结构

分组转发流程

202036112047

输入

路由器通过IP的前缀来确定数据包的转发目的地,当前缀存在重叠时,使用最长前缀

这里路由器还会对数据包进行一些必要的检查,还会重写TTL和校验和

交换

屏幕截图 2022-06-09 195400

前两种在同一时刻内只有一个分组能被处理,最后一种如果输出端口不同,则能并行转发

分组调度

ECMP

可以让路由器同时使用多条链路,一方面极大地提升了网络带宽,而另一方面也带来了新的挑战,也就是网络路径的数量上升了一个数量级,排错的复杂度也明显上升

2022816153835

网际协议

IPV4数据报格式

---title: IPV4数据报格式---packet-beta  0-4: "版本号"  5-8: "首部长度"  9-16: "区分服务"  17-31: "总长度"  32-48: "标识"  49-52: "标志"  53-63: "片偏移"  64-72: "生存时间"  73-80: "协议"  81-95: "首部检验和"  96-127: "源IP地址"  128-159: "目的IP地址"  160-191: "选项与填充(可变长度)"  192-255: "数据部分(可变长度)"

分片

由于某些链路的帧可承载的字节比某些链路更小,故在路由器会将数据载荷分为几个部分,后一一发送,并把组装数据的任务交给接收端

202036105520

IPV4编址

分类

由两部分组成,网络号和主机号,其中不同分类具有不同的网络号长度,并且是固定的

ABC为有分类寻址编址, 网络号长度是固定的

子网划分

通过在主机号字段中拿一部分作为子网号,把两级 IP 地址划分为三级 IP 地址

无分类

CIDR 的记法上采用在 IP 地址后面加上网络前缀长度的方法,例如 128.14.35.7/20 表示前 20 位为网络前缀

通过使用网络前缀来减少路由表项的方式称为路由聚合,也称为 构成超网

网络地址转换NAT

202036111610

IPV6

---title: IPv6数据报格式---packet-beta  0-3: "版本号"  4-11: "流量类别"  12-31: "流标签"  32-47: "有效载荷长度"  48-55: "下一个头部"  56-63: "跳数限制"  64-191: "源地址"  192-319: "目的地址"  320-383: "扩展头部和数据部分(可变长度)"

相比于IPV4:

IPV4到IPV6之间的过渡:建隧道

路由选择算法

内部网关协议RIP

RIP 按固定的时间间隔仅和相邻路由器交换自己的路由表,经过若干次交换之后,所有路由器最终会知道到达本自治系统中任何一个网络的最短距离和下一跳路由器地址

距离向量算法

距离向量算法

每个节点都会不断地从邻居那里获得最新的距离信息,然后尝试更新自己的距离矩阵,如果发现自己的距离矩阵有变化,才会通知邻居

但这个算法如果没有做跳数限制,由于没有路由拓扑信息,当某个链路断掉后,无法扩散出去,会造成路由环路,无限计算

内部网关协议OSPF

自治系统内部的路由选择,路由器会周期性或者当链路发生变化时向系统内的所有路由器广播路由选择信息,这样每台路由器都有整个自治系统的完整链路图

链路状态算法

  1. 发现节点

直接向网络广播一条hello消息,我们称为hello包。所有能直接收到这条消息的一定都是一跳的邻居

  1. 测量链路成本

每个节点只需要统计一下自己从发出 echo 到收到 echo 的时间差,就可以用它来估计和邻居之间的网络传输时延

  1. 封装链路状态包

把每个节点已知的信息封装成一个数据包,本机 ID、序号、生存期、邻居|成本,使用序号是为了防止网络阻塞导致老数据比新数据还晚到达

  1. 泛洪广播当链路状态包

每个节点都会把自己封装好的包和收到的包,发送或转发给所有除了该包发送方的节点,逐渐扩散,像Goossip协议

广播的时机:

使用这样的算法可以达到动态变化网络拓扑,提升网络的利用率,避免拥塞

外部网关协议BGP

202036112459

除了是自治系统之间的路由选择协议,BGP还能被用于IP任播:就像IP地址为8.8.8.8的DNS服务器,访问它时并不会真的通过这个IP找到一台物理唯一的服务器,而是通过路由选择在附近找到一台自称是这个IP的DNS服务器

SDN

软件定义网络(Software Defined Network,SDN)是由美国斯坦福大学CLean State课题研究组提出的一种新型网络创新架构,是网络虚拟化的一种实现方式。其核心技术OpenFlow通过将网络设备的控制面与数据面分离开来,从而实现了网络流量的灵活控制,使网络作为管道变得更加智能,为核心网络及应用的创新提供了良好的平台

跨越层次,功能更加强大的转发,不仅可以选择丢弃、复制、转发到特定端口,也就是拥有可被编程的能力,

ServiceMesh是SDN在应用层的扩展

屏幕截图 2022-06-10 110611

架构

特征

实现

ICMP

---title: ICMP报文格式---packet-beta  0-8: "类型"  9-15: "代码"  16-31: "校验和"  32-63: "标识(取决于ICMP报文的类型)"  64-127: "ICMP的数据部分(长度取决于类型)"
ICMP报文种类类型值ICMP报文类型
差错报告报文3终点不可达
差错报告报文11超时
差错报告报文12参数问题
差错报告报文5改变路由(Redirect)
询问报文8或0回送请求或回答
询问报文13或14时间戳请求或回答

traceroute

发送的 IP 数据报封装的是无法交付的 UDP 用户数据报,并由目的主机发送终点不可达差错报告报文

当TTL为0时,路由器将不会继续转发报文,traceroute通过第一次将TTL设为1,然后把报文发送给下一台路由器,路由器将ttl-1之后告诉主机报文不可达,这样以此类推得到整个路由链路

SNMP

简单网络管理协议, 一般使用UDP,所以会出现不可靠的问题,所以必须要安全幂等地重试

使用的请求响应模型,跟HTTP一样

虚拟专用网VPN

20203611147

IPSec

在网络层提供的了CIA保障

客户端发送的明文的 IP 包,都会被加上 ESP 头和 IP 头,在公网上传输

多协议标签交换(MPLS,Multi-Protocol Label Switching):在原始的 IP 头之外,多了 MPLS 的头,支持这个头的路由器,就可以采取跟传统IP层不同的转发策略,提高转发效率