本文共 2744 字,大约阅读时间需要 9 分钟。
本节书摘来自异步社区《大咖讲Wireshark网络分析》一书中的从一道面试题开始说起,作者林沛满,更多章节内容可以访问云栖社区“异步社区”公众号查看。
从一道面试题开始说起
大咖讲Wireshark网络分析我每次当面试官,都要伪装成无所不知的大牛。这当然是无奈的选择——现在每封简历都那么耀眼,不装一下简直镇不住场面。比如尚未毕业的本科生,早就拿下CCIE认证;留欧两年的海归,已然精通英、法、德三门外语;最厉害的一位应聘者,研究生阶段就在国际上首次提出了计算机和生物学的跨界理论……可怜我这个老实人在一开场还能装装,到了技术环节就忍不住提问基础知识,一下子把气氛从学术殿堂拉到建筑工地。不过就是这些最基础的问题,却常常把简历精英们难住。本文要介绍的便是其中的一道。
问题:两台服务器A和B的网络配置如下(见图1),B的子网掩码本应该是255.255.255.0,被不小心配成了255.255.255.224。它们还能正常通信吗?
服务器A: 服务器B:
图1很多应聘者都会沉思良久(他们一定在心里把我骂了很多遍了),然后给出下面这些形形色色的答案。
答案1:“A和B不能通信,因为……如果这样都行的话,子网掩码还有什么用?”(这位的反证法听上去很有道理!)
答案2:“A和B能通信,因为它们可以通过ARP广播获得对方的MAC地址。”(那子网掩码还有什么用?楼上的反证法用来反驳这位正好。)
答案3:“A和B能通信,但所有包都要通过默认网关192.168.26.2转发。”(请问这么复杂的结果你是怎么想到的?)
答案4:“A和B不能通信,因为ARP不能跨子网。”(这个答案听上去真像是经过认真思考的。)
以上哪个答案是正确的?还是都不正确?如果这是你第一次听到这道题,不妨停下来思考一下。
真相只有一个,应聘者的答案却是五花八门。可见对网络概念的理解不容含糊,否则差之毫厘,谬以千里。要知道,这还只是基本的路由交换知识,假如涉及复杂概念,结果就更不用说了。
问题是即便我们对着教材咬文嚼字,也不一定能悟出正确答案。这个时候,就可以借助Wireshark的抓包与分析功能了。我手头就有两台Windows服务器,已经按照面试题配好网络。如果你以前没有用过Wireshark,就开始第一次亲密接触吧。
1.从免费下载安装包,并在服务器B上装好(把所有可选项都装上)。
2.启动Wireshark软件,单击菜单栏上的Capture,再单击Interfaces按钮(见图2)。
3.服务器B上的所有网卡都会显示在弹出的新窗口上(见图3),在要抓包的网卡上单击Start按钮。
6.在Wireshark的菜单栏上,单击File,再单击Save,把网络包保存到硬盘上(这一步并非必需,但存档是个好习惯)。
7.收集每台设备的MAC地址以备分析。
服务器A: 00:0c:29:0c:22:10
服务器B: 00:0c:29:51:f1:7b默认网关: 00:50:56:e7:2f:88现在可以分析网络包了。如图5所示,Wireshark的界面非常直观。最上面是Packet List窗口,它列出了所有网络包。在Packet List中选定的网络包会详细地显示在中间的Packet Details窗口中。由于我在Packet List中选定的是3号包,所以图5中看到的就是Frame 3的详情。最底下是Packet Bytes Details窗口,我们一般不会用到它。1号包(见图6):
2号包(见图7):
3号包(见图8):
4号包(见图9):
5号包(见图10):
6号包(见图11):
7、8、9、10号包(见图12):
分析完这几个包,答案出来了。原来通信过程是这样的:B先把ping请求交给默认网关,默认网关再转发给A。而A收到请求后直接把ping回复给B,形成图13所示的三角形环路。不知道你答对了吗?
通过这道题,不知道你是否已经感受到了Wireshark的神奇?如果有兴趣进一步练习,不妨也搭个环境,把这道题里A和B的掩码互换一下。看看这次还能ping通吗?如果不能,原因又在哪里?
本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。