基于路由器,不同域的网络A和网络B之间如何通信?
假如存在网络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)是两个独立的广播域。在没有路由器的情况下,它们之间的设备无法直接通信,因为根据子网掩码,https://blog.csdn.net/Liudengdeng_/article/details/153470818?fromshare=blogdetail&sharetype=blogdetail&sharerId=153470818&sharerefer=PC&sharesource=Liudengdeng_&sharefrom=from_link它们会认为对方不在同一个本地网络中。
路由器的作用就是“连接”这两个网络,并在它们之间转发数据包。路由器至少有两个网络接口,分别连接到两个网络,并且每个接口都有一个属于该网络的IP地址。它就像一座桥梁,让两个“岛屿”上的居民可以往来。
通信步骤详解
假设我们有一台路由器,它的两个接口配置如下:
-
接口G0/0 连接到 网络A,IP地址设为
192.168.1.254
-
接口G0/1 连接到 网络B,IP地址设为
192.168.2.254
现在,网络A中的一台电脑(PC-A, IP: 192.168.1.1)想要访问网络B中的一台服务器(PC-B, IP: 192.168.2.1)。
数据包的旅程如下:
-
判断目标位置
PC-A (192.168.1.1) 想 ping PC-B (192.168.2.1)。它首先会用自己的IP地址和子网掩码进行计算,发现目标地址 192.168.2.1 与自己不在同一个网段。 -
寻找网关
由于目标不在本地,PC-A 知道必须把数据包发给一个“出口”,这个出口就是默认网关。PC-A的默认网关应设置为路由器的接口地址,即192.168.1.254
。 -
发送数据包到路由器
PC-A 将数据包发送给路由器。这个数据包的:-
源IP地址: 192.168.1.1 (PC-A)
-
目标IP地址: 192.168.2.1 (PC-B)
-
目标MAC地址: 路由器接口G0/0的MAC地址 (在数据链路层,PC-A通过ARP协议获取到网关的MAC地址)
-
-
路由器路由决策
路由器从G0/0接口收到数据包。它查看数据包的目标IP地址(192.168.2.1),并查询自己的路由表。路由表会告诉它:“目标网络 192.168.2.0/24 直接连接在我的 G0/1 接口上”。 -
转发数据包到目标网络
路由器将数据包从G0/1接口转发出去。在转发前,它会重写数据帧的MAC地址(源MAC改为G0/1的MAC,目标MAC改为PC-B的MAC,同样通过ARP获取),但数据包的IP地址保持不变。 -
到达目的地
最终,数据包顺利到达 PC-B (192.168.2.1)。 -
回复过程
PC-B 回复 PC-A 的过程完全相反,原理一样。PC-B 发现目标 192.168.1.1 不在本地网络,于是将回复数据包发送给自己的默认网关192.168.2.254
(路由器),再由路由器转发给 PC-A。
PC-A如何通过ARP协议获取到网关的MAC地址?
1、为什么需要MAC地址?
-
IP地址 是逻辑地址,用于在整个TCP/IP网络中标识一台设备(网络层)。它的作用是“最终目的地”。
-
MAC地址 是物理地址,固化在网卡里,用于在同一个局域网(广播域) 内标识一台设备(数据链路层)。它的作用是“下一跳的地址”。
可以把通信想象成寄信:
-
IP地址是信封上的收件人详细地址(城市、街道、门牌号)。
-
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学习并缓存
-
PC-A接收到这个ARP回复包。
-
它将
IP地址: 192.168.1.254
和MAC地址: BB:BB:BB:BB:BB:BB
这个对应关系存入自己的ARP缓存表中。 -
这个缓存条目会有一个生存时间(例如2分钟),超时后会被清除,需要时再次发起ARP请求。
第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接口。