计算机网络原理 笔记 4

网络层

概述

网络层分为数据平面控制平面
数据平面是将数据在输入链路和输出链路之间进行转发,控制平面是协调转发操作

转发和路由选择

  • 转发:将数据报从输入链路转移到输出链路(数据平面)
  • 路由选择:决定每个分组的路由(控制平面)
  • 转发表:由路由选择确定,决定了转发的路由

确定转发表

  • 传统方法:人工
  • 路由器决定自身的转发表,但是需要路由器间的通信
  • SDN:由远程控制器决定每个路由器的转发表

网络服务模型

可能的服务:

  • 确保交付
  • 时延上界
  • 有序分组
  • 最小带宽
  • 安全性

尽力而为服务:不提供任何服务

工作原理

四个组件:

  • 输入端口:查询转发表决定输出路由,并且将数据转移至交换结构
  • 交换结构:连接输入端口与输出端口
  • 输出端口:从建环结构获取数据并此昂输出链路传输
  • 路由选择处理器:执行控制平面功能,计算转发表(通常是一种传统的CPU)

转发策略:

  • 基于目的地转发
  • 通用转发

输入端口处理和基于目的地转发

最简单的情况下,每一个目的地址有一个对应的链路接口对应,采用前缀匹配的方法与最长前缀匹配规则(同时匹配多个前缀的时候选择最长的那个),为了效率通常使用SRAM,DRAM,TCAM
排队是指不同输入端口的数据在进入交换结构时排队

交换

交换方式很多

  • 内存:直接经由CPU控制,这导致了速率较慢(受到内存带宽的限制),并且不能同时转发多个分组
  • 总线:每一段数据会加上一个标签用于标记输出端口,所有输出端口都能接收数据但是只有被标记的可以保存数据,速率受到总线速率的影响,并且不允许并发
  • 互联网:如纵横式交换机,共2N2N条总线,当想从输入端口发送到特定输出端口时只需要闭合对应交点即可,不同输出端口的分组可以并行

输出端口

何处排队

输入排队

当交换结构的速率不够快的时候会发生,并且会有线路前部阻塞,即同一个输出端口队列中前部的分组被堵塞会导致后面的也被堵塞

如果分组到达速率达到容量的58%58\%,则输入队列会无限增长

输出排队

发送过快时会发生,采用丢弃新包或已有包来解决,同时有主动队列管理策略,如随机早期检测

传输顺序由分组调度决定

缓存的数量BB与链路容量CC的关系为:

B=RTTCB = \text{RTT} * C

分组调度

排队的分组怎么经过输出链路传输问题

  • FCFS:先来先服务
  • 优先权排队:被分类放入优先权类中,同一类中的分组采用FCFS,非抢占式优先权排队中,分组开始传输就不能被打断
  • 循环和加权公平排队:分组会被分类,但是不同类之间是平等的,也即会依次循环发送每一个类中的队列头,当某个类为空(链路空闲)时立即寻找其下一个类,例如加权公平排队,每个类会分配一个权重,并且加权分类吞吐量

网际协议

IPv4

  • 版本号:确定剩余解释方式
  • 首部长度:确定载荷与选项的分隔
  • 服务类型:区别不同类型IP数据报
  • 数据报长度:首部 + 数据
  • 标识、标志、片偏移:与分片有关
  • 寿命(TTL):确保数据报不会循环
  • 协议:指定运输层协议
  • 检验和:检测比特错误,求和取反码

IPv4分片

一个链路层帧能承载的最大数据量称为最大传送单元,限制着IP数据包长度,并且一段路径上的链路之间可能有不同协议不同的MTU,因此采用分片技术,每一个大数据报被分为若干片
标识、标志、片偏移三个字段用于分片,标志比特用于标记最后一个片,片偏移用于决定正确的顺序

IPv4编址

点分十进制记法:每个字节用十进制书写,不同字节用句点隔开,如127.0.0.1127.0.0.1
具有相同前缀的一些主机或路由器可以连接形成子网

其中223.1.1.0/24223.1.1.0/24代表前2424为相同,/24/24子网掩码

地址分配策略为无类别域间路由选择

地址聚合

得到地址

获取组织地址

由上游管理机构分配

获取主机地址

采用动态主机配置协议(又称即插即用或零配置),主机可以通过其来自动获取IP地址

  • DHCP发现:主机发现能够交互的DHCP服务器,通过DHCP发现报文,由链路层进行广播
  • DHCP提供:DHCP服务器回应一份DHCP提供报文,包含一些必要信息
  • DHCP请求:客户选择一个服务器,向其发送DHCP请求报文
  • DHCP ACK:服务器回应DHCP ACK报文

网络地址转换

在小型区域内合理使用一个IP地址的方法
NAT路由器是一个具有单一IP地址的打你设备,其中包含一张NAT转换表,用于将公网IP和端口转换为子网IP与端口

也即NAT用公网的端口进行寻址

中间盒

网络核心中的非交换机组成,包括NAT,流量负载均衡,流量防火墙等

IPv6

改动:

  • 地址容量扩大:3212832\rightarrow 128,引入任播地址,将数据报交给一组主机中的任意一个
  • 简化首部
  • 流标签:发送方要求进行特殊处理的流

字段:

  • 版本号,指明是IPv4还是IPv6
  • 流量类型:同IPv4的TOS
  • 下一个首部:运输层协议
  • 跳限制:最多能经过的路由器数目

去除了分片,取而代之的是差错报文,即数据太大时会被直接丢弃,并且向发送方返回一个ICMP差错报文

IPv4迁移到IPv6

  • 好笑版:宣布标志日
  • 实用版:建隧道

隧道指两台IPv6路由器之间的IPv4路由器的集合,方法是将IPv6的整个数据报作为数据包裹在IPv4载荷中进行传输,并且在下一个IPv6节点进行解包

通用转发和SDN

匹配加动作转发表称为流表,每个表项包括:

  • 首部字段值的集合
  • 计数器集合
  • 动作集合

匹配

对来自不同层次的协议首部的一部分字段进行匹配,允许通配,例如192.118.192.118.*将匹配所有192.118192.118开头的IP地址

动作

  • 转发:转发到特定端口、端口集合或其余所有端口
  • 丢弃
  • 修改字段:在被转发之前重写首部字段(IP协议不可重写)
  • 封装并转发给远程控制器