网络层
网络层的主要任务是实现网络互连,进而实现数据在各网络之间的传输。
网络层提供的两种服务
面向连接的虚电路服务
-
可靠通信由网络来保证
-
必须建立网络层的连接 - - 虚电路VC
-
通信双方沿着已建立的虚电路发送分组
-
目的主机的地址仅在连接建立阶段使用,之后每个分组的首部只需携带一条虚电路的编号(构成虚电路的每一段链路都有一个虚电路编号)
-
使用这种通信方式如果在使用可靠传输的网络协议就可以使发送的分组最终正确到的接收方(无差错按序到达,不丢失,不重复)
-
通信结束后需要释放之前所建立的虚电路
无连接的数据报服务(因特网使用)
- 可靠通信应当由用户主机来保证
- 不需要建立网络层连接
- 每个分组可以走不同的路径
- 每个分组的首部必须携带目的主机的完整地址
- 这种通信方式所传送的分组可能误码,丢失,重复和失序
- 由于网络本身不提供端到端的可靠传输服务,这使得网络中的路由器可以做的比较简单
- 因特网采用这种思想将复杂的网路处理功能至于因特网边缘(用户主机和其内部的运输层),相对简单的尽最大努力的分组交付功能至于因特网核心
两者对比
IPV4
概述
IPv4 地址就是因特网上的每一台主机(或路由器)的每一个接口分配一个在全世界范围内是唯一的32位比特的标识符
32位的IPv4地址不方便阅读,记录和输入等,因此IPv4地址采用点分十进制表示方法以方便用户使用。
分类编址
A类地址网络号最高一位固定为0
B类地址网络号最高两位固定为 10
C类地址网络号最高三位固定为 110
D类地址网络号最高四位固定为 1110
E类地址网络号最高四位固定为 1111
A类网络地址
A类地址网络号为 8位,最小网络号为0,该网络号被保留不能指派
最大网络号为127为本地环回测试地址,不能指派(常见的127.0.0.1即最小的本地环回测试地址)
可分配网络号为 1~126
可指派的网络数量为 126 (除 0 和 127)
B类网络地址
B类网络地址网络号为16位,最高两位固定位10
最小网络号为 128.0
最大网络号为 191.255
可指派的网络数量为 2^(16 - 2) = 16384
每个网络中可分配的IP地址数量为 2^16 - 2 = 65534
C类网络地址
C类地址最高三位固定位110 ,网络号为24位
最小网络号为 192.0.0
最大网络号为 223.255.255
可指派的网络数量为 2^(24 - 3) = 2096152
每个网络中可分配的IP地址数量为 2^8 - 2 = 254
练习
地址0.0.0.0是一个特殊的IPv4地址,只能做源地址使用,表示在本网络上的本主机,封装有DHCP Discovery报文的IP分组的源地址使用0.0.0.0
以127开头且后面三个字节非”全0”或”全1”的IP地址是一类特殊的IPv4地址, 既可以作为源地址使用,也可以作为目的地址使用,用于本地软件环回测试,例如常用的环回测试地址127.0.0.1;
地址255.255.255.255是一个特殊的IPv4地址,只能作为目的地址使用,表示“只在本网络上进行广播(各路由器均不转发)。
划分子网的IPv4地址
从主机号中借几位作为子网编码,来进行子网的划分
子网掩码:
32bit的子网掩码可以表明分类IP地址的主机号部分被借用了几位比特作为子网号
- 子网掩码使用连续的比特1来对应网络号和子网号
- 子网掩码使用连续的比特0来对应主机号
- 将划分子网的IPv4地址与其对应的子网掩码进行逻辑与运算就可得到IPv4地址所在子网的网络地址
例子
默认子网掩码
无分类编址
划分子网在一定程度上缓解了因特网在发展中遇到的困难,但是数量巨大的C类网因为其地址空间太小并没有得到充分使用,而因特网的IP地址仍在加速消耗,整个IPv4地址空间面临全部耗尽的威胁。
无分类编址的出现来解决IP地址紧张的问题
1993年,IETF发布了无分类域间路由选择选择CIDR的RFC文档
- CIDR消除了传统的A,B,C类地址以及划分子网的概念
- CIDR可以更加有效地分配IPv4的地址空间,并且可以在新的IPv6使用之前允许互联网的规模持续增长
CIDR采用斜线记法,或称CIDR记法,即在IPv4地址后面加上斜线“/”,在斜线后面写上网络前缀所占的比特数量
例: 128.14.25.7 /20
/20代表网络前缀占用的比特数量为20
主机编号站比特数量为12
练习
构造超网:
IPv4地址的应用规划
IP数据报的发送和转发过程
IP数据报的发送和转发过程包含两部分:
- 主机发送IP数据报
- 路由器转发IP数据报
源主机如何知道目的主机是否与自己在同一个网络中?
将自己的ip地址与自己的子网掩码相与,得到自己的网络地址
将目的ip地址与自己的子网掩码相与,判断得到的网络地址与自己的网络地址是否相同从而来判断是否在同一个网络中。
默认网关 : 用户为了让本网络中的主机能与其他网络中的主机进行通信,就必须给其指定本网络中的一个路由器,由该路由器进行转发,这个路由器也可称为默认网关。
路由表:
将目标地址与地址掩码相与,查看目标网络
路由器不会转发广播数据报
静态路由配置及其可能产生的路由环路问题
静态路由配置是指用户或网络管理员使用路由器的相关命令给路由器人工配置路由表
- 这种人工配置方式简单,开销小,但不能及时适应网络状态的变化
- 一般只在小规模网络中采用
使用静态路由配置可能出现一下导致路由环路的错误
- 配置错误
- 聚合了不存在的网络
- 网络故障
路由选择协议
静态路由选择
由人工配置的网络路由、默认路由、特定主机路由、黑洞路由等都属于静态路由
这种人工配置方式简单、开销小
但不能及时使用网络状态(流量,拓扑等)的变化
一般只在小规模网络中采用
动态路由选择
路由器通过路由选择协议自动获取路由信息
比较复杂、开销比较大
能较好地适应网络状态的变化
适用于大规模的网络
概述
路由器采用的路由选择协议的主要特点
- 自适应:动态路由选择,能较好地适应网络状态的变化
- 分布式:路由器之间交换路由信息
- 分层次:将整个因特网划分成为许多较小的自治系统AS
分层次:
域间路由选择采用 外部网关协议EGP类别的路由选择协议
域内路由选择采用 内部网关协议IGP类别的路由选择协议
常见的路由选择协议
路由器的基本结构
- 路由表一般仅包含从目的网络到下一跳的映射
- 路由表需要对网络拓扑变化的计算最优化
- 转发表是从路由表得出的
- 转发表的结构应当使查找过程最优化
路由信息协议RIP
路由信息协议RIP是内部网关协议IGP中最先得到广泛应用的协议之一
RIP要求自治系统AS内的每一个路由器都要维护从它自己到AS内其他每一个网络的距离纪录,这组记录称为“距离向量D-V”
RIP使用跳数作为度量来衡量到达目的网络的距离
- 路由器到直连网络的距离定义为
- 路由器到非直连网络的距离定义为所经过的路由器数加1
- 允许一条路径最多只包含15个路由器。“距离”等于16时相当于不可达。因此,RIP只适用于小型互联网
RIP认为好的路由就是距离短的路由,也就是所通过路由器数量最少的路由
当到达同一目的网络有多条“距离相等”的路由时,也可以进行等价负载均衡
RIP包含三个要点:
- 仅和相邻路由器交换信息
- 交换自己的路由表
- 周期性交换
例题:
RIP协议中距离为16表示目的网络不可达
坏消息传的慢问题
即网络N1失效后,路由器R1设到N1的跳数为16表示不可达,但是R2中未更新,R2先将自己路由表中到达网络N1通过R1为两跳的记录告诉R1,R1更新自己的路由表,两者互相被谣言误导。
开放最短路径优先OSPF
开放最短路径优先OSPF(Open Shortest Path First), 是为克服RIP的缺点在1989年开发出来的。
“开放” 表明OSPF协议不是受某一家厂商控制,而是公开发表的。
“最短路径优先”是因为使用了Dijkstra提出的最短路径算法SPF。
OSPF是基于链路状态的,而不像RIP那样是基于距离向量的。
OSPF采用SPF算法计算路由,从算法上保证了不会产生路由环路。
OSPF不限制网络规模, 更新效率高,收敛速度快。
链路状态是指本路由器都和哪些路由器相邻,以及相应链路的“代价”(cost) 。
“代价” 用来表示费用、距离、时延、带宽,等等。这些都由网络管理人员来决定。
-
OSPF相邻路由器之间通过交互问候分组,建立和维护邻居关系
-
Hello分组封装在IP数据报中,发往组播地址224.0.0.5
-
发送周期为10s
-
40秒未收到来自邻居路由器的hello分组,则认为该路由器不可达
-
使用OSOF的每个路由器都会产生链路状态通告LSA,LSA包括
- 直连网络的链路状态信息
- 邻居路由器的状态链路信息
LSA被封装在链路状态更新分组LSU中,采用洪泛法发送
使用OSPF的每个路由器都有一个链路状态数据库LSDB,用于存储LSA。
通过各路由器洪泛发送封装有自己LSA的LSU分组,各路由器的LSDB最终将达到一致。
使用OSPF的各路由器基于LSDB进行最短路径优先SPF计算,构建出各自到达其他路由器的最短路径,即构建各自的路由表
OSPF有五种分组类型
-
问候分组 Hello
用来发现和维护邻居路由器的可达性
-
数据库描述分组
向邻居路由器给出自己数据链路状态数据库中的所有链路状态项目的摘要信息
-
链路状态请求分组
向邻居路由器请求发送某些链路状态项目的详细信息
-
链路状态更新分组
路由器使用这种分组将其链路状态进行洪泛发送,即用洪泛法对全网更新链路状态
-
链路状态确认分组
对链路状态更新分组的确认分组
边界网关协议BGP
对于不同自治系统内,度量路由的“代价”(距离,带宽,费用等)可能不同。因此,对于自治系统之间的路由选择,使用“代价”作为度量来寻找路由是不行的。
自治系统之间的路由选择必须考虑相关政策(政治,经济,安全等)
IPv4数据报的首部格式
-
版本
占四个比特,表示ip协议的版本,通信双方使用IP协议的版本必须一直。目前使用的IP协议版本号为4(IPv4)
-
首部长度
占4比特,表示IP数据报首部的长度,该字段的取值以4字节为单位。最小十进制取值为5,表示IP数据报首部只有20字节固定部分
最大十进制取值为15,表示IP数据报首部包含20字节固定部分和最大40字节可变部分
-
可选字段
长度从1个字节到40个字节不能,用来支持排错,测量及安全等措施可选字段增加了IP数据报的功能,但这同时也使得IP数据报的部长度称为可变的,增加了每一个路由器处理IP数据报的开销,实际上很少被使用
-
填充字段
确保首部长度为4字节的整数倍,使用全0进行填充
-
区分服务
占8bit,用来获得更好的服务
-
总长度
占16 bit ,表示IP数据报的总长度(首部+数据载荷),最大取值为十进制的65535,以字节为单位
-
标识,标志,片偏移 三个字段共同用于IP数据报分片
当IPv4数据报长度超过MTU时,无法封装,需要进行分片
以太网规定MTU值为1500字节
-
生存时间
占8bit,最初以秒为单位,最大生存周期为255秒;路由器转发IP数据报时,将IP数据报首部中的该字段的值减去IP数据报在本路由器上消耗的时间,如果不为零就转发,否则就丢弃。现在以跳数为单位,路由器转发一次该字段减1
-
协议
-
首部校验和
占1 6比特,用来检测首部在传输过程中是否出现差错。比CRC检验码简单,称为因特网检验和。
IP数据报每经过一个路由器,路由器都要重新计算首部检验和,因为某些字段(生存时间、标志,片偏移等)的取值可能发生变化。 -
源IP地址和目的IP地址
各占32bit 用来填写发送该IP数据报的源主机的ip地址和接收该IP数据报的目的主机的ip地址
网际控制报文协议ICMP
ICMP的差错报告报文主要有五种
-
终点不可达
- 当路由器或主机不能交付数据报时,就向源点发送终点不可达报文,具体可根据ICMP的代码字段细分为网络不可达,目的主机不可达,目标协议不可达,目标端口不可达,目的网络未知,目的主机未知等13种错误。
-
源点抑制
当路由器或主机由于拥塞而丢弃数据报时,就向源点发送源点抑制报文,使源点知道应当把数据报的发送速率放慢
-
时间超过
当路由器收到一个目的IP地址不是自己的IP数据报,会将其生存时间TTL字段的值减1.若结果不为0,则将该IP数据报转发出去;若结果为0,除丢弃该IP数据报外,还要向源点发送时间超过报文。
当终点在预先规定的回见内不能收到一个数据报的全部数据报片时,就把已收到的数据报片都丢弃,也会向源点发送时间超过报文
-
参数问题
当路由器或目的主机收到IP数据报后,根据其首部中的检验和字段发现首部在传输过程中出现了误码,就丢弃该数据报,并向源点发送参数问题报文
-
改变路由(重定向)
路由器把改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器(可通过更好的路由)。
ICMP应用:
-
方法:TTL从1开始进行发送ICMP回送报文,没经过一个路由器转发TTL减1,从而得知经过了哪个路由器
虚拟专用网VPN与网络地址转换NAT
利用公用的因特网作为本机构各专用网之间的通信载体,这样的专用网又称为虚拟专用网。