当前位置: 首页 > news >正文

网络通信的奥秘:网络层ip与路由详解(四)

⽹络层

IP协议

  • 主机:配有IP地址,但是不进⾏路由控制的设备;
  • 路由器:即配有IP地址,⼜能进⾏路由控制;
  • 节点:主机和路由器的统称;

协议头格式

1. 4 位版本

作用:表示 IP 协议的版本,比如常见的 IPv4(咱们日常上网大多用这个)、IPv6(未来的大趋势,地址更多)。

2. 4 位首部长度

作用:说明 IP 首部有多少个 32 位(4 字节)的块,由此算出首部总长度。因为后面可能有 “选项” 字段,所以首部长度不是固定的(但最小是 20 字节,也就是 5 个块:5×4=20)。

3. 8 位服务类型(TOS)

作用:告诉网络 “我想要什么样的服务”,比如是要速度快(如视频通话)、可靠性高(如银行转账),还是成本低(如普通文件传输)。

4. 16 位总长度(字节数)

作用:整个 IP 数据报(首部 + 数据)的总字节数。

5. 16 位标识 + 3 位标志 + 13 位片偏移

  • 16 位标识:给每个数据报一个 “身份证号”,确保分片后能对应上。
  • 3 位标志:有个 “是否允许分片” 的标记,还有 “是否是最后一片” 的标记。
  • 13 位片偏移:表示这片在原数据报中的位置(以 8 字节为单位),方便重组。

6. 8 位生存时间(TTL)

作用:数据报在网络中能经过的最大路由器数(每经过一个路由器,TTL 减 1,减到 0 就丢弃),防止数据报在网络里 “转圈” 耗资源。

7. 8 位协议

作用:说明 IP 首部后面的 “数据” 是哪种协议的(比如 TCP、UDP、ICMP 等),方便目的地主机处理。

8. 16 位首部检验和

作用:检测 IP 首部在传输中是否被篡改或出错(计算首部的校验和,到达时再算一次比对,不一样就丢弃)。

9. 32 位源 IP 地址 + 32 位目的 IP 地址

作用:分别是 “sender(发送方)” 和 “ receiver(接收方)” 的 IP 地址,相当于快递的 “寄件人地址” 和 “收件人地址”。

10. 选项(如果有) + 数据

  • 选项:是一些可选功能(比如记录路由、时间戳等,很少用,所以首部默认 20 字节)。
  • 数据:就是真正要传输的内容(比如网页、视频、聊天消息等)。

地址管理

⽹段划分

IP地址分为两个部分,⽹络号和主机号

⽹络号:保证相互连接的两个⽹段具有不同的标识;

主机号:同⼀⽹段内,主机之间具有相同的⽹络号,但是必须有不同的主机号;

  • 不同的⼦⽹其实就是把⽹络号相同的主机放到⼀起.
  • 如果在⼦⽹中新增⼀台主机,则这台主机的⽹络号和这个⼦⽹的⽹络号⼀致,
  • 但是主机号必须不能和 ⼦⽹中的其他主机重复. 
  • 通过合理设置主机号和⽹络号,就可以保证在相互连接的⽹络中,每台主机的IP地址都不相同.

CIDR

要理解CIDR(无类别域间路由,Classless Inter-Domain Routing),可以把它类比成城市道路的 “区间编号法”,解决传统 IP 地址分配的 “浪费” 和 “管理复杂” 问题。下面用大白话 + 类比详细拆解:

一、先搞懂 “传统 IP 分类” 的痛点

早期 IP 地址分 A、B、C 类(比如 A 类是 “大区域”,给大公司;C 类是 “小区域”,给小网吧),但这种分类很浪费:

  • 比如一家小公司要 100 个 IP,C 类只有 254 个(但可能用不完),A 类又给 1600 多万个(太浪费);
  • 同时,不同类别边界固定,路由表条目多,管理麻烦。

二、CIDR 的核心逻辑:“斜线记法”+“地址聚合”

CIDR 打破了 A、B、C 类的边界,用 **“网络前缀长度”** 来划分地址(比如192.168.1.0/24/24表示前 24 位是网络位,后 8 位是主机位)。

1. 斜线记法(Prefix Length)

格式是IP地址/网络前缀位数,比如:

  • 10.0.0.0/8:前 8 位是网络位,对应传统 A 类;
  • 172.16.0.0/16:前 16 位是网络位,对应传统 B 类;
  • 192.168.1.0/24:前 24 位是网络位,对应传统 C 类;
  • 还可以是192.168.1.0/22(前 22 位是网络位,跨了传统的 C 类边界)。

类比:把 IP 地址看成 “城市街道地址”,/24就是 “XX 市 XX 区 XX 街道”(前 24 位定位到街道,后 8 位定位到具体门牌号);/22就是 “XX 市 XX 区”(范围更大,包含多个街道)。

2. 地址聚合(路由汇总)

CIDR 可以把多个小网络 “合并” 成一个大网络,减少路由表的条目。

  • 比如有 4 个 C 类网络:192.168.1.0/24192.168.2.0/24192.168.3.0/24192.168.4.0/24,可以聚合为192.168.0.0/22(因为前 22 位都是192.168.00)。

类比:原本每个街道都要一条路由记录(比如 “送 XX 街道的快递走 XX 路”),现在聚合后变成 “送 XX 区的快递走 XX 高速”,路由表就简洁多了。

三、CIDR 的子网划分(VLSM,可变长子网掩码)

CIDR 还能把一个大网络 “拆分” 成多个小网络(按需分配,避免浪费)。

  • 比如192.168.0.0/24(254 个可用 IP),如果公司有两个部门,每个部门需要 100 个 IP,可以拆成192.168.0.0/25(126 个 IP)和192.168.0.128/25(126 个 IP)。

类比:一个大仓库(大网络),拆成两个小仓库(小网络),分别给两个部门用,避免空间浪费。

四、举个生活中的完整例子:小区宽带分配

假设运营商有个大 IP 段10.0.0.0/8,要给 “幸福小区” 分配 IP:

  • 小区有 10 栋楼,每栋楼需要约 200 个 IP,就可以用 CIDR 拆分成10.0.0.0/23(510 个 IP,给 1-2 栋)、10.0.2.0/23(510 个 IP,给 3-4 栋)…… 以此类推,既满足了每栋楼的 IP 需求,又通过聚合减少了运营商路由表的复杂度。

总结一下,CIDR 就像给 IP 地址管理装上了 “灵活分割 / 合并” 的工具,既解决了传统分类的浪费问题,又让网络路由更高效 —— 就像城市交通的 “动态车道规划”,窄路细分、宽路聚合,让数据传输的 “交通效率” 大大提升

特殊的IP地址

  • 将IP地址中的主机地址全部设为0,就成为了⽹络号,代表这个局域⽹;
  • 将IP地址中的主机地址全部设为1,就成为了⼴播地址,⽤于给同⼀个链路中相互连接的所有主机发送数据包;
  • 127.*的IP地址⽤于本机环回(loopback)测试,通常是127.0.0.1

loopback

一、什么是 loopback?

简单来说,loopback 是让网络数据 “发出去又自己绕回来” 的机制,就像你对着镜子说话,声音从嘴里发出,又被镜子反射回耳朵里。

在网络里,它对应的是 **“回环接口”(比如 IPv4 的127.0.0.1,IPv6 的::1)**,这个接口是设备(电脑、服务器等)“自己和自己通信” 的专属通道。

二、类比理解:自己给自己寄快递

想象你是一个 “小邮局”(主机),你给自己写了一封信(网络数据),地址写的是 “本邮局内部回环地址”(loopback 地址)。这封信不需要出邮局,直接在内部流转一圈就回到你手里 —— 这就是 loopback 的逻辑。

三、loopback 的作用(为什么需要它?)

  1. 测试网络协议栈:比如你在电脑上装了新的网卡驱动或网络软件,想测试 “数据能不能在本机正常收发”,就可以给127.0.0.1发数据。如果能收到,说明本机的网络协议栈(从应用层到物理层)是好的。类比:你测试自己的 “说话 - 听声” 功能,对着镜子说句话,能听到就说明嗓子和耳朵没问题。

  2. 本地服务调试:很多本地运行的服务(比如你在电脑上搭的网站、数据库),会把自己 “绑定” 到 loopback 地址上。这样只有你自己的电脑能访问这些服务,既安全又方便调试。类比:你在家搭了个 “私人小商店”(本地服务),只对 “自己家”(本机)开放,外人进不来,你可以先在内部测试商店的功能。

  3. 区分 “本机网络故障” 和 “外部网络故障”:比如你上不了网,先 ping127.0.0.1

    • 如果能 ping 通,说明本机网络协议没问题,故障可能在外部(比如路由器、宽带);
    • 如果 ping 不通,说明本机网络栈本身有问题(比如驱动没装对)。类比:你打电话打不出去,先给自己手机打个电话(loopback),能打通说明手机本身没问题,打不通就是手机坏了。

四、常见的 loopback 地址

  • IPv4:最常用的是127.0.0.1,整个127.0.0.0/8网段都是回环地址(比如127.1.2.3也能实现回环)。
  • IPv6:::1是回环地址。

举个实际例子:调试本地网站

你在电脑上用 Node.js 或 Python 搭了一个本地网站,配置时把服务器地址设为127.0.0.1,端口设为8080。然后在浏览器里输入http://127.0.0.1:8080,就能访问到这个本地网站 —— 这就是 loopback 在发挥作用,数据从浏览器发出去,绕了一圈又回到本机的服务器,你就能看到网页了。

总之,loopback 就像网络世界里的 “镜子” 或 “内部通信通道”,让设备能自己和自己对话,用来做测试、调试非常方便。

私有IP地址和公⽹IP地址

如果⼀个组织内部组建局域⽹,IP地址只⽤于局域⽹内的通信,⽽不直接连到Internet上,理论上使⽤任意的IP地址都可以,但是RFC1918规定了⽤于组建局域⽹的私有IP地址

  • 10.*,前8位是⽹络号,共16,777,216个地址
  • 172.16.到172.31.,前12位是⽹络号,共1,048,576个地址
  • 192.168.*,前16位是⽹络号,共65,536个地址包含在这个范围中的,都成为私有IP,其余的则称为全局IP(或公⽹IP);

路由选择

一、核心概念:什么是路由选择

路由选择发生在网络层,由路由器设备执行。其本质是路由器通过路由表,为收到的每个 IP 数据包决策下一跳(Next Hop)的过程,最终让数据包通过多段链路接力到达目标网络。

  • 路由表:路由器的 “地图”,记录了到达不同目标网络的路径信息,主要包含目标网络地址、子网掩码、下一跳地址、出接口和度量值(Metric)。
  • 度量值:判断路径 “优劣” 的标准,常见指标包括跳数(经过的路由器数量)、带宽、延迟、可靠性等。

二、关键分类:静态路由 vs 动态路由

根据路径信息的更新方式,路由选择分为静态和动态两种,二者适用场景差异显著。

对比维度静态路由(Static Routing)动态路由(Dynamic Routing)
配置方式管理员手动在路由器上逐条配置路由器通过路由协议自动学习
更新机制需手动修改,无自动更新网络拓扑变化时,协议自动同步新路径
适用场景小型、拓扑固定的网络(如家庭、小型企业)大型、拓扑复杂的网络(如运营商、校园网)
优点配置简单、不占用网络带宽、路径可控无需手动维护、适应拓扑变化能力强
缺点拓扑变化时易失效、大型网络配置工作量极大占用部分带宽传输协议报文、配置相对复杂

三、动态路由的核心:路由协议

动态路由依赖路由协议实现路径信息的交换与计算,主流协议可分为内部网关协议(IGP)和外部网关协议(EGP),分别用于自治系统(AS,一个独立管理的网络区域)内部和外部的路由通信。

1. 内部网关协议(IGP):自治系统内通信

用于同一 AS 内部,计算 “内部最优路径”,常见协议有两种:

  • RIP(路由信息协议):基于跳数作为唯一度量值,最大支持 15 跳(16 跳视为不可达),适用于小型网络,收敛速度较慢。
  • OSPF(开放式最短路径优先):基于链路状态(如带宽、延迟)计算路径,使用 Dijkstra 算法生成 “最短路径树”,收敛快、支持大型网络,是目前企业和校园网的主流选择。
2. 外部网关协议(EGP):自治系统间通信

用于不同 AS 之间(如联通和电信的网络互联),核心协议是BGP(边界网关协议)

  • 不追求 “最短路径”,而是基于 “策略” 选择路径(如优先选择带宽更高的链路、避免经过不稳定的 AS)。
  • 是互联网骨干网实现跨运营商通信的关键协议。

四、路由选择的核心流程

以一个简单场景(源主机 A→目标主机 B,需经过 2 个路由器)为例,流程可分为 3 步:

  1. 数据包到达路由器:主机 A 将数据包发送到网关路由器 R1,数据包头部携带目标主机 B 的 IP 地址。
  2. 路由器查询路由表:R1 提取目标 IP,与路由表中的 “目标网络地址 + 子网掩码” 匹配,找到对应的下一跳(如路由器 R2)和出接口。
  3. 数据包转发至下一跳:R1 将数据包从出接口发送到 R2,R2 重复 “查询路由表→转发” 的过程,最终将数据包送达主机 B 所在的网络。

五、常见问题:路由环路与解决方法

路由选择中易出现 “路由环路”(数据包在多个路由器间无限循环,无法到达目标),主要通过以下机制避免:

  • 水平分割:路由器不向 “学习到该路由的接口” 反发该路由信息,防止信息回传。
  • 毒性反转:当某条路由失效时,路由器将其度量值设为 “无穷大”(如 RIP 中设为 16 跳),并告知其他路由器,快速标记该路由不可用。
  • 触发更新:网络拓扑变化时,路由器立即发送更新报文,而非等待固定周期,加速路由收敛。
http://www.dtcms.com/a/565917.html

相关文章:

  • Spring 框架介绍
  • 物联网设备物理环境自适应监控与运维策略优化
  • Redis 简介与安装指南
  • 营销网站建设专业服务公司精准大数据营销公司
  • 同性做视频网站wordpress 制作支付页
  • 公司内部网站建设方案最简单的网站建设
  • Linux 系统的内存分布结构及其之间的关系(持续更新)
  • DeviceNet转ProfiNet边缘计算网关赋能:西门子 1200PLC 与库卡机器人通讯配置完整案例
  • 网络卡顿运维排查方案:从客户端到服务器的全链路处理
  • 成都网站seo公司网站优化报告
  • 聊城网站制作价格做名片的网站
  • 辽宁网站建设招标网站如何做百度推广方案
  • ECharts 实战:`connectNulls` 的妙用——绘制连续折线图并跳过 0 值节点
  • Mysql引擎
  • 报表类系统后端API设计思路
  • 谷歌的技术栈是什么?
  • Token 存储与安全防护
  • HAProxy 简介及配置
  • 电商系统网站建设网站客户端制作教程
  • 只会后端不会前端如何做网站免费wordpress页面编辑器
  • BIRGMA验厂要求
  • 铝电解电容器用阳极箔:市场格局、技术演进与未来趋势
  • linux服务-vsftpd搭建
  • SAP PP生产报废单功能分享
  • 汇川H5U+HMI仿真运行追飞剪程序
  • 服装设计网站免费临桂住房和城乡建设局网站
  • 原子性与原子操作
  • Java使用okhttp发送get、post请求
  • 两种上传图片的方式——91张先生
  • web3品牌RWA资产自主发行设计方案