参考书目:《计算机网络(自顶而下方法)第八版》
参考原文:https://blog.csdn.net/qq_39326472/article/details/88089747
第四章——网络层
网络层能够被分解为相互作用的两个部分,即数据平面和控制平面。
数据平面功能即网络层中每台路由器的功能,决定了到达路由器输入链路之一的数据报如何转发到该路由器的输出链路之一。
控制平面功能即网络范围的逻辑,控制着数据报沿着从源主机到目的主机的端到端路径中路由器之间的路由方式。
4.1网络层概述
网络层的目标:实现主机到主机的通信。
网络层在计算机网络中的地位:
- 为运输层提供支持:运输层实现进程到进程间的通信依赖于网络层提供的服务。
- 为实现源主机到目标主机成功的移动数据分组,整个路径上的每一台分组交换机上均需实现网络层。
网络层的主要功能:
- 转发:当一个分组到达路由器的一条输入链路时,路由器上的网络层根据转发表和分组头部信息,将分组向适当的链路转发。(数据层面)
- 选路:分组从发送方流向接收方时,网络层必须决定这些分组所采用的路由或路径,选路的结果反映为设备上的转发表,通过路由选择算法实现。(控制层面)
- 建立连接:对于面向连接的网络层服务,提供连接建立的功能。
转发是路由器本地动作,路由选择是网络范围过程。比如开车从北京到上海,转发相当于在某个路口选择某一条岔路,路由选择相当于规划从北京到上海所有线路的过程。
转发表:每台路由器都有一张转发表。路由器检查分组首部字段值(可能是目的地址或所属连接,依据网络层协议),使用该值在转发表索引查询,得到输出链路信息。也就是说该值指出了该分组将被转发到的路由器输出链路接口。
路由选择算法决定了插入路由器转发表中的值。路由器接收路由选择协议报文,来配置转发表。
两种分组交换机:
- 路由器:根据网络层首部字段值从输入链路接口转移分组到输出链路接口。
- 链路层交换机:基于链路层首部字段中的值做转发决定。
网络层可能提供的服务:
- 确保交付:确保分组到达最终目的地。
- 具有时延上界的确保交付:时延上限内交付。
- 有序分组交付:以发送顺序到达。
- 确保最小带宽:以低于特定比速率传输,分组不会丢失且会在预定时延内到达。
- 确保最大的时延抖动:连续分组间隔时间不超过特定值。确保发送方两个相继分组之间的时间 = 目的地接收到它们之间的时间。
- 安全性服务:机密性(使用仅由源和目的地主机知晓的密钥加密数据报,源主机加密,目的主机解密),此外还有数据完整性和源鉴别服务。
几种实际使用的网络层服务模型:
网络体系结构 | 服务模型 | 带宽保证 | 无丢失保证 | 排序 | 定时 | 拥塞指示 |
因特网 | 尽力而为 | 无 | 无 | 无 | 不维持 | 无 |
ATM | CBR | 保证恒定速率 | 是 | 有序 | 维持 | 无拥塞 |
ATM | ABR | 保证最小速率 | 无 | 有序 | 维持 | 提供指示 |
4.2 虚电路和数据报网络
仅在网络层提供有连接服务的计算机网络成为虚电路(需事先握手);仅在网络层提供无连接服务的计算机网络称为数据报(无需握手)。
网络层与运输层服务的区别 :
- 网络层是向运输层提供主机到主机的服务,而运输层是向应用层提供进程到进程的服务。
- 网络层仅提供虚电路和数据报两种服务中的一种,而运输层同时提供两种。
- 运输层的服务在网络边缘的端系统中实现,而网络层的服务则在整个网络中实现(还包含网络核心的路由器)。
4.2.1 虚电路网络
包括ATM、帧中继的体系结构是虚电路网络,在网络层使用连接;包含IP的是数据报网络。
虚电路的目标:使收发双方之间的路径表现的如同电话线路一样。
工作机制:
- 数据开始流动之间,呼叫建立;流动结束以后要断开。
- 每个分组携带虚电路的标识(而不是目的主机的地址)。
- 路径上的每一个路由器必须为进行中的连接维持连接状态信息。(注意运输层的连接仅涉及两个端系统)
- 链路,路由器资源(带宽,缓冲区)可以分配给虚电路。(目的是达到类似线路交换的性能)
虚电路的组成:
- 从源到目的主机的路径(一系列链路和路由器)。
- VC号:沿着该路径的每段链路的一个号码。(一条虚电路的每段链路上具有不同的VC号;每台中间路由器必须用一个新的VC号替代每个传输分组的VC号)
- 沿着该路径的每台路由器中的转发表:(创建一条新的虚电路,转发表增加一个新表项;终止一条虚电路,表中相应项会被删除)
每台中间路由器必须用一个新的VC号替代每个传输分组的VC号:简单来说,当一个分组通过一台中间路由器时,首部VC号就会发生变化,变成下一条链路的VC号,原因如下:
- 每条链路VC号不同减少了分组首部VC字段长度。
- 大大简化虚电路建立。如果要求一个固定VC号,创建虚电路时路由器需要交换处理大量报文来约定VC号。
虚电路网络中的路由器必须为进行中的连接维护连接状态信息。创建一个连接,转发表加一项,释放一个连接,转发表删一项。该信息将VC号与输出接口号联系起来,让路由器知道应该把分组放到哪条链路输出。即使没有VC号转换,仍有必要维持状态信息,该信息将VC号和输出接口号联系起来。
信令协议:
- 用于建立,维护以及断开虚电路(端系统向网络发送的指令)。
- 用于ATM,帧中继,X.25网络。
- 如今的因特网不使用该协议。
如今的因特网所使用的协议:
一、建立虚电路
- 发送端运输层与网络层取得联系,指定接收方地址,等待网络层建立虚电路路径。
- 网络层决定发送方和接收方之间的路径,即虚电路要通过一系列链路和路由器,为每条链路设置vc号。
- 网络层为路径上每台路由器的转发表增加一个表项。
- 预留该虚电路路径上的资源。
二、数据传送
(发送端)启动呼叫-->(接收端)入呼叫-->(接收端)接收呼叫-->(发送端)呼叫连接-->(发送端)数据流开始-->(接收端)接收数据。
三、虚电路拆除
网络层通知网络另一侧端系统结束呼叫,更新删除路由器上转发表项以表明虚电路不存在(说明路由器转发表项是虚电路的物理体现)
4.2.2 数据报网络
1.在网络层没有建立连接的过程。
- 分组从源到目的地传输,通过一系列路由器传递。
- 路由器根据分组首部的目的地地址,将分组报文交给下一台路由器。
2.路由器在端到端的连接中不维护连接状态信息。
- 数据包网络中路由器不维持连接状态信息,但是维护转发状态信息。
- 实际上每1-5分钟,路由选择算法更新一次转发表。
3.传输报文时使用目的主机的地址信息。
- 因为在数据包网络中的转发表能在任何时刻修改,从一个端系统到另一个端系统发送的一系列分组可能在通过网络时走不同的路径,并可能无序到达。
4.2.3 虚电路和数据报网络的由来
1.虚电路网络:聪明的网络,愚笨的终端。
2.数据报网络:简单的网络,复杂的终端。
3.端系统设备复杂,网络层服务模型应尽可能简单,让复杂功能在更高级实现(按序、可靠数据传输、拥塞控制等)
4.数据报网络因为网络简单,互联不同类型的网络更加容易,并且启动新服务的速度更快,更简单
4.3 路由器的工作原理
4.3.1 输入端口
一、输入端口结构:
- 物理层:将一条输入的物理链路和路由器相连接。
- 数据链路层:数据链路处理(协议,拆封)
- 网络层:网络层处理,排队,查表,转发(查询转发表决定路由器的输出端口,并将分组转发给输出端口)。
二、功能分析(分散式交换):
- 查找:按照给出的目的地址,使用输入端口的内存中存储的路由表,查找输出端口。当遇到大型转发表时,还要结合快速查找算法。
- 影子副本:端口内容中的路由表是由路由选择处理器计算和更新,并以副本的形式复制到线路卡,有了影子副本,转发决策就可以在端口本地进行,而无需调用路由选择处理器。
- 目标:以“线路速度”完成输入端口的处理。
- 排队:如果数据报到达的速度超过了输入端口将数据报转交给交换结构的速度,则后到的分组将会在交换机前拥塞,这种拥塞也叫线头拥塞,因为线路中间的分组被位于线头上的另一个分组堵住了。
- 基于目标的转发:仅仅基于目标IP地址的(传统)转发。由于可能有超过40亿个地址,所以对快速匹配算法的要求高。
- 最长前缀匹配:查找给定目标地址的转发表项时,使用与目标地址匹配的最长地址前缀。
4.3.2 交换结构
将路由器的输入端口与输出端口相连。通过交换结构,分组才能从输入端口被转发到输出端口。共有三种交换方式。
一、经内存交换(memory):
- 在输入和输出端口间的交换是在CPU(路由处理器)的直接控制下完成的。
- 分组在输入端口处被中断传输,随后分组被拷贝到系统内存中,CPU提取出报头中的目标地址,并查找路由表中的输出接口,然后将分组数据包粘贴到输出端口。
- 转发速度受限于内存的带宽(吞吐量 < 带宽/2)
- 一次只能转发一个分组。
二、经总线交换(bus):
- 输入端口经一根共享总线将分组直接传送到输出端口,不受CPU的干预。
- 总线交换的问题:交换速度受限于总线的带宽。
- 一次只能转发一个分组。
三、经内联网络交换(crossbar):
- 克服了总线带宽的限制。
- 纵横式交换机,2N条总线组成网络,连接N各输入端口和N个输出端口。
- 每条垂直的总线与每条水平的总线交叉,交叉点通过交换结构控制器开启闭合。
- 某分组到达端口A,需要转发到Y,交换机控制器闭合总线A和Y的交叉点,A在其总线上发送分组,仅由Y接收;同时B也能发分组到X,因为没有公用总线。纵横式网络能并行转发多个分组。但是如果两个不同输入端口的两个分组的目标是同一个输出端口。则一个分组必须在输入端等待。
4.3.3 输出端口
1. 缓存管理:当交换结构将分组交付给输出端口的速率超过输出链路速率时。
2. 调度原则:从数据报队列中选择数据报进行传输。
4.3.4 输出端口排队
当通过交换结构到达的分组速率超过了输出链路的速率时,需要对分组进行缓存。
当流量不断增加,缓冲区溢出,会导致分组的排队和丢失。
一、缓冲区设置大小
- 少量TCP流:B = RTT * R(往返时间 * 链路容量)
- 大量TCP流:B = RTT * R/(N^1/2)
二、输出端口分组调度策略
1.调度策略:先来先服务(FIF0)
- 尾部丢弃:丢弃新到达的数据包
- 优先级:按优先级丢弃或删除
- 随机:随机丢弃或移除
2.调度策略:优先级
- 发送最高优先级排队数据包:将高优先级与低优先级数据分开存放。
- 多个类别,具有不同的优先级:类别可能取决于标记或首部其他信息,例如IP和端口。
3.调度策略:循环调度
- 有多个类的情况下。
- 循环扫描不同类的队列,轮流给每个类发送数据包(雨露均沾)
4.调度策略:加权公平队列
- 通用的循环排队
- 每个类在每个后期中获得一定数量的服务(依据权值)
5.调度策略:分组丢弃策略
4.4 网际协议:因特网中的转发和偏址
网络层三个协议:
- 路由选择协议:路径选择,RIP等
- IP协议:编址规则,数据报格式,分组处理规则
- ICMP协议:错误报告,路由器信令
4.4.1 数据报格式
- 版本号(IPv4、IPv6):不同版本对数据报不同解释。
- 首部长度:数据报可包含可变数量的选项,大部分首部固定20字节。
- 服务类型:区分不同类型的IP数据报
- 数据报总长度:首部+数据的长度。该字段16bit,然而一般数据报很少超过1500字节
- 标识、标志、片偏移:IP分片相关。一个大数据报文分成若干小报文,每个小报文分片有相同的标识。
- 生存时间:确保数据报不会永远在网络中循环(网络是网状结构,数据可能在几个路由器间来回重复传输,无法离开)。当数据报每被一个路由器处理时,值-1;若值减到0,丢弃数据报
- 协议号:到达最终目的地才有用,指示了IP数据报的数据部分应该交给哪个运输层协议。如6交给TCP,如17交给UDP。协议号是将网络层与运输层绑定到一起的粘合剂;端口号是将运输层和应用层绑定的粘合剂
- 首部检验和:帮忙路由器检测收到IP数据报中首部的比特错误,有错一般丢弃。每台路由器上必须重新计算检验和。IP层仅对IP首部计算检验和,而TCP/UDP检验和是对整个TCP/UDP报文段进行的。
- 源和目的IP地址:源主机通过DNS查找目的地址
- 选项:IPv6已抛弃选项字段
- 数据(有效载荷):包含运输层报文段(TCP或UDP),或ICMP报文段
一个IP数据报有长为20的首部,如果数据报承载一个TCP报文段,则每个无分片数据报承载总长40的首部(还有TCP的20)以及应用层报文。
IP分片和分组:
1.网络链路具有MTU(最大传输单位)属性——是由链路层最大帧的限制决定的,不同类型的链路具有不同的MTU值。
2.大的IP数据报在网络中会被分成小的分片
- 当数据长度 > MTU时,一个数据报会被分成几个数据报分开传输
- 重组只在目的主机(端系统)进行
- 数据报头部的标识,标志以及片偏移字段用于目的主机对接收的分片进行重组
- 分片时每个分片的标识(ID)复制原IP分组的标识,属于同一个数据报的若干分片具有相同标识
- 标志位中包含DF和MF,DF=1时表示不允许分组,MF=1时表示当前分片不是最后一个分片
- 通常分片时,除最后一个分片,其他分片均分为MTU允许的最大分片,也就是说,当MF=0时,分片才有可能不是最大分片
- 分片以8个字节为一组
一个4000字节的数据报(20+3980)到达一台路由器,转发到一条MTU为1500子节的链路上。必须分配3个独立的片,FO意为分片中分组的数量,一般8个字节一组。
IPv6废除了分片,简化了IP分组的处理。
4.4.2 IPv4编址
一、IP地址:
接口:主机,路由器与物理链路的边界
- 一般来说,路由器有多个接口,主机一般只有一个接口
IP地址:32位主机或路由器的接口标志符
- IP地址只和接口有关,而与主机,路由器没有太多关联
- IP要求每台主机和路由器都有自己的IP地址,每个接口都有不同的IP地址
- 每个IP地址长度32bit(4字节),总共2^32个可能的IP地址,约40亿个
IP地址的结构:
- 高位:网络号(Net-id)也叫子网号
- 低位:主机号(host-id)
IP地址的表示方法:
- 223.1.1.1是一个IP地址,这是点分十进制记法。
- 二进制表示为11011111 00000001 00000001 00000001(32位)
- 在同一个局域网上的主机或路由器的IP地址中的网络号必须是一样的。例如上图右下侧局域网中所有设备都采用网络号222.1.2
- 路由器总是具有两个或两个以上的IP地址。路由器的每一个接口都有一个不同网络号的IP地址,例如路由器R1拥有网络号分别为222.1.1,222.1.5和222.1.6的三个IP地址
- 注意:不同类型的IP地址网络号的长度不一样。A类为8位,B类为16位,C类为24位,上例中为C类IP地址。
二、子网
子网:
- 子网中的设备接口具有相同子网号。
- 子网中的设备能够直接互访,而无需路由器。
- 例如一家跨国公司有26家子公司,而现在他们只有一个B类地址块,为了便于管理,他们将这一个IP地址划分为27个子块,每个机构分得一块,每个机构自行管理自己的IP,这样的一块IP地址就是子网。
子网划分的方法:
- 从主机号中借用一部分位数作为子网号。
- 子网的IP地址可采用A,B,C类IP地址
子网掩码:
- 作用:对外隐藏子网的存在,对内指示网络号和子网号的位置。
- 获得方法:通过在网络号和子网号相应的位置全部置1,主机号相应位置置0,得到子网掩码
- 例如:一个IP对外IP地址为172.16.0.0,对内有4个子网,掩码为255.255.255.0。表示在这个IP地址中前24位就是网络号和子网号的位置,后八位是子网中的主机号。后八位二进制一共可以表示0-255共256个数,说明每个子网中可以有256个IP。第一个子网的网段表示为172.16.1.0/24,意为从172.16.1.0到172.16.1.255共256个IP都属于第一个子网,第二个子网网段表示为172.16.2.0/24,同理。
- 当得到一个地址时,将IP地址和子网掩码做与运算,即可得到它在网络中的地址。
三、网络地址和广播地址
- IP地址的主机地址部分的所有比特都为0时,为该网络地址对应子网的网络地址。
- IP地址的主机地址部分的所有比特都为1时,为该网络地址对应子网的广播地址。
将IP地址与子网掩码的反码做或运算,得到的地址就是网络地址。
四、引入子网掩码后的寻址
采用子网掩码后,路由器的寻址变成了一个两级寻址。
1.检查分组目的IP中的网络号:若网络号不是本网络,则从路由表中找到相应的转发结点地址转发出去。
2.检查子网号:当网络号是本网络时,路由器将检查子网号,向相应的子网转发此分组。
五、构造超网(CIDR)
1.背景:
- 地址空间利用率低,且IP地址数量明显不够
- 例如一个B类网络可以容纳64k台主机,但是可以被一个只有2k台主机的子网络占据。
2.构造方式:
- 从网络号中借用一部分位数做主机号
- 编址格式:例如128.14.32.0/20,表示的地址块有2^12个地址(子网掩码有20位),起始地址为:128.14.32.0;其中该地址块的最小地址为128.14.32.0,最大地址为128.14.47.255
- 全0和全1的主机号不能使用
六、最长前缀匹配
- 使用CIDR时,路由表中的每一个项目由“网络前缀”和“下一跳地址”组成,在查找路由表时可能得到不同的匹配结果。(前缀不一样长的情况下)
- 这时应该选择具有最长网络前缀的路由。
- 网络前缀越长,地址块越短,路由越具体。
七、如何获取地址、分配地址?
1. 获取一块地址
- 子网获取IP地址:由ISP从它大块地址中分配
- ISP获取IP地址:IP地址由因特网名字和编号分配机构ICANN管理(也管理DNS根服务器、AS标识号)。ICANN向区域性因特网注册机构分配地址,处理本地域内的地址分配/管理
2.获取主机地址
- 组织获得一块地址,就可为组织内的主机、路由器接口逐个分配IP地址
- 主机地址能手动配置,也能自动配置,即动态主机配置协议DHCP
3.DHCP:动态主机配置协议
- 允许主机在加入网络时动态地从网络服务器中获取其网址,能够在使用过程中更新地址,支持移动用户使用,允许地址重用。
- DHCP能将主机连接进一个网络的自动能力,常被称为即插即用协议
- 每个子网都有一台DHCP服务器
- 若子网没有DHCP服务器,则由一个路由器做DHCP中继代理,该代理知道该网络的DHCP服务器地址
4. 新主机到来时,DHCP协议的四个步骤
1.DHCP服务器发现
- 新到的客户通过广播DHCP发现报文,发现一个要与其交互的DHCP服务器
- 客户在UDP分组中向端口67发送该发现报文,此时必须用广播地址255.255.255.255,源地址是0.0.0.0
2.DHCP服务器提供
- DHCP收到DHCP发现报文后,响应一个DHCP提供报文,仍然使用广播地址,因为此时新客户并没有IP地址
- 可能有多台DHCP服务器,每台服务器提供的报文中,有向客户主机推荐的IP地址、网络掩码以及IP地址租用期(一般几天或几小时)
3.DHCP请求
- 客户从提供中选一个,向选中的服务器提供一个DHCP请求报文进行响应,回显配置参数
4.DHCP ACK
- 收到DHCP请求报文后,用DHCP ACK报文对其记性响应,证实所传参数
- 客户收到ACK后,交互完成,在租期内使用DHCP分配的IP地址。DHCP提供了机制允许客户更新对一个IP地址的租用
4.4.3 网络地址转换(NAT)
1.专用网络
图中的10.0.0.1等IP地址就属于专用网络,事实上地址10.0.0.0/8是保留的3个IP地址空间之一,这些地址用于家庭网络等专用网络或具有专用地址的地域,世界上有数十万个这样的专用网络。
(文章同步发布于稀土掘金,未完待续)