网络层概述
- 网络层的主要任务是实现网络互连,进而实现数据包在各网络之间的传输。
- 要实现网络层任务,需要解决以下主要问题:
- 网络层向运输层提供怎样的服务(“可靠传输”还是“不可靠传输”)
- 网络层寻址问题
- 路由选择问题
- 因特网是目前全世界用户数量最多的互联网,它使用TCP/IP协议栈。
- 由于TCP/IP协议栈的网络层使用网际协议IP,它是整个协议栈的核心协议,因此在TCP/IP协议栈中网络层常称为网际层。
网络层提供的两种服务
面向连接的虚电路服务
无连接的数据报服务
IPv4D地址
IPv4地址概述
- IPv4地址就是给因特网上的每一台主机(或路由器)的每一个接口分配一个在全世界范围内是唯一的32比特的标识符。
- IP地址由因特网名字和数字分配机构ICANN进行分配
- 我国用户可向亚太网络信息中心APNIC申请IP地址,需要缴费。
- 2011年2月3日,互联网号码分配管理局IANA宣布,IPv4地址已经分配完毕。
- 我国在2014至2015年也逐步停止了向新用户和应用分配IPv4地址。同时全面开展商用部署IPv6。
- IPv4地址的编址方法经历了如下三个历史阶段:
IPv4的编制方法
分类编址的IPv4地址
A类地址:
B类地址:
C类地址:
- 根据地址左起第一个十进制数的值,可以判断出网络类别(小于127的为A类,128~191的为B类,192~223的为C类);
- 根据网络类别,就可找出地址中的网络号部分和主机号部分(A类地址网络号为左起第一个字节,B类地址网络号为左起前两个字节,C类地址网络号为左起前三个字节);
- 以下三种情况的地址不能指派给主机或路由器接口:
- A类网络号0和127
- 主机号为“全0”,这是网络地址
-
划分子网的IPv4地址
32比特的子网掩码可以表明分类IP地址的主机号部分被借用了几个比特作为子网号
- 子网掩码使用连续的比特1来对应网络号和子网号
- 子网掩码使用连续的比特0来对应主机号
- 将划分子网的IPv4地址与其相应的子网掩码进行逻辑与运算就可得到IPv4地址所在子网的网络地址
举例:
- 默认的子网掩码是指未划分子网的情况下使用的子网掩码。
无分类编址的IPv4地址
- 划分子网在一定程度上缓解了因特网在发展中遇到的困难,但是数量巨大的C类网因为其地址空间太小并没有得到充分使用,而因特网的IP地址仍在加速消耗,整个IPv4、地址空间面临全部耗尽的威胁。
- 为此,因特网工程任务组IETF又提出了采用无分类编址的方法来解决IP地址紧张的问题,同时还专门成立IPv6工作组负责研究新版本IP以彻底解决IP地址耗尽问题
- 1993年,IETF发布了无分类域间路由选择CIDR的RFC文档:RFC 1517~1519和1520.
- CIDR消除了传统的A类、B类和C类地址,以及划分子网的概念;
- CIDR可以更加有效地分配IPv4的地址空间,并且可以在新的IPv6使用之前允许因特网的规模继续增长。
举例:
路由聚合(构造超网):
- 网络前缀越长,地址块越小,路由越具体;
- 若路由器查表转发分组时发现有多条路由可选,则选择网络前缀最长的那条,这称为最长前缀匹配,因为这样的路由更具体
IPv4地址的应用规划
定长的子网掩码FLSM
- 使用同一个子网掩码来划分子网
- 每个子网所分配的IP地址数量相同,造成IP地址的浪费
变长的子网掩码VLSM
- 使用不同的子网掩码来划分子网
IP数据报的发送与转发过程
- IP数据报的发送和转发过程包含以下两部分:
- 主机发送IP数据报
- 路由器转发IP数据报
主机C如何知道路由器R的存在?
用户为了让本网络中的主机能和其他网络中的主机进行通信,就必须给其指定本网络中的一个路由器,由该路由器帮忙进行转发。所指定的路由器,也被称为默认网关。
静态路由配置及其可能产生的路由环路问题
- 静态路由配置是指用户或网络管理员使用路由器的相关命令给路由器人工配置路由表。
- 这种人工配置方式简单、开销小。但不能及时适应网络状态(流量、拓扑等)的变化。
- 一般只在小规模网络中采用。
- 使用静态路由配置可能出现以下导致产生路由环路的错误
- 配置错误
- 聚合了不存在的网络
- 网络故障
为了防止IP数据报在路由环路中永久兜圈,在IP数据报首部设有生存时间TTL字段。
IP数据报进入路由器后,TTL字段的值减1,若TTL的值不等于0,则被路由器转发,否则被丢弃。
路由选择协议
路由选择协议概述
静态路由选择
- 由人工配置的网络路由、默认路由、特定主机路由、黑洞路由等都属于静态路由。
- 这种人工配置方式简单、开销小。但不能及时适应网络状态(流量、拓扑等)的变化
-
动态路由选择
路由器通过路由选择协议自动获取路由信息。
- 比较复杂、开销比较大。能较好地适应网络状态的变化。
-
因特网所采用的路由选择协议
主要特点:
自适应:动态路由选择,能较好地适应网络状态的变化
- 分布式:路由器之间交换路由信息
- 分层次:将整个因特网划分为许多较小的自治系统AS
路由器的基本结构:
过程:信号从某个输入端口进入路由器,物理层将信号转化为比特流,送交数据链路层处理,数据链路层从比特流中识别出帧,去掉帧头和帧尾后,送交网络层处理。如果送交网络层的分组是普通待转发的数据分组,则根据分组首部中的目的地址进行查表转发,若找不到匹配的转发条目,则丢弃该分组;否则,按照匹配条目中所指示的端口进行转发。网络层更新数据分组首部中某些字段的值,然后送交数据链路层进行封装成帧,送交物理层处理。物理层将帧看作是比特流,将其变换成相应的电信号进行发送。如果送交网络层的分组是路由器之间交换路由信息的路由报文,则把这种分组送交路由选择处理机。路由选择处理机根据分组的内容来更新自己的路由表。
路由选择处理机除了处理收到的路由报文外,还会周期性地给其他路由器发送自己所知道的路由信息。路由器的各端口还应具有输入缓冲区和输出缓冲区。
输入缓冲区:用来暂存新进入路由器但还来不及处理的分组。
输出缓冲区:用来暂存已经处理完毕但还来不及发送的分组。
内部网关协议IGP
路由信息协议RIP
- 路由信息协议RIP是内部网关协议IGP中最先得到广泛使用的协议之一,其相关标准文档为RFC 1058.
- RIP要求自治系统AS内的每一个路由器都要维护从它自己到AS内其他每一个网络的距离记录。这是一组距离,称为“距离向量D-V”。
- RIP使用跳数作为度量来衡量到达目的网络的距离。
- 路由器到直连网络的距离定义为1。
- 路由器到非直连网络的距离定义为所经过的路由器加1。
- 允许一条路径最多只能包含15个路由器。“距离”等于16时相当于不可达。因此,RIP只适用于小型互联网。
- RIP认为好的路由就是“距离短”的路由,也就是所通过路由器数量最少的路由。
- 当到达同一目的网络有多条“距离相等”的路由时,可以进行等价负载均衡。
- RIP包含以下三个要点:
- 和谁交换信息 仅和相邻路由器交换信息
- 交换什么信息 自己的路由表
- 何时交换信息 周期性交换(例如每30秒)
工作过程:
RIP的路由条目的更新规则:
- RIP存在“坏消息传播得慢”的问题
“坏消息传播得慢”又称为路由环路或距离无穷计数问题,这是距离向量算法的一个固有问题。可以采用多种措施减少出现该问题的概率或减小该问题带来的危害。
开放最短路径优先OSPF,是为克服RIP的缺点在1989年开发出来的。
- “开放”表明OSPF协议不是受某一家厂商控制,而是公开发表的。
- “最短路径优先”是因为使用了Dijkstra提出的最短路径算法SPF。
- OSPF是基于链路状态的,而不像RIP那样是基于距离向量的。
- OSPF采用SPF算法计算路由,从算法上保证了不会产生路由环路。
- OSPF不限制网络规模,更新效率高,收敛速度快。
- 链路状态是指本路由器都和哪些路由器相邻,以及相应链路的“代价”。
- “代价”用来表示费用、距离、时延、带宽,等等。这些都由网络管理人员来决定。
- OSPF相邻路由器之间通过交互问候分组,建立和维护邻居关系。
- 使用OSPF的每个路由器都会产生链路状态通告LSA。LSA中包含以下内容:
- 直连网络的链路状态信息
- 邻居路由器的链路状态信息
- LSA被封装在链路状态更新分组LSU中,采用洪泛法发送。
- 使用OSPF的每个路由器都有一个链路状态数据库LSDB,用于存储LSA。
- 通过各路由器洪泛发送封装有自己LSA的LSU分组,各路由器的LSDB最终将达到一致。
- 使用OSPF的各路由器基于LSDB进行最短路径优先SPF计算,构建出各自到达其他各路由器的最短路径,即构建各自的路由表。
- OSPF有以下五种分组类型
- 类型1,问候(Hello)分组
用来发现和维护邻居路由器的可达性。
- 类型2,数据库描述分组
向邻居路由器给出自己的链路状态数据库中的所有链路状态项目的摘要信息。
- 类型3,链路状态请求分组
向邻居路由器请求发送某些链路状态项目的详细信息。
- 类型4,链路状态更新分组
路由器使用这种分组将其链路状态进行洪泛发送,即用洪泛法对全网更新链路状态。
- 类型5,链路状态确认分组
这是对链路状态更新分组的确认分组。
OSPF的基本工作过程:
OSPF的基本工作原理:
外部网关协议EGP
边界网关协议BGP
基本工作原理:
- 在配置BGP时,每个自治系统的管理员要选择至少一个路由器作为该自治系统的“BGP发言人”。
- 不同自治系统的BGP发言人要交换路由信息,首先必须建立TCP连接,端口号为179
- 在此TCP连接上交换BGP报文建立BGP会话
- 利用BGP会话交换路由信息(例如,增加新的路由,或撤销过时的路由,以及报告出错的情况等)
- 使用TCP连接交换路由信息的两个BGP发言人,彼此称为对方的邻站或对等站
- BGP发言人除了运行BGP外,还必须运行自己所在自治系统所使用的内部网关协议IGP,例如OSPF或RIP。
- BGP发言人交换网络可达性的信息(要到达某个网络所要经过的一系列自治系统)
- 当BGP发言人互相交换了网络可达性的信息后,各BGP发言人就根据所采用的策略从收到的路由信息中找出到达各自治系统的较好的路由。也就是构造出树形结构、不存在回路的自治系统连通圈。
- BGP-4有以下四种报文
- OPEN报文:用来与相邻的另一个BGP发言人建立关系,使通信初始化。
- UPDATE报文:用来通告某一路由信息,以及列出要撤销的多条路由。
- KEEPALIVE报文:用来周期性地证实邻站的连通性。
[ ] NOTIFICATION报文:用来发送检测到的差错。
IPv4数据报的首部格式
网际控制报文协议ICMP
为了更有效地转发IP数据报和提高交付成功的机会,在网际层使用了网际控制报文协议ICMP
- 主机或路由器使用ICMP来发送差错报告报文和询问报文。
-
ICMP差错报告报文
终点不可达
[ ] 当路由器或主机不能交付数据报时,就向源点发送终点不可达报文。具体可再根据ICMP的代码字段细分为目的网络不可达、目的主机不可达、目的协议不可达、目的端口不可达、目的网络未知、目的主机未知等13种错误。
源点抑制
- 当路由器或主机由于拥塞而丢弃数据报时,就向源点发送源点抑制报文,使源点知道应当把数据报的发送频率放慢。
时间超过
- 当路由器收到一个目的IP地址不是自己的IP数据报,会将其生存时间TTL字段的值减1。
若结果不为0,则将该IP数据报转发出去;若结果为0,除丢弃该IP数据报外,还要向源点发送时间超过报 文。
[ ] 另外,当终点在预先规定的时间内不能收到一个数据报的全部数据报片时,就把已收到的数据报片都丢弃,也会向源点发送时间超过报文。
参数问题
[ ] 当路由器或目的主机收到IP数据报后,根据其首部中的检验和字段发现首部在传输过程中出现了误码,就丢弃该数据报,并向源点发送参数问题报文。
改变路由(重定向)
- 路由器把改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器(可通过更好的路由)。
以下情况不应发送ICMP差错报告报文:
- 对ICMP差错报告报文不再发送ICMP差错报告报文
- 对第一个分片的数据报片的所有后续数据报片都不发送ICMP差错报告报文
- 对具有多播地址的数据报都不发送ICMP差错报告报文
对具有特殊地址(如127.0.0.0或0.0.0.0)的数据报不发送ICMP差错报告报文
网际控制报文协议ICMP
常用的ICMP询问报文有以下两种:
回送请求和回答
- ICMP回送请求报文是由主机或路由器向一个特定的目的主机发出的询问。
收到此报文的主机必须给源主机或路由器发送ICMP回送回答报文。
这种询问报文用来测试目的站是否可达及了解其有关状态。
- 时间戳请求和回答
- ICMP时间戳请求报文是请某个主机或路由器回答当前的日期和时间。
在ICMP时间戳回答报文中有一个32位的字段,其中写入的整数代表从1900年1月1日起到当前时刻一共有多少秒。
这种询问报文用来进行时钟同步和测量时间。
虚拟专用网VPN与网络地址转换NAT
虚拟专用网VPN
利用公用的因特网作为本机构各专用网之间的通信载体,这样的专用网又称位虚拟专用网。由于IPv4地址的紧缺,一个机构能够申请到的IPv4地址数量往往远小于本机构所拥有的主机数量,因此,虚拟专用网的各主机所分配的地址应该是本机构可自由分配的专用地址,而不是需要申请的、在因特网上使用的公有地址。
网络地址转换NAT
NAT能使大量使用内部专用地址的专用网络用户共享少量外部全球地址来访问因特网上的主机和资源。
- 外网主机是否可以首先发起通信?
不能,如果由外网主机首先发起,那么当NADP路由器收到来自外网的IP数据报后,在NAPT转换表中找不到相应的记录,也就无法把数据报转发给内网中的主机。
- 使用私有地址的主机不能直接充当因特网服务器。