计算机网络——网络层
在前面的文章中,我们看到了运输层是如何工作、并且了解了运输层的工作特性。而运输层
依赖于网络层的主机到主机的通信服务和网络层提供的各种形式的进程到进程的通信。接下
来,下文将会介绍网络层是如何提供这些服务?这种主机到主机通信服务的真是情况是怎样
的?是什么使它工作起来的?
依赖于网络层的主机到主机的通信服务和网络层提供的各种形式的进程到进程的通信。接下
来,下文将会介绍网络层是如何提供这些服务?这种主机到主机通信服务的真是情况是怎样
的?是什么使它工作起来的?
什么是网络层?
网络层与运输层和应用层不同的是,在网络中每一台主机和路由器都是网络层的部分,网络层协议是协议栈中最复杂但却最有趣的一部分。
网络层有什么作用?
从表面上看,网络层的作用很简单,即将分组从一台主机移动到另一台主机,从而提供了主机到主机的通信服务和各种形式的进程到进程的通信。
与网络层运输层相似,网络层也能够提供无连接服务或面向连接服务。仅在网络层提供连接
服务的计算机网络称为虚电路;仅在网络层提供无连接服务的计算机网络称为数据报网络。
服务的计算机网络称为虚电路;仅在网络层提供无连接服务的计算机网络称为数据报网络。
网络层提供了什么服务?
网络服务模型定义了分组在发送与接收端系统之间的端到端运输特性。下面列出了网络层提供的部分特定服务:
确保交付
具有时延上界的确保交付
有序分组交付
确保最小带宽
确保最大时延抖动
安全性服务
网络层主体是什么,它又是如何提供上述服务呢?
网络层具有三个主要组件:IP协议、因特网控制报文协议、因特网路由选择协议。通过这些组件,网络层可以复杂的网络网中寻找到最合适的路径,将分组从源主机移动到目的主机。
下面将通过具体介绍这三大组件,来介绍网络层。
如果你想了解两种数据报格式的差异,以及它们中字段的含义,请点击这里。
IPv4:
首部检验和的计算:
将首部中每两个字节作为一个数,用反码运算对这些数字求和,该和的反码存放在检验和字段,被称为因特网检验和。如果数据报首部中携带的检验和与计算所得不一致,则
认为检测出现差错。
我们可能会疑惑,为什么运输层和网络层都执行了差错检验?其原因是:
网络层只对IP首部计算检验和,而运输层是对整个报文段计算的。TCP/UDP与IP不一定必须属于同一个协议栈,即TCP不一定运行在IP上
IP数据报分片:在链路层中我们会看见,并非所有的链路层协议都可以承载相同长度的数据
报,它们的最大承载能力各不相同,即一个链路层帧能承载的最大数据量 MTU最大传送单元
当数据报过大时,会将数据报中的数据分片,成为多个更小的数据报然后用帧封装这些较小
的数据报。这些较小的数据报被称为片。在它们达到目的地运输层前需要重新组装。分片虽
然在将许多完全不同的链路层技术粘合起来的过程中起到了重要作用,但分片也需要开销。
一些名词解释:
子网:互联某些主机与一个路由器接口的网络形成一个子网
子网掩码:IP编址为子网分配一个地址,如:223.1.1.0/24 其中/24记法有时称为子网
掩码,指示了32比特中左侧24比特定义的子网地址,然和要连接到223.1.1.0/24的网络
主机地址都是 233.1.1.xxx的形式
因特网地址分配策略被称为 无类别域间路由选择CIDR
IP地址是由因特网名字和编号分配机构ICANN管理分配,而一台主机的IP地址通常由动态主
机配置协议DHCP来配置。DHCP具有将一个主机连接进一个网络的网络相关方面的自动能力
子网:互联某些主机与一个路由器接口的网络形成一个子网
子网掩码:IP编址为子网分配一个地址,如:223.1.1.0/24 其中/24记法有时称为子网
掩码,指示了32比特中左侧24比特定义的子网地址,然和要连接到223.1.1.0/24的网络
主机地址都是 233.1.1.xxx的形式
因特网地址分配策略被称为 无类别域间路由选择CIDR
IP地址是由因特网名字和编号分配机构ICANN管理分配,而一台主机的IP地址通常由动态主
机配置协议DHCP来配置。DHCP具有将一个主机连接进一个网络的网络相关方面的自动能力
管理IP地址的典型方法:网络地址转换NAT
NAT能使路由器对于外部世界看起来像一个单一IP的单一设备, 使路由器对外界隐藏内部网
络的细节。所有离开此内部网络的报文与进入此网络的报文都有一个相同的源地址与目的地
址,NAT路由器通过使用一张NAT转换表来区分内部网络中的各个主机,转换表包含端口号与
其IP地址。NAT转换表与某台主机中端口号与进程ID号对照表类似。
NAT能使路由器对于外部世界看起来像一个单一IP的单一设备, 使路由器对外界隐藏内部网
络的细节。所有离开此内部网络的报文与进入此网络的报文都有一个相同的源地址与目的地
址,NAT路由器通过使用一张NAT转换表来区分内部网络中的各个主机,转换表包含端口号与
其IP地址。NAT转换表与某台主机中端口号与进程ID号对照表类似。
NAT虽然得到广泛应用,但很多人反对NAT,原因如下:
1.端口号是用于进程编址,而不是主机编址
2.路由器通常仅应当处理高达第三层的分组
3.主机应彼此直接对话,结点不应该介入修改IP地址与端口号
4.应该使用IPv6来解决IP地址不足的问题
NAT的另一个问题是妨碍了P2P应用程序, 使得在某个NAT下的主机无法与另一个主机建立对
等方发起的一条TCP连接。
1.端口号是用于进程编址,而不是主机编址
2.路由器通常仅应当处理高达第三层的分组
3.主机应彼此直接对话,结点不应该介入修改IP地址与端口号
4.应该使用IPv6来解决IP地址不足的问题
NAT的另一个问题是妨碍了P2P应用程序, 使得在某个NAT下的主机无法与另一个主机建立对
等方发起的一条TCP连接。
UPnP:允许外部主机使用TCP或UDP向NAT化的主机发起通信会话。
IPv6:
为什么开发IPv6?
由于新的子网与IP结点以惊人的速度增长,32比特的IP地址空间即将耗尽,为了应对这种对大IP地址空间的需求,开发的一种新的IP协议,IPv6。设计者利用这次机会,在IPv4的基础
上还强化了协议的其他部分。
相对于IPv4,IPv6的重要变化:
扩大的地址容量:将IP地址长度从32比特增加到128比特, 确保全世界几乎用不完所有IP地址。IPv6还引入任播地址的新型地址,这种地址可以使数据报交付给一组分组中的任意一个
采用高效的40字节首部:许多IPv4字段被舍弃或作为选项,使得数据报处理更加迅速。
流标签与优先级:给属于特殊流的分组加上标签,表示这些流需要被特殊处理。
IPv6不允许在中间路由器上进行分片与重新组装:这种操作只能在源与目的地进行。如果数
据报过大而无法转发到链路上,路由器只需要丢弃该数据报,并向发送方发送一个分组太大
的ICMP差错报文。分片与重新组装十分耗时,将该功能从路由器删除并放在端系统中,大大
加快了网络中的IP转发速度。
据报过大而无法转发到链路上,路由器只需要丢弃该数据报,并向发送方发送一个分组太大
的ICMP差错报文。分片与重新组装十分耗时,将该功能从路由器删除并放在端系统中,大大
加快了网络中的IP转发速度。
去除首部检验和:运输层与链路层都有相似功能,在IP层采用此功能有些多余,IP层关注的
重点是快速处理IP分组。
重点是快速处理IP分组。
选项:选项字段不在时标准IP首部的一部分了,使得IP首部称为定长40字节,但选项并没有
消失,而是可能出现在下一个首部指出的位置。
消失,而是可能出现在下一个首部指出的位置。
如何将基于IPv4的网络迁移到到IPv6呢?下面将介绍几种迁移的方法与其可行性分析:
1.宣布一个标志日,即指定某个时间点,届时所有的机器都关机并升级为IPv6,就像当初从
使用NCP迁移到使用TCP一样。但这几乎是不可行的,因为此时面对如此大规模的机器与用户
的标志日根本不可能发生。
使用NCP迁移到使用TCP一样。但这几乎是不可行的,因为此时面对如此大规模的机器与用户
的标志日根本不可能发生。
2.双栈的方法:即使用该方法的IPv6节点还具有IPv4的完整实现,如果发送方与接收方任意
一个是仅IPv4可用时,则必须使用IPv4数据报。
一个是仅IPv4可用时,则必须使用IPv4数据报。
3.建隧道:我们将两台IPv6路由器之间的中间IPv4路由器的集合称为一个隧道,隧道中间的
路由器将传送的IPv6数据当做一个有效载荷,并将其放入一个IPv4数据报在隧道中传送。
路由器将传送的IPv6数据当做一个有效载荷,并将其放入一个IPv4数据报在隧道中传送。
因特网控制报文协议ICMP:
ICMP被主机和路由器用来彼此沟通网络层的信息。ICMP通常被认为是IP的一部分,但从体系结构上看,它是位于IP之上的,因为ICMP报文时承载在IP分组中。
ICMP报文类型:
因特网路由选择协议:
网络层最根本的目的是将分组在复杂的网络中从源传送到目的地,而这一过程很大程度上依赖于路由选择,它决定了数据报从源到目的地所流经的路径。
在介绍路由选择之前,我们先区分一下两个概念:
转发:当一个分组达到路由器的某个输入链路时,路由器将其移动到合适的输出链路的
过程称为转发。
路由选择:路由选择是当分组从发送方到接收方时,网络层选取的整个的分组移动路径
转发:当一个分组达到路由器的某个输入链路时,路由器将其移动到合适的输出链路的
过程称为转发。
路由选择:路由选择是当分组从发送方到接收方时,网络层选取的整个的分组移动路径
在选择分组从源到目的地主机的路径时,会依据某些路由选择算法,下面将介绍这些算法。
根据算法是全局式还是分散式分类:
全局式路由选择算法:用完整的、全局性的网络知识计算出源到目的地之间的最低费用分散式路由选择算法:以迭代、分布式的方式计算出最低费用路径
根据算法是静态的还是动态的分类:
静态路由选择算法:路由的变化随时间的流逝改变的很慢,通常是人工干预调整转发表动态路由选择算法:当网络流量负载或拓扑发生变化时改变路由选择路径
根据算法是负载敏感还是负载迟钝分类:
负载敏感算法:链路费用动态的变化来反映底层链路的拥塞程度负载迟钝算法:某条链路的费用不明显的反映当前拥塞水平
链路状态算法LS:属于全局式路由算法,整个网络状态已知,作为LS算法的输入。而整个链
路状态通过链路状态广播算法来完成。
随着互联网规模的扩大,单纯的将网络看做路由器的集合变得不再可行,因为此时涉及的路
由器数目变得庞大,涉及路由选择算法计算的开销将大到无法实现。并且可能一组路由器属
于某个机构,该机构希望在内部使用自己的路由选择算法的同时还与外部相连。为了解决这
些问题,我们将路由器组织进自治系统AS。在AS内运行的路由选择算法叫做自治系统内部路
由选择协议。而为了将AS与外界相连,AS中将会有一个或多个路由器负责在AS与外界之间转
发分组,这些路由器称为网关路由器。
由器数目变得庞大,涉及路由选择算法计算的开销将大到无法实现。并且可能一组路由器属
于某个机构,该机构希望在内部使用自己的路由选择算法的同时还与外部相连。为了解决这
些问题,我们将路由器组织进自治系统AS。在AS内运行的路由选择算法叫做自治系统内部路
由选择协议。而为了将AS与外界相连,AS中将会有一个或多个路由器负责在AS与外界之间转
发分组,这些路由器称为网关路由器。
自治系统之间的路由选择:
跨越多个AS之间源与目的地之间的路径确定是边界网关协议BGP。广播与多播路由选择:
广播路由选择:从一个源结点向网络中的所有其他结点的分组交付多播路由选择:从一个源结点向其他网络结点的一个子集发送分组的副本
广播路由选择算法:
N次单播:由源结点产生N的分组副本,对不同目的地的每个副本进行编址,再用单播路由选择对每个目的地发送分组。
缺点:效率低、为了得知每个目的地的地址将需要更大的开销、我们的目的是广播
而实际却是使用单播
实现广播的方式:
无控制洪泛:要求源结点向所有邻居发送副本,这种方法的致命缺点是路由图可能存在圈的情况,此时分组将会在圈内无休止的循环。
受控洪泛
生成树广播
多播面对的问题:如何标识接收方、如何为发送到接收方的分组编址
为了解决上述问题,多播数据报使用间接编址,使用一个标识来表示一组接收方多播路由选择算法:
使用一颗组共享树的多播路由选择使用一颗基于源的树的多播路由选择
转载请注明出处