计算机网络:(七)网络层(上)网络层中重要的概念与网际协议 IP

发布于:2025-07-07 ⋅ 阅读:(20) ⋅ 点赞:(0)

计算机网络:(七)网络层(上)网络层中重要的概念与网际协议 IP


前言

  • 在之前的博客中,我们已详细剖析了计算机网络物理层数据链路层的核心知识点。
  • 接下来我们开始专注于计算机网络的核心构成 —— 网络层,正式开启这一关键层级的原理与技术解析。
    在这里插入图片描述

我的个人主页,欢迎来阅读我的其他文章
https://blog.csdn.net/2402_83322742?spm=1011.2415.3001.5343
我的计算机网络专栏,欢迎来阅读
https://blog.csdn.net/2402_83322742/category_12909527.html


一、网络层的核心作用

想象一下:你从北京寄快递到上海,快递可能经过不同的中转站,最终送到目的地。网络层就像快递系统的“中转站规划员”,它的核心作用是:将数据分组从源主机通过多个路由器转发到目标主机,解决不同网络之间的通信问题。具体来说:

  • 确定“路线”:比如从电脑A到电脑B,数据该走哪条网络路径(类似快递选哪条运输路线)。
  • 转发数据:路由器根据路线规划,把数据分组一步步传下去。

二、网络层的“两大服务流派”

网络层设计时,曾有个关键争论:“数据传输的可靠性,该由网络层保证,还是由端系统(比如你的电脑)保证?” 由此形成了两种服务思路:

1. 虚电路服务

在这里插入图片描述

  • 核心思路:发送数据前,先在源和目标之间建立一条“逻辑连接”(虚电路),所有数据都沿着这条路线走。
    ✅ 类比:你和朋友打电话,拨号后建立连接,通话内容按顺序传送。
  • 特点
    • 必须先“建连接”,就像打电话先拨号。
    • 数据按顺序到达,因为路线固定。
    • 网络层会负责部分可靠性(比如出错重传),就像电话线路会保证声音清晰。

2. 数据报服务

在这里插入图片描述

  • 核心思路:每个数据分组独立选择路线,可能走不同的路由器,最终拼在一起。
    ✅ 类比:寄多封信到同一地址,每封信可能走不同的快递路线,先后到达。
  • 特点
    • 不用先建连接,想发就发。
    • 每个分组带完整目标地址(像信封上的地址)。
    • 网络层不保证可靠:分组可能丢、可能乱序,可靠性由端系统(比如电脑里的软件)负责。

三、互联网的选择

如今互联网(如TCP/IP)采用的数据报服务,核心设计思想是:网络层只负责“尽力传”,不保证可靠,可靠性交给运输层(如TCP)

为什么这么设计?

  • 路由器变简单便宜:不用处理复杂的差错重传,专注转发数据。
  • 网络更灵活:某个路由器故障时,数据可以换路线,不会全网络瘫痪。
  • 适应多种应用:比如聊天、看视频,不同需求的可靠性由上层软件(如微信、播放器)自己处理。

四、数据层面 vs 控制层面

网络层的工作可以拆分成两个层面,分工不同:

1. 数据层面

  • 做什么:路由器收到数据分组后,查“转发表”,从对应接口转发出去。
  • 怎么干:用硬件(如芯片)处理,速度极快,就像工厂流水线搬砖。

2. 控制层面

  • 做什么:多个路由器协同工作,用路由算法(如OSPF、BGP)计算“路由表”,告诉数据层面该怎么走。
  • 怎么干:用软件计算,速度较慢,但负责全局规划,像快递总部设计最优路线。

五、软件定义网络(SDN)

在这里插入图片描述

传统网络中,每个路由器自己算路由,可能效率低。SDN做了个创新:

  • 远程控制器:像“中央大脑”,统一计算全网最佳路由,生成每个路由器的转发表。
  • 路由器:只负责按转发表转发数据,不用自己算路由,更简单高效。

✅ 类比:以前每个快递站自己规划路线,现在有总部统一规划,各站点只负责按路线送货,出错少、效率高。

六、网际协议 IP

1. 虚拟互连网络

1.1 异构网络互连的挑战

当我们想把不同的网络连接起来并让它们互相通信时,会遇到很多麻烦,这些网络就像来自不同星球的“居民”,各自有不同的“语言”和“规则,具体如下:

  • 寻址方案不同:就像不同国家的地址格式不一样,有的先写街道再写门牌号,有的则相反,网络设备标识自己的方式也各不相同。
  • 最大分组长度不同:这就好比不同的货车能装载的最大货物量不一样,网络中传输数据的最大单元大小也有差异。
  • 网络接入机制不同:比如有的网络通过有线连接,有的通过无线连接,接入网络的方式多种多样。
  • 超时控制、差错恢复等其他差异:这些就像是不同的交通规则,有的地方红灯停绿灯行,有的地方可能还有其他特殊规定,网络在数据传输的控制和错误处理等方面也有不同的方法。

面对这么多差异,问题来了:如何将这些异构的网络互相连接起来呢?

1.2 连接网络的“桥梁”——中间设备

为了让不同的网络能够沟通,需要一些中间设备作为“桥梁”,这些中间设备也叫中间系统或中继系统,根据工作的网络层次不同,分为以下几类:

  • 物理层中继系统:转发器(repeater),可以简单理解为信号放大器,当网络信号传输一段距离后会变弱,转发器能把信号放大,让它继续传输,就像给信号“加油”,但它只能在物理层起作用,连接的网络本质上还是同一个网络
    在这里插入图片描述

  • 数据链路层中继系统:网桥或桥接器(bridge),它能在数据链路层对数据进行处理,比如过滤一些不必要的数据,让数据在更合理的路径上传输,同样,它连接的网络也还属于同一类网络的扩展。
    在这里插入图片描述

  • 网络层中继系统:路由器(router),这是非常重要的设备,它工作在网络层,能够理解不同网络的“地址语言”,实现不同网络之间的真正互连,是网络互连的核心。

  • 桥路器(brouter):它是网桥和路由器的“混合体”,兼具两者的一些功能。

  • 网络层以上的中继系统:网关(gateway),它可以处理更高层次的协议转换,不过由于比较复杂,目前使用得较少。

这里需要注意的是,当使用转发器或网桥时,其实并没有真正实现“网络互连”,只是扩大了单个网络的范围,它们连接的网络仍然可以看作是同一个网络。

  • 而网关因为复杂,现在用得不多。

1.3 网络互连的核心——路由器

在这里插入图片描述

在网络互连中,路由器是当之无愧的核心。通过路由器进行网络互连和路由选择,才能让不同类型的网络真正连接起来,实现数据在不同网络之间的传输。

  • 这里还有一个历史原因需要知道,在很多TCP/IP文献中,会把网络层的路由器称为“网关”,这可能会让一些新手产生混淆,其实它们指的是在网络层起作用的设备,也就是我们现在常说的路由器。

1.4 互连网络与虚拟互连网络

  • 互连网络:从实际结构来看,它是多个独立的网络通过路由器连接起来的,我们可以清楚地看到每个独立的网络和路由器的存在,就像一张由不同小网络通过路由器这个“节点”编织成的大网。
  • 虚拟互连网络(互联网)我们可以把它想象成一个“云”状的抽象概念,不需要关心具体的网络结构和路由器只把它看作一个统一的网络,这就是我们常说的互联网(IP网)的概念。
  • 这种抽象让我们在使用网络时,不需要了解底层复杂的结构,就像我们使用自来水时不需要知道水是从哪个水库、通过哪些管道过来的一样。
    在这里插入图片描述

1.5 IP数据报的传送逻辑

  • 从网络层的角度来看,IP数据报的传送就像是在一个“接力赛”中传递接力棒。
  • 数据从主机H1的网络层出发,经过路由器R1、R2、R3、R4、R5等一系列路由器的网络层,最终到达主机H2的网络层。
  • 在这个过程中,IP数据报就像那个接力棒,在各个网络层之间传递,而路由器就像是接力赛中的运动员,负责把接力棒(数据报)按照正确的路线传递下去。

2. 分类的 IP 地址

2.1 IP地址基础

  1. IP地址是啥?

    • 互联网上每台设备(电脑、路由器等)的唯一编号,像“门牌号”一样确保数据能准确送达。
    • 本质是32位二进制数,比如10000000000010110000001100011111,但为了方便记忆,通常写成点分十进制,比如128.11.3.31(每8位二进制转成一个十进制数,用点隔开)。
  2. 谁来分配IP地址?

    • 全球统一由ICANN(互联网名字和数字分配机构)管理,但实际分配时会“分层”:ICANN只分“网络号”,每个网络内的“主机号”由单位自己定。

1.2 分类IP地址:早期的“地址规划方案”

(1) 为什么分类?

在这里插入图片描述

早期互联网为了方便管理,把IP地址分成A、B、C三类(还有D、E类,但常用的是前三种),每类用不同长度的“网络号”和“主机号”。

(2) 三类IP地址的结构(重点!)
类别 网络号(标识“小区”) 主机号(标识“小区里的房子”) 适合场景
A类 前8位(第1位固定为0) 后24位 大型网络(如跨国公司)
B类 前16位(前2位固定为10) 后16位 中型网络(如企业)
C类 前24位(前3位固定为110) 后8位 小型网络(如家庭)

举个例子

  • A类地址10.0.0.1:网络号是10,主机号是0.0.1,一个A类网络能装约1600万台设备(2^24-2台,减去全0和全1的特殊情况)。
  • C类地址192.168.1.1:网络号是192.168.1,主机号是1,一个C类网络最多只能有254台设备(2^8-2台)。
(3)特殊IP地址:
  • 127.0.0.1:电脑自己测试用的“环回地址”,比如你在浏览器输127.0.0.1,访问的是你自己的电脑。
  • 255.255.255.255:“广播地址”,给同一网络内所有设备发消息时用,比如手机连WiFi发广播找打印机。
  • 网络号全0或全1的地址:有特殊用途,普通设备不能直接用。

2.3 IP地址vs硬件地址

(1)根本区别:层次不同
  • IP地址:属于网络层(高层逻辑地址),像“北京市朝阳区XX路XX号”,会根据网络位置变化。
  • 硬件地址(MAC地址):属于数据链路层(物理地址),像“身份证号”,刻在网卡上,终身不变,比如00:11:22:33:44:55
(2)通信时的变化:IP“端到端不变”,MAC“逐跳改变”

比如你从电脑H1给手机H2发消息,中间经过路由器R1、R2:

  • IP地址:始终是H1的IP→H2的IP,就像快递单上的寄件和收件地址不变。
  • MAC地址:每经过一个路由器就变一次:
    • H1→R1:H1的MAC→R1入口的MAC;
    • R1→R2:R1出口的MAC→R2入口的MAC;
    • R2→H2:R2出口的MAC→H2的MAC。
      (就像快递每到一个中转站,扫描的是中转站的地址,但最终目的地不变。)

4. 地址解析协议 ARP

4.1 ARP是什么?

你可以把互联网想象成一个“快递系统”:

  • IP地址是“收件人地址”(比如“北京市朝阳区XX路10号”),
  • MAC地址是“收件人身份证号”(刻在网卡上的唯一编号,比如00-15-C5-C6-CC-07)。

当你想给隔壁电脑发消息时,知道它的IP地址(比如220.168.10.10),但数据在局域网里传输必须用MAC地址。ARP协议就是专门负责把“IP地址”翻译成“MAC地址”的“翻译官”。

4.2 ARP的核心功能

(1)ARP高速缓存

每台设备都会存一个“IP-MAC对照表”(叫ARP缓存),记录近期用过的IP和对应的MAC地址,像这样:

220.168.10.10 → 00-15-C5-C6-CC-07(有效期10分钟)  
220.168.10.16 → 00-15-C5-C6-C8-11(有效期10分钟)  

好处:不用每次都“全网找人”,直接查缓存,速度快!

(2)缓存里没有?广播请求

如果缓存里找不到目标IP的MAC地址,设备会发一个“全城广播”(ARP请求分组):

  • 内容:“谁是IP 220.168.10.16?请告诉我你的MAC地址!”
  • 范围:只在同一局域网内广播(比如同一个WiFi下的设备)。
(3)单播响应

当目标设备收到广播后,会“悄悄回复”自己的MAC地址,同时:

  • 把发送方的IP-MAC也存进自己的缓存(双向更新,方便下次回传);
  • 发送方收到回应后,立刻把这个映射存进缓存,下次直接用。

4.3 ARP的“适用范围”

(1)同网段(比如同一WiFi)
  • 直接用ARP广播找到目标设备的MAC地址,数据可以直接发过去。
(2) 跨网段(比如你访问百度服务器)
  • 你不知道百度服务器的MAC地址,也没法直接广播到互联网上。
  • 正确流程
    1. 先用ARP找到你家路由器的MAC地址(比如路由器IP是220.168.10.1,MAC是00-AA-BB-CC-11-22);
    2. 把数据发给路由器,由它转发到下一个网络;
    3. 每个新网络的路由器都会重复ARP过程,直到找到最终目标。

4.4 ARP的“隐藏技能”:自动运行,不用你操心

  • 透明性:你完全感觉不到ARP的存在!比如你在电脑上打开网页,系统会自动通过ARP解析网关(路由器)的MAC地址,不需要你手动输入任何命令。
  • 防重复劳动:缓存会定期过期(比如10分钟后删除旧记录),避免存太多没用的信息,同时保证地址变化时能重新解析(比如设备换了网卡,MAC地址变了)。

4.5 典型场景举例:不同情况下怎么用ARP?

(1)场景1:同一局域网内,主机A→主机B
  • 直接广播找B的MAC地址,找到后发数据。
(2)场景2:主机A→其他网络的主机C(比如访问外网)
  • A先广播找自己的路由器R1的MAC地址,把数据发给R1;
  • R1收到后,在自己的网络里用ARP找下一个路由器R2的MAC地址,依此类推,直到找到C。
(3)场景3:路由器R1→其他网络的主机C
  • R1先在自己连接的局域网里用ARP找下一跳路由器R2的MAC地址,再转发数据(和主机跨网段类似)。

5. IP 数据报的格式

5.1 IP数据报

(1)包裹的基本组成

在这里插入图片描述

IP数据报就像一个快递包裹,分为两部分:

  • 首部(包裹封面):记录发送信息,前20字节是必填项(固定首部),后面可选填附加信息(可变字段);
  • 数据部分(包裹内容):装着上层需要传输的数据(比如网页内容、聊天消息)。
(2)固定首部的“必填项”(20字节)

在这里插入图片描述

  • 版本:IP协议的版本号(比如IPv4或IPv6);
  • 总长度:整个包裹(首部+数据)的总字节数;
  • 生存时间(TTL):包裹能经过的路由器数量上限(比如TTL=64表示最多经过64个路由器);
  • 源地址/目的地址:发送方和接收方的IP地址(类似快递单上的地址)。
(3)分片

在这里插入图片描述

  • 为什么分片?:有些网络限制了包裹大小(比如以太网最多传1500字节),大数据报必须拆成小块。
  • 例子:一个3820字节的包裹(20字节首部+3800字节数据),要拆成3个小包裹:
    • 前两个小包裹:各1420字节(20字节首部+1400字节数据);
    • 第三个小包裹:1020字节(20字节首部+1000字节数据)。
  • 关键:每个小包裹的首部都是原包裹首部的复制,但会修改“分片”相关字段,让接收方知道怎么拼回去。

5.2 IP层转发分组

1. 路由表
  • 核心逻辑:路由器转发包裹时,只看“目的网络地址”(比如“北京市朝阳区”),不看具体主机(比如“XX路10号”),这样路线表更简洁。
  • 例子:4个A类网络通过3个路由器连接,每个路由器的路由表只需要4行(每行对应一个网络),而不是记录每个主机(可能4万行)。
    在这里插入图片描述
2. 转发流程
  1. 查路由表:根据目的IP地址的“网络部分”,找到下一个中转站(路由器);
  2. 直接交付vs间接交付
    • 如果目的主机和自己在同一个网络,直接送过去(类似“同小区快递”);
    • 否则,交给下一个路由器(类似“跨区快递”,由中转站接力);
  3. 最后一步:到达目的网络的路由器后,再找具体主机(用ARP协议查MAC地址)。
3. 特殊路由
  • 特定主机路由:专门为某个IP地址指定路线(比如测试网络或加强安全时用,类似“快递必须走某条路”);
  • 默认路由:懒人模式!如果路由表没找到匹配的路线,就走默认路线(比如家庭路由器连外网,默认路由指向运营商的路由器)。

5.3 为什么转发时不用写“下一跳地址”?

  • IP数据报的“空白”:包裹封面(首部)里没有地方写“下一个中转站的IP地址”;
  • ARP协议的补位:路由器知道下一跳的IP地址后,不会写进包裹,而是告诉底层:
    • 用ARP协议把下一跳IP转成MAC地址(类似“查中转站的门牌号”);
    • 把MAC地址写进底层数据帧,交给硬件去传输(包裹只需要知道最终地址,中间路线由中转站自己规划)。

以上就是本篇博客的全部内容,下一篇将进入网络层的学习,探索IP协议与路由技术。

我的个人主页,欢迎来阅读我的其他文章
https://blog.csdn.net/2402_83322742?spm=1011.2415.3001.5343
我的计算机网络专栏,欢迎来阅读
https://blog.csdn.net/2402_83322742/category_12909527.html

如果您觉得内容对您有帮助,欢迎点赞收藏,您的支持是我创作的最大动力!

在这里插入图片描述