4.1网络层概述
网络层的主要任务是实现网络互连,进而实现数据包再各网络之间的传输
实现网络层任务,需要解决的问题
网络层向运输层提供怎样的服务(“可靠传输”还是“不可靠传输”)
网络层寻址问题
路由选择问题
因特网是目前全世界用户最多的互联网,它使用TCP/IP协议栈
由于TCP/IP协议栈的网络层使用网际协议IP,它是整个协议栈的核心协议,因此在TCP/IP协议栈中网络层常称为网际层
4.2网络层提供的两种服务
面向连接的虚电路服务
可靠通信由网络来保证
必须建立网络层的连接—虚电路VC(Virtual Circuit)
通信双方沿着已建立的虚电路发送分组
分组的首部只需携带一条虚电路的编号
通信结束后,需要释放之前所建立的虚电路
无连接的数据报服务
可靠通信由用户主机来保证
不需要建立网络层连接
每个分组可走不同路径
每个分组首部必须携带目的主机的完整地址
分组可能误码、丢失、重复和失序
由于网络本身不提供端到端的可靠传输服务,造价成本相对低廉
因特网采用了这种设计思想,也就是将复杂的网络处理功能置于因特网的边缘(用户主机和其内部的运输层),而将相对简单的尽最大努力的分组交付功能置于因特网核心
4.3.1IPv4地址概述
是给因特网上的每一台主机(或路由器)的每一个接口分配一个在全世界范围内是唯一的32比特的标识符
编址方法经历了三个历史阶段
分类编址(1981)
划分子网(1985)
无分类编址(1993)
采用点分十进制表示方法
4.3.2分类编址的IPv4地址
A类地址
网络号
8位(最高位固定为0)
主机号
24位
最小网络号0,保留不指派
第一个可指派的网络号为1,网络地址为1.0.0.0
最大网络号127,作为本地环回测试地址,不指派
最小本地环回测试地址为127.0.0.1
最大本地环回测试地址为127.255.255.254
最后一个可指派的网络号为126,网络地址为126.0.0.0
$$
可指派的网络数量为2^{8-1}-2 = 126(除去最小网络号和最大网络号)\\
可分配的IP数量为2^{24} - 2 =16777214(除去全0网络地址和全1广播地址)
$$
B类地址
网络号
16位(最高位固定为10)
主机号
16位
最小网络号也是第一个可指派的网络号128.0,网络地址128.0.0.0
最大网络号也是最后一个可指派的网络号191.255,网络地址191.255.0.0
$$
可指派的网络数量为2^{16-2}= 16384\\
可分配的IP数量为2^{16} - 2 =65534(除去全0网络地址和全1广播地址)
$$
根据2002年9月发表的RFC 3330文档,128.0可以分配
C类地址
网络号
24位(最高位固定为110)
主机号
8位
最小网络号也是第一个可指派的网络号192.0.0,网络地址192.0.0.0
最大网络号也是最后一个可指派的网络号223.255.255,网络地址223.255.255.0
$$
可指派的网络数量为2^{24-3}= 2097152\\
可分配的IP数量为2^8 - 2 = 254(除去全0网络地址和全1广播地址)
$$
根据2002年9月发表的RFC 3330文档,192.0.0可以分配
D类地址
多播地址
最高位固定1110
E类地址
保留为今后使用
最高位固定1111
注意事项
只有A类、B类和C类地址可分配给网络中的主机或路由器的各接口
主机号为“全0”的地址是网络地址,不能分配
主机号为“全1”的地址是广播地址,不能分配
一般不使用的特殊IP地址
地址0.0.0.0是一个特殊的IPv4地址,只能作为源地址使用,表示“在本网络上的本主机”,封装由DHCP Discovery报文的IP分组的源地址使用0.0.0.0
以127开头且后面三个字节非“全0”或“全1”的IP地址是一类特殊的IPv4地址,既可以作为源地址使用,也可以作为目的地址使用,用于本地软件环回测试
地址255.255.255.255只能作为目的地址使用,表示“只在本网络上进行广播”(路由器均不转发)
4.3.3划分子网的IPv4地址
为新增网络申请新的网络号回带来弊端
需要等待时间和花费更多的费用
会增加其他路由器中路由表记录的数量
浪费原有网络中剩余的大量IP地址
32比特的子网掩码可以表名分类IP地址的主机号部分被借用了几个比特作为子网号
用连续的比特1来对应网络号和子网号
用连续的比特0来对应主机号
将划分子网的IPv4与其对应的子网掩码进行逻辑与运算就可以得到IPv4地址所在的子网的网络地址
结果网络号和子网号被保留,主机号被清零
默认的子网掩码是指在未划分子网的情况下使用的子网掩码
A类地址默认子网掩码
255.0.0.0
B类地址默认子网掩码
255.255.0.0
C类地址默认子网掩码
255.255.255.0
4.3.4无分类编址的IPv4地址
提出采用无分类编址来解决IP地址紧张的问题
1993年,IETF发布了无分类域间路由选择CIDR(Classless Inter-Domain Routing)
消除了传统A类、B类、C类地址,以及划分子网概念
可以更有效的分配地址空间
使用“斜线记法”,在斜线后面写上网络前缀所占的比特数量
是将网络前缀都相同的连续IP地址组成一个“CIDR地址块”(如128.14.35.7/20)
只要知道CIDR地址块中的任何一个地址,就可以知道该地址块的全部细节
地址块的最小地址
地址块的最大地址
地址块的地址数量
地址块的聚合某类网络数量
地址掩码(子网掩码)
路由聚合(构造超网)
网络前缀越长、地址块越小,路由越具体
若路由器查表转发分组时发现由多条路由可选,则选择网络前缀最长的那条,这称为最长前缀匹配
4.3.5IPv4地址的应用规划
定长的子网掩码FLSM
使用同一个子网掩码来划分子网
子网划分方式不灵活:只能划分除2^n个子网(n是从主机号部分借用的用来作为子网号的比特数量)
每个子网所分配的IP地址数量相同,容易造成IP地址浪费
变长的子网掩码VLSM
使用不同的子网掩码来划分子网
子网划分方式灵活:可以按需分配
每个子网所分配的IP数量可以不同,尽可能减少对IP地址的浪费
4.4IP地址数据报的发送和转发过程
主机发送IP数据报
判断目的主机是否与自己在同一个网络
同一个网络属于直接交付
不同网络属于间接交付,传输给主机所在网络的默认网关(路由器),由默认网关帮忙转发
路由器转发IP数据报
检查IP数据报首付是否出错
根据IP数据报的目的地址在路由表中查找匹配的条目
4.5静态路由配置及其可能产生的路由环路问题
静态路由指人工配置的路由表
这种人工配置方式简单、开销小。但不能及时适应网络状态(流量、拓扑等)变化
可能导致出现路由环路
配置错误
聚合了不存在的网络
网络故障
路由条目的类型
直连网络
静态路由(人工配置)
动态路由(路由选择协议)
特殊的静态路由条目
默认路由(目的网络为0.0.0.0,地址掩码为0.0.0.0)
特定主机路由(目的网络为特定主机的IP地址,地址掩码为255.255.255.255)
黑洞路由(下一跳为null0)
4.6.1路由选择协议概述
静态路由选择
由人工配置的网络路由、默认路由、特定主机路由、黑洞路由等都属于静态路由
人工配置方式简单、开销小,但不能及时适应网络状态(流量、拓扑)的变化
一般只在小规模中采用
动态路由选择
路由器通过路由选择协议自动获取路由信息
能比较好地适应网络状态的变化
适用于大规模网络
因特网所采用的路由选择协议的主要特点
自适应
动态路由选择,能较好的适应网络状态的变化
分布式
路由器之间交换路由信息
分层次
将整个因特网划分为许多较小的自治系统AS(Automous System)
路由选择协议
内部网关协议IGP
基于距离向量
路由信息协议RIP
内部网关路由协议IGRP
增强型内部网关路由协议EIGRP
基于链路状态
开放式最短路径优先OSPF
中间系统到中级系统IS-IS
外部网关协议EGP
边界网关协议BGP
4.6.2路由信息协议RIP的基本工作原理
RIP要求自治系统AS内的每一个路由器都要维护从它自己到AS内其他每一个网络的距离记录。这是一组距离,称为“距离向量D-V(Distance-Vector)”
RIP使用跳数作为度量来衡量到达目的网络的距离
路由器到直连网络的距离定义为1
路由器到非直连网络的距离定义为所经过的路由器加1
允许一条路径最多只能包含15个路由器。“距离”等于16时相当于不可达。因此RIP只适用于小型互联网
RIP认为好的路由就是“距离短”的路由,也就是所通过的路由器数量最少的路由
当到达同一目的网络由多条“距离相等”的路由时,可以进行等价负载均衡
RIP包含三个要点
和谁交换信息
仅和相邻路由器交换信息
交换什么信息
自己的路由表
何时交换信息
周期性交换(例如每30秒)
路由器刚开始工作时,只知道自己到直连网络的距离为1
每个路由器仅和相邻路由器周期性地交换并更新路由信息
若干次交换和更新后,每个路由器都知道到达本AS内各网络的最短距离和下一跳地址,称为收敛
RIP存在“坏消息传播得慢”问题
又称为路由环路或距离无穷计数问题,这是距离向量算法的一个固有问题。可以采取多种措施减少出现该问题的概率或减小该问题带来的危害
限制最大路径距离为15(16表示不可达)
当路由表发送变化时就立即发送更新报文(即“触发更新”),而不仅时周期性发送
让路由器记录收到某特定路由信息的接口,而不让同一路由信息再通过此接口向反方向发送(即“水平分割”)
4.6.3开放最短路径优先OSPF的基本工作原理
OSPF是基于链路状态
采用SPF算法计算路由,从算法上保证了不会产生路由环路
不限制网络规模,更新效率高,收敛速度快
链路状态时指本路由器和哪些路由器相邻,以及相应链路的“代价”
“代价”用来表示费用、距离、时延、带宽,等等。
思科路由器OSPF计算代价的方法:100Mbps / 链路带宽
OSPF相邻路由器之间通过交互问候分组(Hello),建立和维护邻居关系
Hello分组封装再IP数据报中
使用OSPF的每个路由器会产生链路状态通告LSA
直连网络的链路状态信息
邻居路由器的链路状态信息
LSA被封装再链路状态更新分组LSU中,采用洪泛法发送
使用OSPF的每一个路由器都有一个链路状态数据库LSDB,用于存储LSA
通过各路由器洪泛发送封装又自己的LSA的LSU分组,各路由器的LSDB最终达到一致
使用OSPF的各路由器基于LSDB进行最短路径优先SPF计算,构建出各自到达其他各路由器的最短路径,即构建各自的路由表
OSPF有五种分组类型
问候(Hello)分组
数据库描述(Database Description)分组
链路状态请求(Link State Request)分组
链路状态更新(Link State Update)分组
链路状态确认(Link State Acknowledgment)分组
OSPF在多点接入网络中路由器邻居关系的建立
选举指定路由器DR和备用的指定路由器BDR
所有的非DR/BDR只与DR/BDR建立邻居关系
非DR/BDR之间通过DR/BDR交换信息
4.6.4边界网关协议BGP的基本工作原理
BGP只是力求寻找一条能够到达目的网络且比较好的路由,并非寻找一条最佳路由
配置BGP时,每个自治系统的管理员至少选择一个路由器作为该自治系统的“BGP发言人”
不同自治系统的BGP发言人要交换路由信息,首先必须建立TCP连接
TCP连接上交换BGP报文以建立BGP会话
利用BGP会话交换路由信息(例如,增加新的路由,或撤销过时的路由,以及报告出错的情况等)
BGP发言人除了运行BGP外,还必须运行自己的自治系统所使用的内部网关协议IGP,例如OSPF或RIP
RGP发言人交换网络可达性的信息
当BGP发言人互相交换了网络可达性的信息后,各BGP发言人就根据所采用的策略从收到的路由信息中找出到达各自治系统的较好的路由。也就是构造出树形结构、不存在回路的自治系统连通路
BGP-4有四种报文
OPEN报文
UPDATE报文
KEEPLIVE报文
NOTIFICATION报文
4.7IPv4数据报的首部格式
固定部分(20字节)
版本
首部长度
区分服务
总长度
标识
标志
片偏移
帧的数据载荷长度受限于最大传输单元MTU
以太网规定MTU值为1500字节
生存时间TTL
协议
首部校验和
源IP地址和目的IP地址
这三个字段共用于IP数据报分片
可变部分(40字节)
可选字段(长度可变)
长度从1个字节到40字节不等,用来支持排错、测量及安全等措施
可选字段增加了IP数据报的功能,但这同时也使得IP数据报的首部长度成为可变的。这就增加了每一个路由器处理IP数据报的开销。实际上可选字段很少被使用
填充字段
确保首部长度为4字节的整数倍,使用全0填充
4.8网际控制报文协议ICMP
主机或路由器使用ICMP来发送差错报告报文和询问报文
ICMP报文被封装在IP数据报中发送
ICMP差错报文
终点不可达
当路由器或主机不能交付数据报时,就向源点发送终点不可达报文。
源点抑制
当路由器或主机由于拥塞而丢弃数据报时,就向源点发送源点抑制报文,使源点知道应当把数据报的发送速率放慢
时间超过
当TTL值为0时,除丢弃该IP数据报外,还要向源点发送时间超过报文
参数问题
当首部出现误码,就向源点发送参数问题报文
改变路由(重定向)
让主机知道下次应将数据发送给通过更好的路由
不应发送ICMP差错报告报文的情况
对ICMP报文不再发送ICMP
对第一个分片的数据报片的所有后续数据报片不发送
对具有多播地址的数据报不发送
对具有特殊地址(如127.0.0.0或0.0.0.0)的数据报不发送
常用的ICMP询问报文
回送请求和回答
用来测试目的站是否可达
时间戳请求和回答
用来进行时钟同步和测量时间
4.9虚拟专用网VPN与网络地址转换NAT
利用公用的因特网作为本机构各专用网之间的通信载体,这样的专用网又称为虚拟专用网
各主机所分配的地址应该是本机构可自由分配的专用地址
专用(私有)地址:
10.0.0.010.255.255.255(10/8地址块)172.31.255.255(172.16/12地址块)
172.16.0.0
192.168.0.0~192.168.255.255(192.168/16地址块)
同一机构内不同部分的内部网络所构成的虚拟专用网VPN又成为内联网VPN
有时一个机构的VPN需要某些外部机构参加进来,这样的VPN就成为外联网VPN
在员工的PC和公司的主机之间建立VPN隧道,即可访问专用网络中的资源。这种vpn成为远程接入VPN
网络地址转换NAT
NAT能使大量使用内部专用地址的专用网络用户共享少量外部全球地址来访问因特网上的主机和资源
该转换方法存在一个问题:如果NAT路由器具有N各地址IP地址,那么至多只能有n个内网主机能够同时和因特网上的主机通信
用一个全球IP地址就可以使多个拥有本地地址的主机同时和因特网上的主机进行通信。这种将端口号和IP一起进行转换的技术叫做网络地址与端口号转换NAPT