网络层:数据平面
记录一些学习计算机网络:自顶向下的学习笔记和心得
Github地址,欢迎star ⭐️⭐️⭐️⭐️⭐️
-
网络层中的每一台主机和路由器都有一个网络层的部分,网络层可以被分解为两个相互作用的部分:数据平面和控制平面
-
数据平面主要是网络中每台路由器的功能,该数据平面功能决定到达路由器输入链路之一的数据包如何转发到输出链路之一
-
目前的转发主要包括基于数据报目的地址的转发以及通用转发(基于数据报首部不同几个域的值执行转发和其他功能)
网络层概述
-
数据平面主要作用是从其输入链路向其输出链路转发数据报
-
控制平面主要作用是协调这些每本地路由器的转发操作,使数据报沿着源和目的主机之间的路由器路径最终进行端到端传送
-
路由器不运行应用层和运输层协议
转发和路由
- 转发:当一个分组到达路由器的输入端口时,路由器需要选择合适的输出端口将其转发出去,转发是在数据平面唯一实现的功能
- 路由选择:分组从发送方流向接收方,网络层必须决定这些分组所选择的路径或路由,计算这些路径的算法被称为路由选择算法
- 转发通常由硬件实现,是路由器本地操作
- 路由选择通常由软件实现,是网络范围处理过程
- 转发
- 每台路由器都具有转发表,路由器检查到达分组首部的一个或多个字段来在其转发表中进行索引查找输出链路接口
- 路由选择算法决定转发表的值
- 传统方法:每台路由器都有一个与其他路由器进行路由选择通信的路由选择组件,通过路由选择协议交换包含路由选择信息的路由选择报文
- SDN方法:远程控制器进行计算、分发路由表,本地路由器只负责转发。路由器和远程控制器通过交换包含转发表和其他路由选择信息的报文
- 因特网的网络层只提供了尽力而为服务
- 路由器和交换机都属于分组交换机
路由器工作原理
- 路由器基本组件包含:
- 输入端口(硬件实现)
- 与数据链路层进行交互
- 执行查找功能:通过查询转发表决定路由器的输出端口
- 到达的分组经过交换结构发送到输出端口,控制分组从输入端口转发到路由选择处理器
- 输出端口(硬件实现)
- 存储从交换结构接受的分组并执行必要的链路层和物理层功能在输出链路上传输这些分组
- 交换结构(硬件实现)
- 将输入端口连接到输出端口
- 路由选择处理器(CPU)
- 执行控制平面的功能
- 传统路由器中:执行路由选择协议,维护路由选择表和相关链路状态信息,为路由器计算转发表
- SDN路由器中:负责与远程控制器通信,接受远程控制器计算的转发表项,并在路由器输入输出端口安装这些表项
- 输入端口(硬件实现)
- 输入端口的处理
- 输入端口执行查找转发表功能来决定输出端口
- 转发表是由路由选择处理器计算和更新得出的
- 转发表是由选择处理器经过独立总线复制到线路卡
- 转发决策能在每个输入端口本地做,而无需基于每个分组调用集中式路由选择处理器
- 基于目的转发
- 最长前缀匹配
- 存在默认转发链路接口
- 可能分组被阻塞排队在输入端口
- 交换
- 经内存交换
- 在CPU操作下,使用共享内存交换
- 经总线交换
- 通过共享总线交换,输入端口为分组加上交换机内部标签然后发送给所有的输出端口,输出端口会进行匹配
- 经互联网络交换
- 通过2N条总线来组成互联网络,链接N个输入端口和N个输出端口
- 经内存交换
- 输出端口
- 取出存放在输出端口内存中的分组并将其发送到输出链路中
- 排队
- 输入排队
- 交换机速度没有达到让所有分组无时延的交换
- 输出排队
- 弃尾:丢弃刚到达的分组或者删除一个或多个已排队的分组
- 在缓存填满前丢弃一个分组或者在首部加上标记来向发送方提供一个拥塞信号
- 吞吐量和最小的时延都很重要
- 输入排队
- 分组调度
- 先进先出
- 优先权排队
- 循环排队:按照类别进行传输
- 加权公平排队:根据每个类别等待的分组数量来计算权重
IPv4数据报和寻址
IPv4
-
IPv4数据报格式
- 版本号:4bit,规定了数据报的IP协议版本
- 首部长度:4bit,IPv4数据报包含一些可变数量的选项,通过该字段来确定运输层报文段实际开始的地方,一般具有20字节的首部
- 服务类型:8bit,区分开不同类型的数据报:实时数据报、非实时数据报等
- 数据报长度:16bit,IP数据报总长度(首部+载荷),IP数据报理论最大长度为65535字节
- 标识、标志、片偏移:这三个字段与IP分片有关(IPv6就取消了),一个大的IP数据报被分为几个小的IP数据报然后被发送到目的主机进行重新组装
- 寿命:TTL,每经过一台路由器,TTL-1,TTL为0丢弃该数据包
- 协议:指明了该IP数据报交给哪一个上层运输层协议
- 协议号将网络层和运输层绑定在一起
- 端口号将运输层和应用层绑定到一起
- 首部校验和:16bit
- 用于帮助路由器检测收到的IP数据报中的比特错误
- 根据首部中的字段值来进行计算的,每台路由器都会重新计算,因为TLL字段以及可能的选项字段会改变
- 重复检测是因为可能存在不同的协议搭配
- 源和目的IP地址:都是32bit
- 选项:选项字段允许IP首部被扩展
- 数据(有效载荷):送往运输层的报文段(TCP/UDP,也可以是ICMP)
-
IPv4编址文章来源:https://www.toymoban.com/news/detail-778940.html
- 每个接口都具有IP地址
- 路由器具有多个接口
- 每台主机和每个路由器接口都具有各自的IP地址
- 每个IPv4地址长度为32bit(4字节)
- IP地址需要由其链接的子网来决定
- 子网掩码
- 三个主机接口和一个路由器接口形成了一个子网
- 无类别域间路由选择(CIDR编址),a.b.c.d/x
- x高比特构成了IP地址的网络部分
- 路由聚合
- 32-x比特被用于区分组织内部设备
- 分类编制
- IP地址的网络部分被限制为8、16、24比特,分别代表A、B和C网络
- 255.255.255.255为IP广播地址,0.0.0.0为自身的IP地址,用于在一些特殊场合
DHCP(动态主机配置协议)
- DHCP允许主机自动获取一个IP地址(可以配置为相同IP地址或者临时IP地址)
- DHCP还得知其余信息,子网掩码,第一跳路由地址(网关),本地DNS服务器地址等
- 客户-服务器协议:客户通常是新到达的主机,需要获得包括自身IP地址等信息
- 理想情况下每个子网具有一台DHCP服务器或者DHCP中继代理,该代理知道该网络DHCP服务器的地址
- DCHP客户和服务器交互
- DHCP服务器发现:客户机发送DHCP发现报文,UDP,端口号67,广播目的地址255.255.255.255,以及“源主机IP”0.0.0.0
- DHCP服务器提供:服务器发送DHCP提供报文,广播255.255.255.255,报文中包含推荐IP地址、网络掩码、IP地址租用期等
- DHCP请求:客户从一个或多个服务器提供中选择一个,并向其发送DHCP请求报文响应,回显配置的参数
- DHCP ACK:服务器用DHCP ACK 报文对DHCP请求报文进行响应,证实参数
- DHCP还提供了机制来允许客户更新对一个IP地址的租用
NAT(网络地址转换协议)
- NAT(网络地址转换)
- NAT对外界相当于具有单一IP地址的单一设备
- NAT对外界隐藏了子网的细节
- 路由器从ISP的DHCP服务器得到NAT地址
- NAT路由器具有一张NAT转换表,表项中包含了端口号和其IP地址
- 路由器重写数据报的ip地址和端口
- 向外界发送
- 源IP替换为NAT IP地址
- 源端口替换为NAT中空余端口
- 从外界接受
- 目的IP根据NAT转换表通过端口来查询
- 替换目的IP
- 向外界发送
- NAT属于中间盒
- 中间盒不执行传统的数据报转发,而是执行诸如NAT、流量负载均衡、流量防火墙等功能
IPv6数据报和寻址
- IPv6数据报格式
- 扩大的地址容量:由32比特升为128比特,并引入了除单播和多播之外的任播
- 简化高效的40字节首部:定长40字节首部
- 流标签:给特殊流的分组加上标签(音频视频等)
- IPv6数据报
- 版本:IP版本号
- 流量类型:服务类型,区分不同类型的IP数据报
- 流标签:20bit,对一条流中的某些数据报给出优先级
- 有效载荷字段:40字节首部字段后的数据载荷字节数量
- 下一个首部:标识数据报交付给哪个协议(TCP、UDP)
- 跳限制:约等于TTL
- 源地址和目的地址:128bit
- 数据:数据载荷部分
- 从IPv4到IPv6的迁移
- IPv6兼容IPv4
- IPv4网络设备不支持IPv4
- 解决办法:建隧道
- 两个IPv6节点通过IPv4网络设备传输的时候,将IPv6数据报放到一个IPv4数据报的载荷字段
- IPv6接收端通过观察该IPv4的协议号字段41来判断有效载荷和IPv6数据报
泛化转发和SDN
- 转发可以概括为匹配和操作
- 在泛化转发中,操作可以包括许多不同种操作
- 每台分组交换机中都有匹配加操作表,该表由远程控制器计算、安装和更新
- OpenFlow是泛化转发中一种协议
-
匹配加操作转发表在OpenFlow中称为流表,每个表项包括
- 首部字段值的集合:入分组将与之匹配,基于硬件的匹配执行最为迅速,匹配不上的流表将会被丢弃或发送到远程控制器做更多的处理
- 计数器集合:当分组与流表项匹配时更新计数器
- 操作集合:当分组匹配流表项时所采取的操作集合
-
匹配加操作转发表在OpenFlow中称为流表,每个表项包括
- 匹配
- OpenFlow 1.0流表具有11个分组首部字段和入端口ID(最近已经增加到了41个)
- OpenFlow的匹配抽象允许对来自三个层次的协议首部所选择的字段进行匹配
- 入端口是指分组交换机上接受分组的输入端口
- 流表项也具有通配符
- 操作
- 每个流表项都具有零个或多个操作列表
- 转发
- 丢弃
- 修改字段
- …
- 每个流表项都具有零个或多个操作列表
- SDN控制器计算和分发流表,协议用于在分组交换机和它的控制器之间进行通信
- 中间盒
- “在源主机和目的主机之间的数据路径上,执行除了IP路由器的正常标准功能之外的其他功能的任何中间的盒子”
- 大致包括以下三种
- NAT转换
- 安全服务:防火墙基于首部字段值或重定向分组来阻塞流量,从而进行附加处理
- 性能增强
随着中间件的增多,单独的专用硬件、单独的专用软件堆栈等都意味着巨大的成本和投资费用。因此,研究人员正在探索使用商用硬件(网络、计算和服务),并试图在通用软件堆栈上构建专门的软件来实现这些服务,而这就是SDN采用的方法,网络功能虚拟化(NFV);另一种被探索的方法是把中间盒功能外包给云。文章来源地址https://www.toymoban.com/news/detail-778940.html
- IP沙漏
- 端到端原则
到了这里,关于计算机网络:自顶向下第八版学习指南笔记和课后实验--网络层(数据平面)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!