1
开篇:吊足胃口
「初入职场的菜菜同学」一心想靠 Java 技术来改变世界,未成想被网络环境问题缠身,于是抱着电脑,满怀希望的去找运维同事寻求帮助。
菜菜问:运维大佬,帮忙看看这是什么问题?
运维答:很明显是网络上出了问题,那你就抓个包看看呗,难道不会抓包?
菜菜同学被多次鄙视后,心中怒火越积越重,于是暗下决心,好好深入研究一番 Wireshark,待我羽翼丰满(学会)之日,便是我翱翔天际(离职)之时。
「久居职场的菜菜同学」经过数年的打击与修炼,菜菜同学成了经验颇丰的系统研发高级专家(老油条)。
总监问:假如你的项目在开发、测试环境上与三方联调都没有问题,一旦部署到生产环境,就表现出Connection reset、Connection timeout等各种水土不服,关键是三方还坚定他们的环境很正常,该咋办?
菜菜答:莫慌,我会点 Wireshark,专治各种扯皮、不服。
CTO问:假如你的项目出现性能瓶颈了,你觉得可能会是哪些方面,怎么解决问题?
菜菜答:个人觉得项目性能瓶颈,不外乎网络环境、操作系统、程序代码三个大因素。若真想要解决瓶颈,应该先定位瓶颈的位置究竟是在哪里?而三大因素中最简单的莫过于网络环境,我常用 Wireshark来辅助分析,bulabula。
不知道胃口吊足了没有?上面谈及的那些场景,估计很多猿媛们都遇到过。对于像菜菜这样的 Java 程序员而言,Wireshark 主要用来帮助快速分析网络环境问题,进而拿到实锤,把三方的锅扔回去。
希望通过接下来几篇文章的分享,能让你轻松掌握Wireshark。
2
Wireshark:前世今生
这是一个无关技术的小故事。但是作为 Wireshark 爱好者,了解一下这个软件的前世今生也是极好的,谁不想在中午和同(ling)事(dao)一起吃饭的时候讲个业内小故事,显得自己业务精湛又品味不俗呢?
故事要从 20 世纪 90 年代开始说起。那时的 IT 业欣欣向荣:摩托罗拉正野心勃勃地实施铱星计划;Google 的两位创始人还在房东的车库里研究搜索引擎。我们故事的主人公 Gerald Combs 还是默默无闻的青年。和那个时代的很多工程师一样,Gerald 技术精湛,热情上进,动手能力极强。他就职于一家网络提供商,时常需要分析软件来辅助工作。可是这样的软件太少了,而且一个 license 就要80,000 美金。即便在今天的美国,这也不是一笔小数目。
和我们中的很多人不一样,Gerald 没有下载盗版软件,而是决定自己写一个。他单枪匹马忙碌了几个月。我们今天仍能想见其中的艰辛—即便是从业多年的工程师,对很多网络协议还一知半解,更不要说开发一个能分析协议的软件了。而一位工程师既精通多种协议,又能写好代码,更是常人难以企及的境界。但谦虚的 Gerald 一直对此轻描淡写,「I spent several months doing research and making notes.」到了 1998 年 7 月,这个软件终于面世了。它带来了这样的功能:当你透过它看到网络时,不再是没有意义的 0 和 1,而是可以理解的简洁文字。有了它的专业解说,我们几乎能直接看懂网络上发生的一切。以前难以排查的问题,在它介入后便显露无遗。它还提供了权威的分析报告,比如重传率统计、响应时间和对话列表等,这解放了原本负担繁重的网络管理员,使他们有更多时间专注其他事务。
Gerald 把这个软件命名为 Ethereal,正对应了它的功能—还原以太网的真相。Ethereal 的代码版权自然属于 Gerald,而他所在的公司 NIS(Network Integration Services) 则拥有 Ethereal 商标。当时谁也没有想到,这个归属权会在多年后引起一场风波。由于 Ethereal 写得太好了,而且是以 GNU GPL 开源许可证发布的,世界各地的开发者纷纷参与到这个项目中。没过多久,它就涵盖了世界上大多数通信协议,成为广受欢迎的网络分析软件。它可以用于教学,如果网络教师用它辅助上课,可以大大提高学生的兴趣。也可以辅助开发和测试,是调试网络程序的好工具。当然它最大的用途还是诊断问题;从数据链路层到应用层的种种协议,几乎涉及网络的地方就有它的用武之地。更难得的是,Gerald 并没有打算从中获利,它至今还是完全免费的,每位愿意学习的工程师都可以受益。
世界的变化总是超乎我们的想象,尤其是在IT业。没几年时间,铱星计划彻底破产;Google却成了最大的网络公司。只有Gerald没有变化,一直在兢兢业业地维护 Ethereal。每个月都有新的协议出现,已有的协议也在推出新版本,他永远有忙不完的活。中间仅仅发生过一次改名风波:2006 年他离开 NIS,加入了 CACE。由于和老东家在 Ethereal 的商标问题上无法达成一致,Gerald 把项目改名为 Wireshark。从此 Ethereal 这个风靡多年的项目停止了,只留下 www.ethereal.com 域名。我们至今还能访问它,但是会被重定向到一家叫 AOS 的公司。为什么不是重定向到 NIS 呢?因为 NIS 在 2011 年被 AOS 合并了。
Wireshark 延续了 Ethereal 的成功,现在有成千上万的开发者在追随 Gerald。每年还会召开一次为期 4 天的 Sharkfest 大会。2011 年 Wireshark 在 SecTools 排行第一,2012 年被 Insecure.org 评为「No. 1 Packet Sniffers」。美国的技术作家们开始为它著书立说,中国的出版社也在引进(比如人民邮电出版社引进出版的《Wireshark数据包分析实战(第2版)》)。值得一提的是,CACE 后来被 Riverbed 收购了,Riverbed 成了 Wireshark 项目的赞助商。很多中国工程师可能觉得 Riverbed 名不见经传,但说到 Linux 里常用的 tcpdump 命令就不会陌生。tcpdump 的开发者之一 Steve McCanne 就是 Riverbed 的 CTO。而 WinPcap 的开发者 Loris Degioanni 也在 Riverbed 工作。似乎冥冥之中自有天意,Riverbed 把网络探测界的先锋们聚到了一起。我们要向 Riverbed 致敬,多亏了这些伟大的工具,我们才得以窥探网络的秘密。
Gerald 不久前在 Twitter 上宣布「Wireshark is, and will always be open source。」其实 Wireshark 即便不再开源也不会抹杀他的成就。改变世界的 IT 英雄,可以像 Jobs 一样领导一个成功的公司,更可以像 Gerald 一样创造一件传世的作品。他们的成就一样会被镌刻在 IT 历史的丰碑上。
故事引自《Wireshark网络分析就这么简单》
3
Wireshark:安装
工欲善其事必先利其器,打开官方网站进行下载,下载适合自己操作系统的版本。
下载链接:https://www.wireshark.org/download.html
本次 Wireshark 开篇分享就写到这里,没上干货,主要是初步认识一下 Wireshark,接下来几篇会重点讲讲 Wireshark 的实战,敬请期待。
一起聊技术、谈业务、喷架构,少走弯路,不踩大坑。会持续输出原创精彩分享,敬请期待!