假如存在网络A和网络B。
网络A的IP地址范围为“192.168.1.1~192. 168.1.254”,子网掩码为255.255.255.0;
网络B的IP地址范围为“192.168.2.1~192.168.2.254”,子网掩码为255.255.255.0。
有路由器存在时,如何让网络A和B进行通信?
核心原理
网络A(192.168.1.0/24)和网络B(192.168.2.0/24)是两个独立的广播域。在没有路由器的情况下,它们之间的设备无法直接通信,因为根据子网掩码,网关的作用就是它们会认为对方不在同一个本地网络中。
路由器的作用就是“连接”这两个网络,并在它们之间转发数据包。路由器至少有两个网络接口,分别连接到两个网络,并且每个接口都有一个属于该网络的IP地址。它就像一座桥梁,让两个“岛屿”上的居民可以往来。
通信步骤详解
假设我们有一台路由器,它的两个接口配置如下:
现在,网络A中的一台电脑(PC-A, IP: 192.168.1.1)想要访问网络B中的一台服务器(PC-B, IP: 192.168.2.1)。
数据包的旅程如下:
1.判断目标位置PC-A (192.168.1.1)
PC-A (192.168.1.1) 想 ping PC-B (192.168.2.1)。它首先会用自己的IP地址和子网掩码进行计算,发现目标地址 192.168.2.1 与自己不在同一个网段。
2.寻找网关
由于目标不在本地,PC-A 知道必须把数据包发给一个“出口”,这个出口就是默认网关。PC-A的默认网关应设置为路由器的接口地址,即 192.168.1.254。
3.发送数据包到路由器
PC-A 将数据包发送给路由器。这个数据包的:
源IP地址: 192.168.1.1 (PC-A)
目标IP地址: 192.168.2.1 (PC-B)
目标MAC地址: 路由器接口G0/0的MAC地址 (在数据链路层,PC-A通过ARP协议获取到网关的MAC地址)
4.路由器路由决策
路由器从G0/0接口收到数据包。它查看数据包的目标IP地址(192.168.2.1),并查询自己的路由表。路由表会告诉它:“目标网络 192.168.2.0/24 直接连接在我的 G0/1 接口上”。
5.转发数据包到目标网络
路由器将数据包从G0/1接口转发出去。在转发前,它会重写数据帧的MAC地址(源MAC改为G0/1的MAC,目标MAC改为PC-B的MAC,同样通过ARP获取),但数据包的IP地址保持不变。
6.到达目的地
最终,数据包顺利到达 PC-B (192.168.2.1)。
7.回复过程
PC-B 回复 PC-A 的过程完全相反,原理一样。PC-B 发现目标 192.168.1.1 不在本地网络,于是将回复数据包发送给自己的默认网关 192.168.2.254(路由器),再由路由器转发给 PC-A。
PC-A如何通过ARP协议获取到网关的MAC地址?
1、为什么需要MAC地址?
可以把通信想象成寄信:
关键点: 以太网规定,在同一个局域网内,所有数据传输最终都必须封装成“帧”,而这个帧的头部必须包含目标MAC地址。没有目标MAC地址,数据帧就无法被发送出去。
2、ARP获取网关MAC地址的详细步骤
假设PC-A的ARP缓存是空的(即它之前没有和网关通信过)。
第1步:构造ARP:
请求包当PC-A意识到需要把数据包发给网关(192.168.1.254)时,它首先会检查自己的ARP缓存表。如果找不到对应条目,它就会构造一个 ARP请求广播包。
这个ARP请求包包含了以下关键信息:
发送方MAC地址: PC-A自己的MAC地址 (例如: AA:AA:AA:AA:AA:AA)
发送方IP地址: PC-A自己的IP地址 (192.168.1.1)
目标IP地址: 它想要查询的网关IP地址 (192.168.1.254
目标MAC地址: 全部设为 FF:FF:FF:FF:FF:FF (广播地址)
这个包在问一个所有局域网设备都能听到的问题:
“大声问一下!IP地址是 192.168.1.254 的设备,你的MAC地址是什么?请告诉 192.168.1.1 (AA:AA:AA:AA:AA:AA)!”
第2步:广播ARP请求
PC-A将这个ARP请求包封装成以太网广播帧,目标MAC是 FF:FF:FF:FF:FF:FF,然后通过网卡发送出去。
第3步:局域网内的设备处理请求
这个广播帧会被网络A(192.168.1.0/24)内的所有设备(包括路由器接口G0/0、其他电脑、打印机等)接收到。
每台设备都拆开数据包,查看ARP请求内容。
它们会比较ARP请求包中的 “目标IP地址” 是否与自己的IP地址匹配。
对于网络中的其他电脑(如192.168.1.50):它们发现“目标IP地址 (192.168.1.254)”不是自己的IP,于是安静地丢弃这个ARP请求包,不做任何响应。
对于路由器接口G0/0 (192.168.1.254):它发现“目标IP地址 (192.168.1.254)”正好是自己的IP地址。
第4步:网关发送ARP回复
路由器接口G0/0确认自己是ARP请求的目标后,会构造一个 ARP回复包。这是一个单播包,直接回复给PC-A。
这个ARP回复包包含了以下关键信息:
发送方MAC地址: 路由器G0/0接口的MAC地址 (例如: BB:BB:BB:BB:BB:BB)
发送方IP地址: 路由器G0/0接口的IP地址 (192.168.1.254)
目标MAC地址: PC-A的MAC地址 (AA:AA:AA:AA:AA:AA)
目标IP地址: PC-A的IP地址 (192.168.1.1)
这个包在回答PC-A的问题:
“你好 192.168.1.1!我是 192.168.1.254,我的MAC地址是 BB:BB:BB:BB:BB:BB。”
第5步:PC-A学习并缓存
第6步:正式通信
现在,PC-A终于知道了网关的MAC地址。它可以将原本要发给 192.168.2.1 的IP数据包,封装成一个以太网帧:
目标MAC地址: BB:BB:BB:BB:BB:BB (路由器的MAC)
源MAC地址: AA:AA:AA:AA:AA:AA (自己的MAC)
数据: 内含源IP为 192.168.1.1,目标IP为 192.168.2.1 的IP包。
然后,PC-A将这个帧发送出去。交换机根据目标MAC地址 BB:BB:BB:BB:BB:BB,准确地将帧转发给路由器的G0/0接口。
参考文章:原文链接
该文章在 2025/10/18 9:08:46 编辑过