前言
你是否曾被复杂的IP地址划分搞得头晕?是否在面对路由协议配置时感到无从下手?网络层作为计算机网络的核心,其重要性不言而喻,却也是许多学习者和工程师的“痛点”。本文将从最基础的IPv4地址讲起,逐步深入到路由选择协议的核心原理,为你系统梳理网络层的完整知识体系。无论你是正在备考网络认证,准备技术面试,还是在实际工作中遇到网络配置难题,这篇文章都将成为你的实用指南。我们将用清晰的逻辑和实际案例,帮你彻底理解IP数据包如何跨越网络找到目的地,路由表如何构建最优路径,以及如何避免常见的配置错误。让我们一起揭开网络层的神秘面纱!


目录
静态路由配置是指用户或者网络管理员使用路由器的相关命令人工配置路由表
1. 网络层概述
- 网络层的主要任务是实现网络互联,进而实现数据包在各个网络之间的传输
- 要实现网络层任务,需要解决下面主要问题:
- 网络层向传输层提供怎样的服务
- 网络层寻址问题
- 路由选择问题(人工配置、路由选择算法)
- 因特网是目前全世界用户数量最多的互联网,它使用TCP/IP协议栈
- 由于TCP/IP协议栈的网络层使用网际协议IP,它是整个协议栈的核心协议。因此TCP/IP协议栈中网络层常称为网际层
2. 网络层提供的两种服务
- 面向连接的虚电路服务
- 没有连接的数据包服务
TCP/IP体系结构的因特网的网际层采用的是最简单、灵活的、无连接的、尽最大努力交付的数据包服务。
3. IPv4地址
3.1. IPv4地址概述
在TCP/IP体系中,IPV4地址是一个最基本的概念。
- IPv4地址就是给因特网中的每一个主机(可能是路由器)的每一个接口分配一个在全世界范围内唯一的32比特标识符。
IPv4地址的变址方法历史变化:
IPV4的表示方法:
采用点分十进制表示方法
3.2. 分类编址的IPv4地址
按照网络号的开头规则将其分为五类地址:
A类地址(固定网络号第一位为0):
- 网络号为八位:最小网络号位0(保留不指派),最大网络号为127(作为本地环回测试地址,不指派)
- 主机号全0:网络地址
- 主机号全1:广播地址
B类地址(固定网络开头为10):
- 网络号为16位:最小网络号位128.0,最大网络号位191.255
- 主机号全0:网络地址
- 主机号全1:广播地址
C类地址:(固定网络号开头为110):
- 网络号为32位:最小网络号位192.0.0,最大网络号为223.255.255
- 主机号0:网络地址
- 主机号1:广播地址
注意细节总结如下:
例题一:
针对一般不使用的IP地址总结如下:
例题二:
3.3. 划分子网的IPv4地址
- 32位的子网掩码可以表明分类IP地址的主机号部分被借用了几个比特作为子网号
- 子网掩码使用连续的比特1来对应网络号和子网号
- 子网掩码使用连续的比特0来对应主机号
- 将划分子网的IPv4地址与其对应的子网掩码进行逻辑与运算,就可以得到IPv4地址所在子网的网络地址
例1:
例2:
- 默认子网掩码是指在未划分子网的情况下使用的子网掩码
3.4. 无分类编址的IPv4地址
CIDR
- CIDR在32位IPv4地址后面加上 / 网络前缀占用的比特位数
- 实际上是将网络前缀相同的连续IPv4地址组成一个“CIDR地址块”
- 只要知道CIDR中的任何一个地址,就可以知道全部细节
路由聚合(构造超网)
如果R1直接将所连接的五个地址都转发给R2,那么R2的路由表中就会增加五条路由记录:
所以为了减少路由记录对路由表的占用,采取找共同前缀的方法:
从这个过程我们可以得出:
- 网络前缀越长,地址块越小,路由就越具体
- 如果路由器查表发现转发分组时有多条路由可选,选择网络前缀最长的那条(最长前缀匹配)
例题一:
3.5. IPv4地址的应用规划
定长的子网掩码
- 使用同一个子网掩码对子网进行划分
- 每一个子网分配的IP地址数量相同,容易造成IP地址的浪费
变长的子网掩码
- 使用不同的子网掩码对子网进行划分
- 能够减少IP地址的浪费
4. IP数据包的发送与转发过程
现在假设主机C要向主机发送数据,那么C怎么知道F和自己不在同一个网络呢?
那么主机C又是如何知道应该把数据给哪一个路由器进行转发呢?
路由器收到IP数据包后如何转发?
这个地方有一个注意的点:路由器对于广播是隔离的!!!
5. 静态路由配置及其可能产生的路由环路问题
静态路由配置是指用户或者网络管理员使用路由器的相关命令人工配置路由表
- 这种方法简单、开销小,但是不能及时适应网络的变化
- 一般只用于规模较小的网络中
动态路由选择是通过路由协议自动获取路由信息
- 比较复杂、开销比较大
- 但是能够比较好地适应网络状态的变化,适用于大规模网络
使用静态路由配置可能会导致产生路由环路的错误
- 配置错误
- 聚合了不存在的网络
- 网络故障
为了解决以上问题,我们可以再R2的路由表中配置黑洞路由,也就是将不存在网络对应的下一条设置为null0(是路由表中的一个虚拟接口)
当出现网络故障时,也可以使用同样的方式配置黑洞路由,防止因网络故障导致路由环路。
路由表中路由条目的类型
- 直连网络
- 静态路由(人工配置)
- 动态路由(路由选择协议)
6. 路由选择协议
6.1. 路由选择协议概述
因特网采用的路由选择协议的主要特点
- 自适应:动态路由选择,能较好地适应网络状态的变化
- 分布式:路由器之间能够交换路由信息
- 分层次:将整个因特网划分成许多个较小的自治系统
因特网采用的分层次路由选择协议
其中域内路由选择采用内部网关协议IGP,而域间路由选择采用外部网关协议EGP,注意这两类只是分类名称,而不是具体的路由选择协议!
常见的路由选择协议
路由器的基本结构
- 路由选择部分
- 分组转发部分
- 路由表一般仅包含从目的网络到下一跳的映射
- 路由表需要对网络拓扑的变化的计算最优化
- 转发表是从路由表得到的
- 转发表的结构应该是的查找过程最优化
6.2. 路由信息协议RIP的基本工作原理
6.2.1. 基本概念
- 路由信息协议RIP(Routing Information Protocol)是内部网关协议IGP中最先得到广泛使用的协议之一
- RIP要求自治系统AS维护AS中的每一个路由器到达AS中每一个网络的距离记录。这一组距离,称之为“距离向量”
- RIP使用跳数作为度量到目的网络的距离
- 路由器到达直连网络的距离定为1
- 路由器到达非直连网络的距离定为,所要经过的路由器数量加1
- 允许一条路径最多包含15个路由器,因此如果距离为16则表示不可达
- RIP认为,好的路由就是“距离更短的路由”,也就是通过路由器数量最少的路由
例如图中的R1->R4->R5,尽管带宽更小
- 如果到达目的网络有多条“距离相同”的路由可以进行等价负载均衡
6.2.2. RIP的更新规则
- RIP包含三个要点:
- 和谁交换信息(仅与相邻路由表)
- 交换什么信息(自己的路由表)
- 什么时候交换信息(周期性交换)
- RIP路由条目的更新规则
6.2.3. RIP协议存在的问题
- RIP存在坏消息传播得慢的问题(路由路由环路)
6.3. 开放最短路径优先OSPF的基本工作原理
6.3.1. 基本概述
- 开放最短路径优先OSPF,是为了克服RIP的缺点开发的
- 开放表明OSPF协议不是受某一家厂商控制,而是公开发表的
- 最短路径优先是因为使用了最短路径算法SPF
- OSPF是基于链路状态的,而不是想RIP一样基于距离向量的
- OSPF采用SPF算法计算路由,从算法上保证不会产生路由环路
- OSPF不限制网络规模,更新效率更高,收敛速度更快
- 链路状态是指本路由器和那些路由器相连,以及相应链路的代价
- 代价用来表示费用、距离、时延、带宽,等等。这些都有网络管理人员决定
6.3.2. OSPF规则
- OSPF相邻路由器之间通过交互问候分组,建立和维护邻居关系
- Hello分组封装在IP数据报中,发往组播地址224.0.0.5
- 发送周期为10秒
- 40秒未收到来自邻居路由器的Hello分组,则认为邻居路由器不可达
- 使用OSPF的每一个路由器都会产生链路状态报告LSA,LSA包含一下内容:
- 直连网络的链路状态信息
- 相邻路由器的链路状态信息
- LSA封装在链路状态更新分组LSU中,采用洪泛法进行发送
- 使用OSPF的每一个路由器都有一个链路状态数据库LSDB来储存LSA
- 通过个路由器洪泛发送封装LSA的分组,最终各个路由器的LSDB达成一致
- 使用OSPF个路由器基于LSDB进行最短路径优先SPF计算,构建出到达其他路由器的最短路径,即构建自己的路由表
6.3.3. OSPF基本工作过程
OSPF有下面五种分组类型:
- 问候(Hello)分组(用来发现和维护邻居路由器的可达性)
- 数据库描述分组(想邻居路由器给出自己链路状态数据库中的所有链路状态的摘要信息)
- 链路状态请求分组(向邻居路由器请求发送某些链路数据状态的详细信息)
- 链路状态更新分组(路由器使用这种分组洪泛发送链路状态,使得全网更新链路状态)
- 链路状态确认分组(是对链路状态更新分组的确认分组)
基本工作过程:
OSPF在多点接入网络中路由器邻居关系的建立:
- 选举指定路由器(DR)和备用的指定路由器(BDR)
- 非DR/BDR只与DR/BDR建立邻居关系(非BDR/DR只与DR/BDR交换信息)
OSPF为了适应更大规模的网络,OSPF把一个自治系统再划分成若干个更小的部分:
这样可以较少洪泛发送链路状态时的网络通信量
6.4. 边界网关协议BGP的基本工作原理
之前我们介绍过因特网采用分层次的路由选择协议
- 内部网关协议(例如之前介绍的RIP、OSPF)
- 都是设法使得分组在自治系统内部尽可能有效的从源网络传输到目的网络
- 无需考虑自治系统外的策略
- 外部网关协议(例如BGP)
- 不同的自治系统中代价的度量标准可能不同
- 自治系统之间的路由选择还必须考虑相关策略(政治、经济、安全等)
- 在配置BGP时,每一个自治系统要选择至少一个路由器作为该自治系统的“BGP代发言人”
- 不同的自治系统的BGP发言人要交换理由信息,首先必须建立TCP连接,端口号为179
- 在此TCP连接上交换BGP报文来建立BGP会话
- 利用BGP会话交换路由信息(增加新的路由、删除过时路由,以及报告错误)
- 使用TCP连接交换路由信息的两个BGP发言人,称作对方的邻站或对等站
- BGP发言人除了运行BGP外,还需要运行自己所在自治系统所使用的内部网关协议
- BGP发言人交换网络可达性信息
- 交换了可达性信息之后,根据策略从收到的路由器信息中找到能够到达各自治系统比较好的路由
BGP-4中四种报文:
- OPEN报文(用来与相邻的另一个BGP发言人建立关系,是通信初始化)
- UPDATE报文(用来通告某一路由信息)
- KEEPLIVE报文(周期性地证实邻站的连通性)
- NOTIFIATION报文(用来发送检测到的差错)
7. IPv4数据报的首部格式

















































1097

被折叠的 条评论
为什么被折叠?



