3.1 网络层概述
网路层的主要任务是实现网络互连,进而实现数据包在各网络之间的传输。
要实现网络层任务,需要解决以下主要问题:
-
网络层向运输层提供怎样的服务("可靠传输"还是"不可靠传输")
-
网络层寻址问题
-
路由选择问题
因特网(Internet)是目前全世界用户数量最多的互联网,它使用TCP/IP协议栈。由于TCP/IP协议栈的网络层常使用网际协议IP,它是整个协议栈的核心协议,因此在TCP/IP协议栈中网络层常称为网际层 ------>不负责可靠传输。
3.2 网络层提供的两种服务
面向连接的虚电路服务
可靠通信由网络来保证
必须建立网络层的连接 ------ 虚电路VC(Virtual Circuit)
通信双方沿着已建立的虚电路发送分组
目的主机的地址仅在连接建立阶段使用,之后每个分组的首部只需携带一条虚电路的编号(构成虚电路的每一段链路都有一个虚电路编号)
这种通信方式如果再使用可靠传输的网络协议,就可使所发送的分组最终正确到达接收方(无差错按序到达,不丢失,不重复)
通信结束后,需要释放之前所建立的虚电路
很多广域分组交换网都使用面向连接的虚电路服务。
无连接的数据报服务
可靠通信由用户主机来保证
不需要建立网络层连接
每个分组可走不同的路径
每个分组的首部必须携带目的主机的完整地址
这种通信方式所传送的分组可能误码、丢失、重复和失序。
由于网络本身不提供端到端的可靠传输服务,这就使网络中的路由器可以做得比较简单,而且价格低廉(与电信网的交换机相比较)
因特网采用了这种设计思想,将复杂的网络处理功能置于因特网的边缘(用户主机和其内部的运输层),而将相对简单的尽最大努力的分组交付功能置于因特网核心。
3.3 IPv4地址
3.3.1 IPv4地址概述
IPv4地址就是给因特网(Internet)上的每一台主机/路由器的每一个接口分配一个在全世界范围内是唯一的32比特的标识符。
IPv4地址编址的三个历史阶段:
分类编址 --> 划分子网 --> 无分类编址
IPv4地址的表示方法:
由于32比特的IPv4地址不方便阅读等,采用点分十进制表示方法以便使用。

3.3.2 分类编址的IPv4地址

A类地址
最小网络号0,保留不指派
第一个可指派的网络号为1,网络地址为1.0.0.0
最大网络号127,作为本地环回测试地址,不指派
最小的本地回环测试地址为127.0.0.1
最大的本地环回测试地址为127.255.255.254
最后一个可指派的网络号为126,网络地址为126.0.0.0
B类地址
最小网络号也是第一个可指派网络号128.0
最大网络号也是最后一个可指派的网络号191.255
C类地址
最小网络号也是第一个可指派的网络号是192.0.0
最大网络号也是最后一个可指派的网络号为223.255.255
3.3.3 划分子网的IPv4地址
现在有一个大型局域网连接因特网,申请了B类地址 ------> 现在需要新增计算机,以及将原先的网络分为三个子网 ------> 需要新增网络地址 ------> 浪费地址、消耗资源的问题 ------> 从主机号部分借用一部分作为子网号 ------> 分类地址中主机号有多少比特倍用作子网号?
子网掩码:32比特的子网掩码可以表明分类IP地址的主机号部分被借用了几个比特作为子网号


默认的 子网掩码是指在未划分子网的情况下使用的子网掩码。
A类 ------> 255.0.0.0
B类 ------> 255.255.0.0
C类 ------> 255.255.255.0
3.3.4 无分类编址的IPv4地址
无分类域间路由选择 CIDR:CIDR使用"斜线记法",或称CIDR记法。即在IPv4地址后面加上斜线"/",在斜线后面写上网路前缀所占的比特数量。例:128.14.35.7/20 ------> 前20个比特为网路前缀
路由聚合(构造超网):找共同前缀
网路前缀越长,地址块越小,路由越具体;
若路由器查表转发分组时发现有多条路由可选,则选择网路前缀最长的那条,这称为最长前缀匹配,因为这样的路由更具体。
3.3.5 IPv4地址的应用规划
给定一个IPv4地址块,如何将其划分为几个更小的地址块,并将这些地址块分配给互联网中的不同网路,进而可以给各网络中的主机和路由器接口分配IPv4地址。
使用定长的 子网掩码 FLSM:使用同一个子网掩码来划分子网
使用变长的 子网掩码 VLSM:使用不同的子网掩码来划分子网
3.4 IP数据报
3.4.1 IP数据报的发送和转发过程
IP 数据报的发送和转发过程包含以下两部分:
主机发送IP数据报
路由器转发IP数据报
默认 网关
用户为了让本网路的主机能和其他网路中的主机进行通信,就必须给其指定本网络中的一个路由器,由该路由器帮忙进行转发IP数据报,所指定的路由器被称为默认 网关。
将路由器的某个接口的IP地址指定为该网络各个主机的默认网关。
路由器收到IP数据报后如何转发?
-
检查IP数据报首部是否出错:若出错,则直接丢弃该IP数据报并通告源主机;若没有出错,则进行转发
-
根据IP数据报的目的地址在路由表中查找匹配的条目:若找到匹配的条目,则转发给条目中指示的下一跳,若找不到,则丢弃该IP数据报并通告源主机。
路由器是隔离 广播域 的!!!------>避免广播风暴
3.4.2 IP数据报的首部格式

3.5 静态路由配置及其可能产生的路由环路问题
静态路由 配置是指用户或网路管理员使用路由器的相关命令给路由器人工配置路由表。
这种人工配置方式简单、开销小。但不能及时适应网络状态(流量、拓扑等)的变化。
一般只在小规模网络中采用。
使用静态路由配置可能出现以下导致产生路由环路的错误:
配置错误
聚合了不存在的网络
网络故障
静态路由
默认路由
在路由表中设置目的网络的地址为 0.0.0.0/0,下一跳为某路由器的接口,类型为静态
特定主机路由
目的网络的地址设置为特定主机的IP地址
特定主机路由的网络前缀最长,路由最具体
默认路由的网络前缀最短,路由最模糊
多条路由可选时,最长前缀匹配!!!
路由环路问题
配置错误
-
为了防止IP数据报在路由环路中永久兜圈,在IP数据报首部设有生存时间TTL字段。
-
IP数据报进入路由器后,TTL字段的值减1。若TTL的值不等于0,则被路由器转发,否则被丢弃。
聚合了不存在的路由
- 添加针对所聚合的,不存在的黑洞路由,下一跳为 null0
网络故障
- ,哪个路由器直连的网络出现故障,就给路由表添加黑洞路由
3.6 路由选择协议
3.6.1 路由选择协议概述
静态路由选择:采用人工配置的网络路由、默认路由、特定主机路由、黑洞路由等都属于静态路由。
动态路由选择:路由器通过路由选择协议自动获取路由信息。
因特网的路由选择协议的主要特点
BGP-4有以下四种报文
LSA被封装在链路状态更新分组(LSU)中,采用洪泛法发送。
使用OSPF的每个路由器都有一个链路状态数据库LSDB,用于存储LSA。
通过各路由器洪泛发送封装有自己LSA的LSU分组,各路由器的LSDB最终将达到一致。
使用OSPF的各路由器基于LSDB进行最短路径优先SPF计算,构建出各自到达其他各路由器的最短路径,即构建各自的路由表。
OSPF有以下五种分组类型:
类型1-问候(Hello)分组:用来发现和维护邻居路由器的可达性
类型2-数据库描述(Database Description)分组:向邻居路由器给出自己的链路状态数据库中的所有链路状态项目的摘要信息
类型3-链路状态请求(Link State Request)分组:向邻居路由器请求发送某些链路状态项目的详细信息
类型4-链路状态更新(Link State Update)分组:路由器使用这种分组将其链路状态进行泛洪发送,即用洪泛法对全网更新链路状态。
类型5-链路状态确认(Link State Acknowledgment)分组:对链路状态更新分组的确认分组
OSPF在多点接入网络中路由器邻居关系的建立
选举指定路由器DR和备用的指定路由器BDR
所有的非DR/BDR只与DR/BDR建立邻居关系
非DR/BDR之间通过DR/BDR交换信息
为了使OSPF能够用于规模很大的网络,OSPF把一个自治系统再划分为若干个更小的范围,称为区域(Area)
每个区域都有一个32比特的区域标识符,可以用点分十进制表示。
主干区域的区域标识符必须为0,也可表示为0.0.0.0
每个区域的范围不应太大,路由器不超过200个
好处:把利用洪泛法交换链路状态信息的范围局限于每一个区域而不是整个自治系统,这就减少了整个网络上的通信量。
区域内路由器IR:路由器的所有接口都在整个区域内
区域边界路由器ABR:一个接口用于连接自身所在区域,另一个接口用于连接主干区域
主干路由器BBR:区域边界路由器也可以是主干路由器
自治系统边界路由器ASBR:和本自治系统外的其他自治系统交换路由信息
3.6.4 边界网关协议BGP
在不同的自治系统中,度量路由的代价可能不同。无法使用代价寻找最佳路由。
BGP只能是力求寻找一条能够到达目的网络且比较好的路由(不能兜圈子),而非寻找最佳路由。
在配置BGP时,每个自治系统的管理员要选择至少一个路由器作为该自治系统的"BGP发言人"
不同自治系统的BGP发言人要交换路由信息,首先必须建立TCP连接,端口号为179
在此TCP连接上交换BGP报文以建立BGP会话
利用BGP会话交换路由信息(增加新路由,撤销过时路由等)
使用TCP连接交换路由信息的两个BGP发言人,彼此称为对方的邻站/对等站
BGP发言人除了运行BGP外,还必须运行自己所在自治系统所使用的内部网关协议IGP,例如OSPF/RIP
-
自适应:动态路由选择,能较好地适应网络状态的变化
-
分布式:路由器之间交换路由信息
-
分层次 :将整个因特网划分为许多较小的自治系统AS



3.6.2 路由信息协议RIP
RIP要求自治系统AS内的每一个路由器都要维护从它自己到AS内其他每一个网络的距离记录。这是一组距离,称为"距离向量D-V"
RIP使用跳数作为度量来衡量到达目的网络的距离。
-
路由器到直连网络的距离定义为1
-
路由器到非直连网络的距离定义为经过的路由器数加1
-
允许一条路径最多只能包含15个路由器。"距离"等于16时相当于不可达。因此RIP只能适于小网络

RIP认为好的路由是距离短的路由。
当到达同一目的网络有多条"距离相等"的路由时,可以进行等价负载均衡。
RIP包含以下三个要点:
和谁交换信息 ------>仅和相邻路由器交换信息
交换什么信息 ------>自己的路由表
何时交换信息 ------>周期性交换/如每30秒
RIP存在"坏消息传播得慢"的问题 ------>路由环路/距离无穷计数
限制最大距离为15
当路由表发生变化时立即发送更新报文,触发更新
让路由器记录收到某特定路由信息的接口,而不让同一路由信息再通过此接口向反方向传送
3.6.3 开放最短路径优先OSPF
"开放"表明OSPF协议不是受某一家厂商控制,而是公开发表的。
"最短路径优先"是因为使用了Dijkstra提出的最短路径算法SPF。
------>基于链路状态的。
------>采用SPF算法计算路由,从算法上保证了不会产生路由回路
------>不限制网络规模,收敛速度快
链路状态是指本路由器都和哪些路由器相邻,以及相应链路的"代价"。
------>代价指费用、距离、时延、带宽等。
OSPF相邻路由器之间通过交互问候(Hello)分组,建立和维护邻居关系。
Hello分组封装在IP数据报中,发往组播地址224.0.0.5;

发送周期为10秒
40秒未收到来自邻居路由器的Hello分组,则认为该邻居路由器不可达
使用OSPF的每个路由器都会产生链路状态通告LSA(Link State Advertisement)。LSA中包含:
-
直连网络的链路状态信息
-
邻居路由器的链路状态信息
-
OPEN(打开)报文:用来和相邻的另一个BGP发言人建立关系,使通信初始化
-
UPDATE(更新)报文:用来通告某一路由的信息,以及列出要撤销的多条路由
-
KEEPALIVE(保活)报文:用来周期性地证实邻站的连通性
-
NOTIFICATION(通知)报文:用来发送检测到的差错
3.7 网际控制报文协议
为了有效转发IP数据报和提高交付成功的机会 ------> 网际控制报文协议ICMP
------> 主机或路由器使用ICMP来发送差错报告报文和询问报文。
------> ICMP报文被封装在IP数据报中发送。
差错报告报文 1. 终点不可达
当路由器或主机不能交付数据报时,向源点发送。
- 源点抑制
当路由器或主机由于拥塞而丢弃数据报时,向源点发送。
- 时间超过
当路由器收到一个目的IP地址不是自己的IP数据报,将其生存时间TTL字段值减1。
若结果不为0,转发出去;若结果为0,丢弃IP数据报并向源点发送时间超过报文。
另外,当终点在预先规定的时间内不能收到一个数据报的全部数据报片式,就把已收到的数据报片丢弃,向源点发送时间超过报文。
- 参数问题
当路由器或目的主机收到IP数据报后,根据其首部中的检验和字段发现首部在传输过程中出现了误码,就丢弃该数据报,并向源点发送参数问题报文。
- 改变路由(重定向)
路由器把改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器,这样可以通过更好的路由。
ICMP 询问报文 回送请求和回答报文
由主机或路由器向一个特定的目的主机发出询问。
收到此报文的主机必须给源主机或路由器发送ICMP回送回答报文。
用来测试目的站是否可达及了解其有关状态。
时间戳请求和回答报文
请某个主机或路由器回答当前日期和时间。
在回答报文中有一个32位的字段,其中写入的整数代表从1900年1月1日起到当前时刻一共有多少秒
进行时钟同步和测量时间
ICMP 应用举例 分组网间探测 PING
------> ping 命令
用来测试主机或路由器间的连通性
应用层直接使用网际层的ICMP(没有通过运输层的TCP/UDP)
使用ICMP回送请求和回答报文
跟踪路由
内联网 VPN:同一机构由不同部门的内部网络所构成的虚拟专用网VPN。
外联网 VPN:一个机构的VPN需要有某些外部机构参加进来。
远程接入 VPN:在外地工作的员工需要访问公司内部的专用网络时,只要在任何地点接入因特网,运行在PC上的VPN软件,在PC和公司主机间建立VPN隧道,即可访问专用网络中的资源。
网络地址转换 NAT:能使大量使用内部专用地址的专用网络用户共享少量外部全球地址来访问因特网上的主机和资源。
3.8 虚拟专用网VPN与网络地址转换NAT
虚拟专用网 VPN(Virtual Private Network):利用公用的因特网作为本机构各专用网之间的通信载体,这样的专用网又称为虚拟专用网。虚拟专用网的各主机所分配的地址应该是本机构可自由分配的专用地址,而不是需要申请的、在因特网上使用的公有地址。
------>私有地址只能用于一共机构的内部通信,而不能用于和因特网的主机通信。即私有地址只能用作本地地址,而不能用作全球地址。
-
用来测试IP数据报从源主机到达目的主机要经过哪些路由器
-
Windows ------> Tracert 命令
-
Unix ------> traceroute 命令
网络地址与端口号转换 NAPT:利用运输层的端口号和IP地址一起转换。
外网主机不可以首先发起通信 ------>私有地址的主机不能直接充当因特网服务器