| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 系统运维 -> 一个局域网中,不同网段的服务器能通信吗? -> 正文阅读 |
|
[系统运维]一个局域网中,不同网段的服务器能通信吗? |
起步在一个局域网中存在两台服务器 A, B:
此时,A B 能相互通信吗? 环境说明A, B 服务器均为 centos7 —— 通过 vmware 启动的虚拟机。 A:IP=192.168.211.110, NETMASK=255.255.255.0, MAC=00:0c:29:69:73:ae 实现过程中需要用的工具:
为方便分析数据包,在宿主机上安装 wireshark。 B ping A在 B 上执行
执行 这里先说结论:B 可以 ping 通 A。问题来了,为什么 B 还可以 ping 通 A 呢?子网掩码还有意义吗?ping 通之前发生了什么?我们用“抓包”揭晓谜底。 第一步,在 B 上执行:
第二步,新开一个窗口,在 B 上执行:
一段时间后结束抓包,在宿主机上用 wireshark 打开 pcap 文件。
当开始 B ping A 时,B 通过子网掩码计算,发现目标 IP(192.168.211.110) 跟自己不在一个网段,所以 B 需要找到网关,希望网关把自己数据包转发出去。 但 B 只知道网关的 IP 是 192.168.211.2,可在局域网中,通信要靠 MAC 地址。于是 B 发起了 arp 协议的广播包,询问网关的 MAC 地址:Who has 192.168.211.2? Tell 192.168.211.3。(wireshark 中 info 的解释十分明了,不多做解释)
此时网关听说有人找他,立马回复 B,告诉 B 自己的 MAC 地址是 xxxx:192.168.211.2 is at 00:50:56:e3:77:90。
第 3、4 个包耐人寻味,B 为啥一连发两个 ICMP 包呢?而且第 3 个包还说“no response found!”。此时需要查看包的详情。 包 3: 可以看到,B 发出的 ICMP 包尽管目标 IP 是 A 的 IP 地址,但目标 MAC 地址却是网关的。对 B 来说,A 跟自己不在一个网段内,只能通过网关转发数据。 包 4: IP 层的 源IP 和 目标IP 没有变动,但 MAC 层的 源MAC地址 和 目标MAC地址 有了不同。源MAC地址 变成了网关的 MAC 地址,也就是说,这个包确实从网关转发到 A。
A 收到 ICMP 请求包之后,需要回复 B。**A 用自己的网络掩码计算 B 的网段,嘿,居然是自己人!**于是直接 arp 广播:Who has 192.168.211.3? Tell 192.168.211.110。 B 也直接 arp 回复:192.168.211.3 is at 00:0c:29:3a:1b:85。
A 得知 B 的 MAC地址 之后,直接向 B 回复之前 B 发出的 ICMP request。 从抓到的包来看,之后 B ICMP request A 时,一直都需要网关转发;A ICMP reply B 时,不需要网关转发。 A ping B基于上述分析,我们就很容易知道 A 可以 ping 通 B。 子网的误判在前面示例中,B 认为 A 跟自己不在一个网段,A 却认为 B 跟自己在一个网段。这是因为做网段判断时,AB 是用自己的子网掩码来计算的,这就可能引发误判。 现在将 B 的 IP 改为:192.168.211.111,掩码依旧保持 255.255.255.224。 此时 B 认为自己属于 255.255.255. 尽管 A, B 不在一个子网,但在它们自己看来,它们“属于”一个子网。恰好 arp 不考虑跨网问题,于是 A, B 可以正常通信,且不需要网关转发。 抓包可得: 感谢 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/15 16:33:27- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |