网络层的主要任务是实现网络互联,进而实现数据包在个网络中间的传输。
网络层主要解决的问题
(1)网络层向运输层提供怎样的服务
(2)网络层寻址问题
(3)路由选择问题
网路层提供的两种服务
面向连接的虚电路服务
无连接的数据报服务
IPV4地址的概念
在TCP/IP体系中,IP地址是一个最基本的概念。
IPV4地址是因特网上每一台主机的每一个接口分配一个在全世界范围内唯一的32比特的标识符。
IPV4地址的编址方法经历了:1981分类编址-1985划分子网-1993无分类编址
IPV4地址采用点分十进制表示方法以便方便用户使用,如下所示
分类编址的IPv4地址
主要分为五类
A类:
B类
C类
划分子网的IPv4地址
32比特的子网掩码可以表明分类IP地址的主机的部分被借用了几个比特作为子网号
默认子网掩码是指在未划分子网的情况下的子网掩码
无分类编址IPv4地址
因为数量巨大的C类网其地址空间太小并没有得到充分的利用,IP地址地址消耗过快,因特网工程任务组又提出采用无分类编址的方法解决IP地址紧张的问题。
1993年IETF发布了无分类域区间路由选择CIDR(Classless Inter-Domain Routing)的RFC文档。
·CIDR消除了传统的A类、B类和C类地址,以及划分子网的概念;
·CIDR可以更加有效的划分IPv4的地址空间,并且可以在新的IPv6使用因特网允许因特网的规模的继续增长
举例说明:
路由聚合:
IPv4地址的应用规划
定长的子网掩码FLSM
使用同一个子网掩码来划分子网
每个子网所分配的IP地址数量喜爱沟通,造成IP地址的浪费
变长的子网掩码VLAM
使用不同的子网掩码来划分子网
每个子网所分配的IP地址数量可以不同,尽可能减少对IP地址的浪费
IP数据报的发送和转发过程
- 目的网络:表示数据包的最终目的地,它是一个网络或子网的地址。
- 下一跳:表示数据包在传输过程中要转发的下一个设备的地址,是数据包到达目的网络的中间步骤。
- 发送数据报的主机将目的IP地址与自己相与,就可以得到目的网络地址 ,若与自己的网络地址不相等,就知道两个主机不属于用一个网络(属于间接交付,就要通过路由器相连)。
用户为了让本网络中的主机和其他网络中的主机进行通信,就必须给其制定网络中的一个路由器,由该路由器帮忙进行转发,所制定的路由器被称为默认网关。
路由器收到IP数据报之后:
(1)检查IP数据报是否出错,如果出错,则直接丢弃该IP数据报并通告源主机若没有出错则转发
(2)根据IP数据报的目的地址在路由表中查找匹配的条目:若找到匹配的条目,则转发给条目中指示的下一跳,若找不到,则丢弃并通告源主机。
·中继器和集线器工作在物理层,既不隔离冲突域,也不隔离广播域
·网桥和交换机工作在数据链路层,可以隔离冲突域,不能隔离广播域
·路由器工作在网络层,既隔离冲突域,也隔离广播域
静态路由配置及其产生的环路问题
(1)静态路由配置是指用户或网路管理员使用路由器的相关命令给路由器人工配置路由表。
·人工配置方法简单、开销小
·一般只在小规模中采用
(2)使用静态路由配置可能出现路由环路问题
·配置错误
·聚合不存在的网络
·网络故障
-
默认路由:
- 概念:默认路由是当没有匹配到其他路由条目的时候,数据包会被发送到的路由。它是一个"最后一跳"的路由选择,适用于不确定目的地的情况。
- 用法:如果路由表中没有与目的地址精确匹配的条目,数据包将会根据默认路由发送,通常指向一个网关(通常是出口路由器)。
- 应用场景:适用于连接到外部网络或互联网的场景。一个典型的例子是家庭路由器将所有不在局域网内的数据包发往互联网服务提供商(ISP)。
-
特定主机路由:
- 概念:特定主机路由是指针对某个具体主机IP地址设置的精确路由规则,数据包只能发送到该主机的指定路径。
- 用法:它通过匹配具体的目标主机地址来决定数据包的转发路径。这个路由条目会在路由表中显示一个精确的IP地址,通常用于访问特定的服务器或主机。
- 应用场景:适用于需要为某个特定的主机指定特定路径的情况,例如访问公司内部的某个服务器或某个远程主机时需要通过特定的网络路径。
配置错误产生的环路问题
在IP数据报首部设有生存时间TTL字段,IP数据报进入路由器后,TTL字段的值减1.若TTL字段的值等于0,则被路由器转发,否则被丢弃。
聚合不存在网络导致的路由问题
针对此情况,可以在在聚合表中增加聚合的不存在的黑洞路由,例如192.168.0.0/24和192.168.3.0/24,黑洞路由的下一跳为null0,相当于丢弃该数据报。
网络故障导致的环路问题
如果路由器检测到接口出现故障而不可到达,就会在路由表中删除路由条目,再次其他主机传播数据报时,路由表中就找不到该路由条目,只能走默认路由,就会产生路由环路。
针对此情况,可以在路由表中添加针对该直连网的黑洞路由,一段时间,故障消失,又自动得出了其接口的直连网络的路由条目(并将之前的黑洞路由设为失效)。
路由选择协议
因特网路由的特点
自适应:动态路由选择,能较好地适应网络状态的变化
分布式:路由器之间的交换路由信息
分层次:将整个因特网划分为许多较小的自治系统AS(Autonomous System)
路由选择协议主要分为内部网关协议(IGP)和外部网关协议(EGP)
外部网关协议又包含
(1)路由信息协议RIP
(2)内部网关路由协议IGRP
(3)增强型内部网关路由协议EIGRP
(4)开放式最短路径优先OSPF
(5)中间系统到中间系统IS-IS
外部网关协议主要是:边界网关协议BGP
路由器的基本结构
路由选择:核心构件为路由选择处理机,它的任务根据路由选择协议周期性与其他路由器交互,来更新路由信息表
分组转发:主要分为交换结构,输入端口,输出端口
路由器各端口还应有输入缓冲区(新进入缓存起,还来不急处理的分组)和输出缓冲区(已经处理完毕还来不及发送的分组)。
路由信息协议RIP(Routing Information Protocol)
RIP内部网关协议IGP中最先得到广泛使用的协议
RIP要求自制系统AS内的每一个路由器都要维护从它自己到AS内其他每个网络的距离记录。这是一组距离,称为"距离向量D-V(DIstance-Vector)"
RIP使用跳数(Hop Count)作为度量(Metric)来衡量达到目的网络的距离
·路由器到直连网络的距离定义为1
·路由器到非直连网络的距离定义为所经过的路由器数加1
·允许一条路径最多包含15个路由器
·当达到同一目的的网络有多条"距离相等"的路由时,可以进行等价负载均衡
RIP包含三个要点
·和谁交换信息。(仅和相邻路由器交换信息)
·交换什么信息 (自己路由表)
·何时交换(周期性交换)
RIP的基本工作过程
RIP路由条目的更新规则
RIP存在坏消息传的慢问题
解决办法:
当路由表发生变化时立即发送更新报文,(即"出发更新",而不是周期性发送)
限制最大路径距离为15
让路由器记录收到某特定路由信息的接口,而不让同一路由信息再通过此接口向反方向传送。
开放最短路径优先协议(open Shortest Path First)
·OSPF是基于链路状态的,而不像RIP那样基于向量的
·OSPF采用SPF算法计算路由,从算法上保证了不会产生路由环路
·OSPF不限制网络规模,更新效率高,收敛速度快
·链路状态是指本路由都和哪些路由器相邻,以及相应链路的"代价","代价"用来表示费用,距离,时延,带宽(由网络管理人员决定)
·OSPF相邻路由器之间通过交互问候(Hello)分组,建立和维护邻居关系。
(1)问候分组要封装在IP数据报中发送,发往组播地址
(2)设置发送周期
(3)周期内未收到邻居路由器的Hello分组,则认为该邻居分组不可达到
使用OSPF的每个路由器都会产生链路状态通告LSA(Link State Advertisement)LSA包含:
(1)直连网络的链路状态信息
(2)邻居路由器的链路状态信息
LSA被封装在链路状态更新分组中LSU中,采用洪泛法发送。
使用OSPF的每一个路由器都有一个链路状态数据库LSDB,用于存储LSA。
通过各路由器洪泛发送封装有自己LSA的LSU分组,各路由器的LSDB最终将达到一致。
OSPF的分组类型:
(1)问候分组:用来发现和维护邻居路由器的可达性
(2)数据库描述分组:向邻居路由器给自己的链路状态数据库中的所有链路状态项目的信息摘要
(3)链路状态请求分组:像邻居路由器请求发送某些链路状态项目的详细信息
(4)链路状态更新分组:路由器使用这宗分组将其链路状态进行洪泛发送,即用洪泛法对全网更新链路状态
(5)链路状态确认分组:对链路状态更新分组的确认分组
OSPF在多点接入网络中路由器邻居关系的建立
(1)选举制定路由器DR(designated router)和备用的制定路由器BDR(back designated router)
(2)所有的非DR/BDR只与DR/BDR建立邻居关系
(3)非DR/BDR之间通过DR/BDR交换信息
OSPF能够用于规模很大的网络,OSPF把一个自治系统再划分若干的小范围称为区域,能够把洪泛法交换链路状态信息的范围局限于每个区域。
边界网关协议BGP的基本工作原理
外部网关协议EGP(例如边界网关协议BGP)用于自治系统之间的选择。
不同自治系统内,度量路由的"代价"可能不同,因此,对于自治系统之间的路由选择,使用"代价"作为度量来寻找最佳路由是不行的。
BGP是能力求寻找一条能到达目的网络切比较好的路由,并非寻找一条最佳路由。
BGP的四种报文
OPEN(打开)报文:用来与相邻的另一个BGP发言人建立联系,使通信初始化。
UPDATE(更新)报文:用来通告某一个路由信息,以及列出要撤销的多条路由。
KEEPLIVE(保活)报文:用来周期性的证实临站的连通性
NOTIFICATION(通知)报文:用来发送检测到的差错
IPv4数据报的首部格式
版本:占四个比特,标识IP协议的版本。
首部长度:占四个比特,表示数据报首部的长度,该字段的取值以死字节为单位。
可选字段:长度从1字节到40个字节不等。用来支持排错、测量及安全的措施。可选字段增加lIP数据报的功能,同时也使得IP数据报的首部长度变成可变的。
填充字段:确保首部长度为4字节的整数倍,使用全0填充。
区分服务:占8比特,用来获取更好的服务。
总长度:占16比特,表示IP数据报的总长度(首部+数据载荷)
总长度是首部长度加上数据载荷的长度
标识、标志、片偏移共同用于IP数据报分片。
当IPv4数据报长度超过MTU(最大传输单元)时,无法封装成帧,需要进行分片。
标识:占16比特,属于同一个数据报的各分片数据报应该具有相同的标识。IP软件维持一个计数器,每产生一个数据报,计数器加1,并将此值赋给标识字段。
标志字段:占3比特(DF:1标识不允许分片,0标识允许。MF:1标识后面还有分片,0表示这是最后一个分片。保留位设置0)
片偏移:占13比特,指出分片数据报的数据载荷部分偏移其在原数据报的位置有多少个单位,片偏移以8个字节为单位。
分片的过程
生成时间TTL:占8比特,最初以秒为单位,最大生存周期为255秒;路由器转发IP数据报时,将IP数据报首部中的该字段的值减去IP数据报在本路由器上所耗费的时间,若不为0就转发,否则就丢弃。现在以"跳数"为单位,路由器转发IP数据报时,将IP数据报首部中的该字段的值减1,若不为0就转发,否则就丢弃。(防止IP数据报在网络中永久兜圈)
协议字段:占8比特,指明IPv4数据报的数据部分是何种协议数据单元
首部检验和:占16比特,用来检测首部在传输过程中是否出现差错。比CRC检验码简单,称为因特网检验和。IP数据报每经过一个路由器,路由器都要重新计算首部检验和,因为某些字段的取值可能发生改变。
源IP地址和目的IP地址,各占31比特,用来填写发送该IP数据报的源主机的IP地址和接收该IP数据报的目的主机的IP地址。
网际控制报文协议ICMP
为了更有效的转发IP数据报和提高交付成功的机会,在网际层使用了网际控制报文协议ICMP(Internet Control Message Protocol)
主机或路由器使用ICMP来发送差错报告报文和询问报文。
ICMP差错报告报文被封装在IP数据报中发送。
ICMP主要有五种:
终点不可达:
当路由器或主机不能交付数据报时,就向源点发送终点不可达报文。(网络,主机,协议,端口,不可达等)
源点抑制:
路由器或者主机由于拥塞而丢弃数据报时,就向源点发送源点抑制报文,使源点知道应当把数据报的发送速率放慢。
时间超过:
当路由器收到一个目的IP地址不是自己的IP数据报,会将其生存时间TTL字段的值减1.若结果不为0,则将该IP数据报转发出去;若结果为0,除丢弃该IP数据报外,还要向源点发送时间超过报文。终点在规定时间内不能收到一个数据报的全部数据报片时,就把已收到的数据报片都丢弃,也会向源点发送时间超过报文。
参数问题:
当路由器或者主机收到数据报后,根据其首部中的检验字段发现出现了误码,就丢弃该数据报,并向源点发送参数问题报文。
改变路由(重定向):
路由器把改变路由报文发给主机,让主机知道下次应该吧数据报发送给另外的路由器。
以下情况不发送ICMP
ICMP询问报文:
回送请求和回答报文:
时间戳请求和回答:
虚拟专用网VPN与其他网络地址转换ANT
虚拟专用网VPN(Virtual Private Network)
利用公用的因特网作为本机构成各专用网之间的通信载体,这样的专用网又称为虚拟专用网。
网络地址转换NAT(Network Address Translation)
NAT能使大量使用内部专用地址的专用网络用户共享少量外部全球地址来访问因特网上的主机和资源。将私有地址与公有地址之间来回转换。
如果NAT路由器具有N个全球IP地址,那么至多只能有N个内网主机能够同时和因特网上的主机通信。
内网主机和外网主机通信只能通过内网主机先发起。不然NAT路由器找不到内网地址。