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

计算机网络Day01

计算机网络网络层学习总结:从寻址到路由的核心逻辑

最近花了几天时间啃完计算机网络的网络层的一小部分,从一开始对着“数据报”“虚电路”一头雾水,到现在能理清IP地址划分和路由转发的逻辑,总算有了些眉目。这篇博客就以我的学习视角,把网络层的核心知识点串一遍,也给同样在学的小伙伴做个参考~

一、网络层:到底在解决什么问题?

先搞懂网络层的定位——它是“跨网络传输的指挥官”。比如我们在家用WiFi发消息到公司服务器,数据要经过家庭路由器、运营商网络、公司网关等多个网络,网络层的核心任务就是把数据准确送到目标地址,具体要做两件事:

  1. 寻址:确定目标设备的“网络位置”(比如IP地址);
  2. 路由选择:选一条从源到目的的最优路径(比如走电信还是联通的链路)。

二、网络层的两种传输方式:数据报 vs 虚电路

网络层有两种核心传输模型,刚开始总搞混,后来画了个对比表才算分清,本质是“要不要先建连接”的区别:

对比维度数据报(无连接服务)虚电路(有连接服务)
连接建立无需建立,直接发传输前先建虚拟电路
地址携带每个数据包带完整源/目的IP数据包只带简短“虚电路号”
路径选择每个数据包独立选路(可能走不同路)所有数据包走同一条固定路径
可靠性不保证(可能丢包、乱序)保证(按序到达,有确认重传)
适用场景实时应用(视频会议、手游)可靠传输场景(文件下载、邮件)
代表协议IP协议(我们常用的互联网就是数据报网络)X.25、ATM(早期电信网络用得多)

举个直观的例子:数据报像寄快递,每个包裹都写全地址,快递员可能走不同路线;虚电路像打电话,先拨通建立连接,通话过程中数据都走这条“专线”

三、IP地址:设备的“网络身份证”

IP地址是网络层的“核心语言”,32位二进制数(通常转成点分十进制,比如192.168.1.1),但不是“一台设备一个IP”,而是“一个网络接口一个IP”——比如路由器有3个接口,就有3个IP地址。

3.1 传统IP地址分类(A/B/C类)

早期IP地址按“网络号+主机号”的固定长度划分,虽然现在有CIDR,但分类是基础,必须记:

地址类别二进制开头有效网络号范围网络号长度主机号长度单个网络最大主机数
A类01.0.0.0~126.255.255.2557位24位(2^{24}-2)(约1677万,减2是去掉全0网络地址和全1广播地址)
B类10128.1.0.0~191.255.255.25514位16位(2^{16}-2)(约65534)
C类110192.0.1.0~223.255.255.25521位8位(2^8-2)(254)

这里要注意两个坑:

  • A类的127.x.x.x是“回环地址”,用于本机测试(比如ping 127.0.0.1测TCP/IP协议栈);
  • 全0地址(0.0.0.0)表示“本网络的本主机”,只能当源地址(比如主机刚启动没IP时用);全1地址(255.255.255.255)是全网广播,路由器不转发。

3.2 私有IP地址:内部网络的“专属地址”

公网IP不够用?于是有了“私有IP”——只在内部网络用,公网路由器不转发,比如家里的手机、电脑用的都是私有IP:

类别私有IP范围子网掩码
A类10.0.0.0~10.255.255.255255.0.0.0
B类172.16.0.0~172.31.255.255255.255.0.0
C类192.168.0.0~192.168.255.255255.255.255.0

3.3 子网划分与CIDR:解决地址浪费

传统分类有个问题:比如一个小公司要100台主机,选C类(最多254台)会浪费154个,选B类(6万多)更浪费——这时候“子网划分”就派上用场了。

子网划分原理

从“主机号”里拆一部分当“子网号”,比如B类地址(网络号14位+主机号16位),拆8位当子网号,就变成“网络号14位+子网号8位+主机号8位”,这样一个B类地址能拆成256个子网,每个子网最多254台主机,大大减少浪费。

子网掩码:怎么判断IP属于哪个子网?

子网掩码是“区分网络/子网部分”的工具,和IP地址做按位与运算,结果就是“网络地址”。
举个例子:IP=162.15.13.56,子网掩码=255.255.0.0(B类默认掩码)
二进制计算:
IP:10100010.00001111.00001101.00111000
掩码:11111111.11111111.00000000.00000000
按位与结果:10100010.00001111.00000000.00000000 → 162.15.0.0(网络地址)

CIDR:灵活的地址划分

后来子网划分也不够灵活,就有了CIDR(无类别域间路由),用“x.x.x.x/L”表示,L是“网络前缀长度”(比如192.168.1.0/24,代表前24位是网络前缀,后8位是主机号)。
CIDR打破了A/B/C类的限制,比如想要200台主机,只需要前缀长度23位(主机号9位,(2^9-2=510)台),更高效。

四、路由:数据怎么选路?

知道了IP地址,接下来要解决“数据怎么从源到目的”——这就是路由的核心,先分清两个易混概念:

  • 路由(Routing):选路径的过程(比如从北京到上海,选高铁还是飞机);
  • 转发(Forwarding):选好路径后,路由器把数据包从一个接口传到下一个接口的动作(比如高铁上的站点停靠)。

4.1 路由算法:静态 vs 动态

路由算法分两类,本质是“路径要不要手动配”:

对比维度静态路由动态路由
配置方式管理员手动写路由表路由器通过协议自动学习(比如OSPF、RIP)
适应性网络变了要手动改,不灵活网络拓扑变了自动更新路由表
适用场景小型网络(比如家庭、小公司)中大型网络(比如运营商、企业园区网)
故障恢复要人工干预,恢复慢自动算新路径,恢复快

实际场景中会“混合用”:比如公司核心层用动态路由(应对复杂网络变化),边缘层用静态路由(简化管理)。

4.2 动态路由的两种核心算法

动态路由算法主要分两类,各有特点:

  1. 距离向量路由算法

    • 原理:路由器只跟邻居分享“自己到各个网络的距离”(比如跳数),像“传话”一样扩散路由信息;
    • 代表协议:RIP(适用于小型网络);
    • 缺点:有“无穷计数问题”(比如某条链路断了,路由信息扩散慢,可能导致环路)。
  2. 链路状态路由算法

    • 原理:每个路由器都“知道全网拓扑”(通过广播自己的链路状态,比如带宽、延迟),然后自己算最优路径;
    • 优势:收敛快(算路径快)、路径优;
    • 缺点:配置复杂,对路由器性能要求高;
    • 代表协议:OSPF(企业网常用)。

4.3 路由转发的关键规则:最长前缀匹配

路由器转发数据包时,会从路由表中选“和目的IP重叠位数最多”的路由——这就是“最长前缀匹配”,确保路径精准。

举个例子:路由表有两条路由:

  • 路由A:192.168.1.0/24(覆盖192.168.1.1~192.168.1.254);
  • 路由B:192.168.0.0/22(覆盖192.168.0.1~192.168.3.254)。

当数据包目的IP是192.168.1.100时:

  • 和A匹配:重叠24位(完全命中192.168.1.x);
  • 和B匹配:重叠22位(命中192.168.0.0/22大网段);
  • 最终选A路由,避免数据走冗余路径。

4.4 路由聚合:简化路由表

如果路由器要维护上百条细分子网路由,会很耗资源——“路由聚合”就是把多个小前缀合并成一个大前缀,减小路由表体积。

比如路由器连接了3个子网:192.24.0.0/21192.24.8.0/22192.24.16.0/20,通过聚合可以合并成一个更大的前缀,让路由表更简洁,转发更快。

五、IP数据报:网络层的数据载体

最后补一个细节:网络层传输的数据单元叫“IP数据报”,由“首部+数据”组成,首部里有几个关键字段要记:

  • 版本:IPv4(32位)或IPv6(128位);
  • 生存时间(TTL):防止数据包在网络中无限循环(每经过一个路由器减1,减到0就丢弃);
  • 源/目的IP地址:数据的起点和终点;
  • 首部校验和:检查首部是否传错(数据部分的校验交给上层协议,比如TCP)。

六、学习心得

网络层的知识点环环相扣:从IP地址的划分,到子网掩码的计算,再到路由算法和转发规则,缺一个都容易卡壳。我的方法是“先搭框架,再填细节”——先搞懂“网络层要解决什么问题”,再逐个突破“寻址”“路由”“传输方式”这几个核心模块,遇到不懂的就画示意图(比如子网划分的二进制拆分),慢慢就通了。

接下来打算学传输层(TCP/UDP),据说比网络层更复杂,大家有好的学习方法也欢迎在评论区交流~

http://www.dtcms.com/a/557076.html

相关文章:

  • QCES项目Windows平台运行指南
  • 多线程编程:条件变量、同步、竞态条件与生产者消费者模型
  • 怎么做高端品牌网站设计潍坊市住房和城乡建设网站
  • 哪个协会要做网站建设啊甘肃做网站哪家专业
  • springcloud : 理解Sentinel 熔断与限流服务稳定性的守护神
  • Webpack Tree Shaking 原理与实践
  • 一文讲透 npm 包版本管理规范
  • Qt 绘画 Widget 详解:从基础到实战
  • 【计算机网络】深入理解网络层:IP地址划分、CIDR与路由机制详解
  • 力扣3281. 范围内整数的最大得分
  • 力扣hot100----15.三数之和(java版)
  • 网站建设最重要的是什么什么是网站的主页
  • 影视传媒网站源码成华区建设局网站
  • 快速搭建网站 开源网络营销推广的目的是什么
  • 超越传统:大型语言模型在文本分类中的突破与代价
  • 【洛谷算题】顺序,分支,循环结构部分题目分享
  • Jmeter吞吐量控制器详解
  • 最全网站源码分享哈尔滨建设发展集团有限责任公司
  • 机器学习-KNN算法示例
  • 【随机访问介质访问控制-1】为什么纯 ALOHA 效率不到 20%?3 大随机访问 MAC 协议拆解
  • 有关电子商务网站建设与维护的书籍具有价值的响应式网站
  • C++笔记(面向对象)定义虚函数规则 运行时多态原理
  • 自然语言处理(NLP)之文本预处理:词元化——以《时间机器》文本数据集为例
  • Java-165 Neo4j 图论详解 欧拉路径与欧拉回路 10 分钟跑通:Python NetworkX 判定实战
  • WindowsRE文件夹不显示
  • 【PID】非标准PID控制是否影响控制目标 chapter1(补充)思考
  • 数码和easy
  • 做网站跟app的区别做网站的要求
  • 酷维网站模版wordpress 分类页id
  • MySQL查询一行数据为何变慢?深度排查与优化指南