以下内容仅为笔者看书做的笔记,后续可能会有补充。
参考书籍《计算机网络 自顶向下方法.中文第6版》
路由器的主要作用便是将数据报从入链路转发到出链路。
4.1.1 转发和路由选择两种重要的网络层功能:
转发:
路由选择:
当分组从发送方流向接收方时,网络层必须决定这些分组所采用的路由或路径 是指网络范围的过程,决定分组从源到目的地所采取的端到端路径连接建立(connection setup):
从源到目的地沿着所选择的路径彼此握手,以便在给定源到目的地连接中的网络层数据分组能够开始流动之前建立起状态每台路由器具有一张转发表(forwarding table),路由选择算法决定转发表中的值。
路由选择算法可能是
集中式的(算法在某个中心场点执行,并向每台路由器下载路由选择信息) 分布式的(使用运行在每台路由器上的分布式路由选择算法的一部分)分组交换机分类:
链路层交换机(link-layer switches),基于链路层字段中的值做转发决定 路由器(router),基于网络层字段中的值做转发决定 4.1.2 网络服务模型在发送主机中,当运输层向网络层传递一个分组时,能由网络层提供的特定服务包括:
确保交付。该服务确保分组将最终到达其目的地
具有时延上界的确保交付。在特定的主机到主机时延上界内交付
有序分组交付。确保分组以它们发送的顺序到达目的地
确保最小带宽 。这种网络层服务模仿在发送和接受主机之间的一条特定比特率的传输链路的行为
确保最大时延抖动。该服务确保位于发送方的两个相继分组之间的时间量等于在目的地接收到它们之间的时间量
安全性服务。使用仅由源和目的主机所知晓的一个秘密会话密钥,在源主机中的网络层能够加密向目的主机发送的所有数据报负载
ATM服务模型:
恒定比特率(CBR),ATM网络服务: 仅在网络层提供连接服务的计算机网络称为虚电路(Virtual-Circuit, VC)网络;
仅在网络层提供无连接服务的计算机网络称为数据报网络(datagram network);
虚电路网络和数据报网络是计算机网络的两种基本类型
在运输层实现面向连接的服务与网络层实现连接服务是根本不同的
运输层面向连接服务是在位于网络边缘的端系统中实现的 网络连接服务除了在端系统中,也在位于网络核心的路由器中实现 4.2.1 虚电路网络虚电路的组成
①源和目的主机之间的路径(即一系列链路和路由器);
②VC号,沿着该路径的每段链路的一个号码;
③沿着该路径的每台路由器中的转发表表项
一个分组沿着其路由在每条链路上不简单地保持相同的VC号的原因:
逐链路代替该号码减少了在分组首部中VC字段的长度。 (重要)通过允许沿着该虚电路路径每条链路有一个不同的VC号,大大简化了虚电路的建立。在虚电路中3个明显不同的阶段:
虚电路建立。在建立阶段,发送运输层与网络层联系,指定接收方地址,等待网络建立虚电路。网络层为沿着该路径的每条链路决定一个VC号,在沿着路径的每台路由器的转发表中增加一个表项。 数据传送。分组沿着该虚电路流动。 虚电路拆除。当发送方(或接收方)通知网络层它希望终止该虚电路时。网络层的虚电路建立与运输层的连接建立有一个细微但很重要的区别:
1)运输层的连接建立仅涉及两个端系统,网络中的路由器不参与
2)网络层的虚电路建立,沿两个端系统之间路径上的路由器都要参与虚电路的建立,且每台路由器都完全知道经过它的所有虚电路
端系统向网络发送指示虚电路启动与终止的报文,以及路由器之间传递的用于建立虚电路的报文,称为;信令报文(signaling message),用来交换这些报文的协议称为;信令协议(signaling protocol)
4.2.2 数据报网络当有多个匹配时,该路由器使用最长前缀匹配规则,即在该表中寻找最长的匹配项,并向与最长前缀匹配相关联的链路接口转发分组。
4.2.3 虚电路和数据报网络的由来 4.3 路由器工作原理路由器的组成部分:
输入端口:执行将一条输入的物理链路与路由器连接的物理层功能
交换结构:将路由器的输入端口与输出端口相连接。是一个网络路由器中的网络
输出端口:储存从交换结构接收的分组,并通过执行必要的链路层和物理层功能在输入链路上传输这些分组。
路由选择处理器:执行路由选择协议,维护路由选择表以及链接的链路状态信息,并为路由器计算转发表。还执行网络管理功能。
一台路由器的输入端口、输出端口和交换结构共同实现了这种转发功能,并且总是用硬件实现。总是用硬件实现的原因:如果N个端口结合在一块线路卡上,数据报处理流水线必须以N倍速率运行,这远快过软件实现的速率。
4.3.1 输入端口三态内容可寻址存储器(Tenary Content Address Memory, TCAM)
“查找”在输入端口处理中是最为重要的动作,但必须采取许多其他动作:
①必须出现物理层和链路层处理
②必须检查分组的版本号、检验和以及寿命字段,并且重写后两个字段
③必须更新用于网络管理的计数器
“匹配加动作”抽象不仅作用大,而且在网络设备中无处不在
4.3.2 交换结构三种交换技术:
经内存交换。不能同时转发两个分组,即使它们有不同的端口号,因为经过共享系统总线一次仅能执行一个内存读/写。 经总线交换。让输入端口为分组预先计划一个交换机内部标签,指示本地输出端口,使分组在总线上传送和传输到输出端口。该分组能由所有输出端口收到,但只有与该标签匹配的端口才能保存该分组。一次只有一个分组能够跨越总线。 经互联网络交换。克服单一、共享式总线带宽限制的一种方法是,使用一个更复杂的互联网络。 4.3.3 输出端口输出端口处理取出存放在输出端口内存中的分组并将其发送到输出链路上。这包括选择和取出排队的分组进行传输,执行所需的链路层和物理层传输功能。
4.3.4 何处出现排队排队的位置和程度取决于流量负载、交换结构的相对速率和线路速率。
多年以来,对缓存长度的经验方法是,缓存数量(B) = 平均往返时延(RTT) * 链路的容量(C)
最近的理论和试验研究表明,当有大量的TCP流(N)流过一条链路时,缓存所需要的数量是B = RTT · C/N\sqrt{N}N。
输出端口排队的后果就是,在输出端口上的一个分组调度程序必须在这些排队的分组中选出一个来发送。
简单的原则:先来先服务(FCFS)调度,加权公平排队(WFQ)。
WFQ规则是在具有排队等待传输的分组的不同端到端连接之间公平地共享输出链路。
分组调度程序在提供服务质量保证方面起着关键作用
网络范围的路由选择控制平面是分布式的,即不同部分(例如路由选择算法)执行在不同的路由器上并且通过彼此发送控制报文进行交互。
4.4 网际协议:因特网中的转发和编址因特网的网络层有三个主要组件:
IP协议
路由选择部分,它决定了数据报从源到目的地所流经的路径
报告数据报中的差错和对某些网络层信息请求进行响应的设施。因特网的网络层差错和信息报告的协议,即互联网报文协议(ICMP)。
4.4.1 数据报格式IPv4数据报格式如图
IPv4数据报中的关键字段如下:
版本(号)。不同的IP版本使用不同的数据报格式 首部长度。一个IPv4数据报可包含一些可变数量的选项(这些选项包括在IPv4数据报首部中),故需要4比特来确定IP数据报中数据部分实际从哪里开始。大多数IP数据报不包含选项 服务类型(TOS)。提供特定等级的服务是一个由路由器管理员决定的策略问题。 数据报长度。IP数据报的总长度。IP数据报的理论最大长度为65535字节,但是数据报很少有超过1500字节的。 标识、标志、片偏移。 寿命(TTL)。若TTL字段减为0,则该数据报必须丢弃。 协议。协议号是将网络层与运输层绑定到一起的粘合剂,而端口号是将运输层和应用层绑定到一起的粘合剂。 首部检验和。用于帮助路由器检测收到的IP数据报中的比特错误。 源和目的IP地址。通常源主机通过DNS查找来决定目的地址。 选项。选项字段允许IP首部被扩展。很少使用。 数据(有效载荷)。 IP数据报分片一个链路层帧能承载的最大数据量叫做最大传送单元(Maximum Transmission Unit, MTU)。
如果一个或多个片没有到达目的地,则该不完整的数据报被丢弃且不会交给运输层。
4.4.2 IPv4编址主机与物理链路之间的边界叫做接口(interface)。
为了确定子网,分开主机和路由器的每个接口,产生几个隔离的网络岛,使用接口端接这些隔离的网络的端点。这些隔离的网络中的每一个都叫做一个子网(subnet)
因特网的地址分配策略被称为无类别域间路由选择(Classless Interdomain Routing, CIDR)。
形式为a.b.c.d/x的地址的x的最高比特构成了IP地址的网络部分,并且经常被称为该地址的前缀(网络前缀)。
1. 获取一块地址为了获取一块IP地址用于一个组织的子网,某网络管理员也许首先会与他的ISP联系,该ISP可能会从已分给它的更大地址块中提供一些地址。
2. 获取主机地址:动态主机配置协议主机地址也能手动配置,但是这项任务目前通常更多的是使用动态主机配置协议(DHCP)。
DHCP协议是一个4个步骤的过程:
DHCP服务器发现。一台新到的主机通过使用一个DHCP发现报文来发现一个要与其交互的DHCP服务器。DHCP客户将该IP数据报传递给链路层,链路层然后将该帧广播到所有与该子网连接的子网。 DHCP服务器提供。DHCP服务器收到一个DHCP发现报文时,用一个DHCP提供报文向客户作出响应,任然使用IP广播地址255.255.255.255。每台服务器提供的报文包含有收到的发现报文的事务ID、向客户推荐的IP地址、网络掩码以及IP地址租用期。 DHCP请求。客户向选中的服务器提供一个DHCP请求报文进行响应,回显配置参数。 DHCP ACK。服务器用DHCP ACK报文对DHCP请求报文进行响应,证实所要求的参数。 3. 网络地址转换使用在NAT路由器上的一张NAT转换表,并且在表项中包含了端口号及其IP地址。
4. UPnPNAT穿越正越来越多地由通用即插即用(UPnP)提供,UPnP是一种允许主机发现并配置邻近NAT的协议。
4.4.3 因特网控制报文协议众所周知的ping程序发送一个ICMP类型8编码0的报文到指定主机。看到该回显请求,目的主机发回一个类型0编码0的ICMP回显回答。
关注安全性
对抗恶意分组攻击的两种流行的防御措施是防火墙和入侵检测系统(IDS)。
4.4.4 IPv6 1. IPv6数据报格式IPv6中引入的最重要的变化显示在其数据报格式中:
扩大的地址容量。IPv6将IP地址长度从32比特增加到128比特。 简化高效的40字节首部。 流标签与优先级。IPv6有一个难以捉摸的流(flow)定义。IPv6定义的字段:
版本。 流量类型。该8比特字段与我们在IPv4中看到的TOS字段的含义相似。 流标签。该20比特的字段用于标识一条数据报的流 有效载荷长度。给出了IPv6数据报中跟在定长的40字节数据报首部后面的字节数量。 下一个首部。该字段使用与IPv4首部中协议字段相同的值 跳限制。转发数据报的每台路由器将对该字段的内容减1,如果跳限制计数达到0,则该数据报将被丢弃。 源地址和目的地址 数据在IPv4数据报中出现的几个字段在IPv6数据报中已不复存在:
分片/重新组装。IPv6不允许在中间路由器上进行分片与重新组装。将该功能从路由器中删除并放到端系统中,大大加快了网络中的IP转发速度。 首部检验和。 选项。 2. 从IPv4到IPv6的迁移 4.4.5 涉足IP安全性由IPsec会话提供的服务包括:
密码技术约定。这种机制允许两台通信的主机对加密算法和密钥达成一致。 IP数据报有效载荷的加密。 数据完整性。 初始鉴别。 4.5 路由选择算法路由选择算法的目的:给定一组路由器以及连接路由器的链路,路由选择算法要找到一条从源路由器到目的路由器的“好”路径。
对路由选择算法的一种广义分类方式是根据该算法是全局式的还是分散式的来加以区分:
全局式路由选择算法。全局式以所有结点之间的连通性及所有链路的费用为输入,具有关于连通性和链路费用方面的完整信息。具有全局状态信息的算法常被称作链路状态(Link State, LS)算法。 分散式路由选择算法。没有结点拥有关于所有网络链路费用的完整信息,而每个结点仅有与其直接相连链路的费用知识即可开始工作。距离向量(Distance-Vector, DV)算法的分散式路由选择算法。 4.5.1 链路状态路由选择算法Dijkstra算法
4.5.2 距离向量路由选择算法 1. 距离向量算法:链路费用改变与链路故障无穷计数(count-to-infinity)问题
2. 距离向量算法:增加毒性逆转毒性逆转没有解决一般性的无穷计数问题
3. LS与DV路由选择算法的比较 收敛速度。LS算法的实现是一个要求O(|N| |E|)个报文的O()算法。DV算法收敛速度较慢,且在收敛时会遇到路由选择环路。DV算法还会遇到无穷计数的问题。 健壮性。如果一台路由器发生故障、行为错落或受到破坏时。LS算法下,路由计算在某种程度上是分离的,提供了一定程度的健壮性。DV算法中,一个结点的计算会传递给它的邻居,然后再下次迭代时再间接传递给邻居的邻居,在此情况下,DV算法中一个不正确的结点计算值会扩散到整个网络。 4. 其他路由选择算法 4.5.3 层次路由选择在LS和DV算法的研究中,我们将网络只看作一个互联路由器的集合。从所有路由器执行相同的路由选择算法以计算穿越整个网络的路由选择路径的意义上来说,一台路由器很难同另一台路由器区别开来。在实践中,该模型和这种一组执行同样路由选择算法的同质路由器集合的观点有一点简单化,因为至少有以下两个重要原因:
规模。随着路由器数目变得很大,涉及路由选择信息的计算、存储及通信的开销将高得不可实现。在如此大量的路由器中迭代的距离向量算法将肯定永远无法收敛。 管理自治。一个组织应当能够按自己的愿望运行和管理其网络,还要能将其网络与其他外部网络相连接。这两个问题都可以通过将路由器组织进自治系统(Autonomous System, AS)来解决,每个AS由一组通常处在相同管理控制下的路由器组成。
在一个自治系统内运行的路由选择算法叫做自治系统内部路由选择协议。
将AS彼此互联是必需的,因此在一个AS内的一台或多台路由器将有另外的任务,即负责向本AS之外的目的地转发分组。这些路由器被称为网关路由器(gateway router)。
从相邻AS获取可达性信息和向该AS中所有路由器传播可达性信息是两项由自治系统间路由选择协议(inter-autonomous system routing protocol)处理的任务。
在实践中经常使用的一种方法是热土豆路由选择(hot potato routing)。在热土豆路由选择中,AS尽可能快地(更准确地讲师尽可能经济地)扔掉分组(热土豆)。
历史上有两个路由选择协议曾被广泛用于因特网上自治系统内的路由选择:路由选择信息协议(Routing Information Protocol, RIP)与开放最短路优先(Open Shortest Path First, OSPF)。
在RIP(也在OSPF)中,费用实际上是从源路由器到目的子网。RIP使用术语跳,跳是沿着从源路由器到目的子网(包括目的子网)的最短路径所经过的子网数量。
在RIP中,路由选择更新信息在邻居之间通过使用一种RIP响应报文(RIP response message)来交换,大约每30秒相互交换一次。由一台路由器或主机发出的响应报文包含了一个该AS内的多达25个目的子网的列表,以及发送方到其中每个子网的距离。响应报文又被称作RIP通告(RIP advertisement)。
4.6.3 自治系统间的路由选择:BGP边界网关协议(Broder Gateway Protocol, BGP)是当今因特网中域间路由选择协议事实上的标准。
BGP为每个AS提供了进行以下工作的手段:
1)从相邻AS处获得子网可达性信息
2)向AS内部的所有路由器传播这些可达性信息。
3)基于可达性信息的AS策略,决定到达子网的“好”路由。