前言 :
<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" /> 老师现在是 Sniffer 中国技术服务中心的技术总监,是中国唯一的 Sniffer 大师( SCM ),他有丰富的经验和经典案例,讲课讲得不错。
我是范老师的学生,我 2005 年学习了 Sniffer ,发现收获很大,但我不能透露我的单位,因为我想范老师不会允许我把他的讲课内容公开。
以下内容是我根据上课录音编写的,基本上是范老师的原话。我整理了一个星期才整理出来,因为范老师在上课时有很多笔书,整理起来很困难,

有人会问,为什么不把录音共享出来,主要是课程中很多实验,只有录音,作用不大,我把他整理成文字,看起来会方便一些,当我全部整理完,估计可以出书了,版权费给谁呢?哈哈
我希望大家喜欢,如果反应良好,我把后面的内容也贴出来,很辛苦的,大家要珍惜。
大家不要放映,精华内容都在注释里。
大家有什么问题,可以发 E-mail 给范老师, [url=mailto:fanweidao@hotmail.com]fanweidao@hotmail.com[/url] ,记住如果他问你是谁,你说是北京移动或广东移动或工商银行随便一个省分行的,因为这些单位的学生特别多,他肯定搞不清楚。哈哈,对不起了!范老师,我只是想帮你推广 Sniffer.

大家好 ! 欢迎大家参加 Sniffer 的认证课程!
先自我介绍一下!我叫范伟导,这是我的邮件,我现在没有工作(同学们:自由职业者)可以这么说。
介绍一下我的经历:毕业后我在一个台资电脑厂工作了一年,做硬件的。
后来到了日本三洋工作,作 X400 的软件开发,做 ERP ,用 RPG 开发,做了 4
后来到了神州数码,作 CISCO 网络,原来在技术中心做实施,后来在培训中心做讲师,一共做了 5 年。
现在我是 CISCO Sniffer 的授权讲师,不过现在我不想做 CISCO 了,想做 Sniffer ,因为我觉得网络 分析 是一个很好的技术方向。等一下我还会跟大家聊一聊我们该往哪一个方向发展。
先看一下我们这个课程,这个课程事实上是两门课,第一门我们介绍怎样用 Sniffer 来做网络故障诊断,还有网络 管理 的一些方法和思路,第二门课我们介绍如何做应用的 分析 ,这是 Sniffer 的新课程,我个人觉得非常好,以前的几个班学员也很喜欢。第一门课我们会讲 3 天,第二门课我们会讲 2 天。
接下来的半个小时我们不讲书本知识,讲讲我的经历和 Sniffer 究竟能用来做什么,我们为什么要学 Sniffer ,其实我的目的是提起大家的学习兴趣,大家愿意学,我才讲的起劲。要不我一边讲,大家在噼噼啪啪上网,那我就讲不下去了(同学们笑)。
大家做网络都很多年了,想想我们以前的 10 以太网 ,现在的万兆 以太网 ,想想 14.4k modem, 现在的 2M 宽带,以前的 x25, 桢中继,现在的 SDH,MSTP, 裸光纤。大家都经历这些,但我们才工作几年?就这几年,变化这么大,我不知道大家的工资有没有变化这么大 ,( 同学们大笑),从 10 兆到万兆, 1000 倍,几年工资张 1000 倍。有点难(同学们:不是有点难,是很难,不可能)。
再看看我们工作的变化,以前能配配路由器就很牛了,现在似乎谁都会了,记得几年前,我帮一个小集成商配一台 4000 系列交换机,收了 2000 元, 15 分钟搞定。(同学们:好爽,介绍一些给我们做),没有了
说说你们的工作。平常工作中做些什么(同学们:做做网线,杀病毒,帮领导装机器)
大家想想,这是我们想做的工作吗,以前这些都不用我们做,现在大家感觉是不是地位在下降,工资也不涨,好歹我们也是蜘蛛级的人物呀,不是有个笑话说蜜蜂是空姐,做网络的是蜘蛛吗。(同学们笑)
我们该怎么办 ?
现在说说我的观点,我们都希望工资能年年涨,不要求 1000 倍,(同学们:不要求那么高,一年 20% 就行了),
20%
?不止吧,从毕业到现在,你们工资不止年均涨不止 20% 吧。 (同学们:我们不能跟您比)
也有可能,你们的起点高,我毕业的时候才有 650 元。
大家回顾一下,做 IT 的谁的收入高?
1
、销售
2
、领导
3
、咨询专家
4
、售前工程师
5
、售后工程师
我们在座的有 3 个是网络中心的主任或科长,他们的收入肯定比一般工程师高,我祝愿你们步步高升,收入节节高。
在座大多数是网络工程师,我们该怎么走,其实你们现在的单位都很好,但将来怎样很难知道,比如前几年银行的收入令人羡慕,现在他们却担心降工资,现在移动的收入不错吧,我有汽车厂商的学员,他告诉我他们的收入比移动好点,(同学们:哇)这是他们自己说的,好多少就没说了,还有某政府单位的,什么单位不便说,他们没告诉我他们的收入,只说,价格少于 4 万的笔记本他们不用,哇靠, 4 万的笔记本,什么配置?(同学们:那是服务器)
我们不能比,人比人,气死人。我们没法进入这些公司的,还是脚踏实地一点好,但我们做技术的也要考虑如何提高我们的收入,做技术的要提高收入,地位是关键,前面大家说只做做线,杀杀病毒,我们的地位在下降,工资怎么长得起来呢?想想我们做技术的,谁的收入高,做数据库的比做服务器的高,为什么 Oracle 那么火,做服务器的比写程序的高,写程序的比做网络高,这是普遍现象,不说特殊情况。其实大家发现一个特点没有,凡是掌握企业关键业务的收入都很高,你看作数据库的,数据库坏了,企业完蛋了,领导当然重视,现在不仅讲存储,还讲灾备,你看很多银行,北京一个数据中心,上海一个数据中心。
我们网络怎样,设计的都是高可靠性的端到端备份,出问题的机会很少,而当应用出什么问题,都说是网络问题。举个例子,有个单位(税务的学员告诉我的),有一天应用突然变慢,大家都说网络慢了,我们用尽 troubleshooting 的技术也发现不了问题,结果作数据库的工程师偷偷改一下表空间,好了,没问题了,我们不知道怎么好了,做数据库的不说他们有问题,还说网络好了,领导问我网络怎么好的,我不知道呀,领导说:赶快查出原因,避免再出现类似问题,哇塞,怎么查,本来网络就没问题,查什么查。(同学们笑)
所以现在大家用一个字来形容我们的工作?你们会用什么字(同学们:累、苦)
很贴切,苦、累
所以我们不能一直停留在网络的 troubleshooting, 我们必须提高我们的地位,要不我们会累死。
怎么提高地位,我们必须了解我们的业务,也就是要了解应用,了解应用在我们网络上的行为特征,很重要的一个词行为特征。当我们了解了业务的行为特征,我们能定位某一个问题的真正故障点,举个例子:网络应用变慢,可能的原因有什么?网络问题,服务器问题,数据库问题,应用程序问题,客户机问题。如果我们能够判断是哪一部分问题,我们就有发言权了,比如说刚才那种情况,如果我们直接说这是数据库问题,不是网络问题,领导会问,你凭什么说是数据库问题,你可以拿出 Sniffer ,专家系统上写着, DB Slow Server response 诊断,(范老师在演示)再看解码,做一个用户验证操作,花了 1.731 秒,有根有据,大家想一想,有了 Sniffer 我们可以了解我们的业务行为特征,可以排除我们的责任,不但工作轻松了,地位也提高了。(同学们笑)
以前我们应用出现问题的时候我们总是分头查找问题,结果往往是没有结果,因为这种查找方式范围太大了,我们做 troubleshooting 第一步应该是:隔离故障。
如果我们有了 Sniffer ,首先用 Sniffer 看一下,最有可能是哪一部分问题,再安排检查,这样不但节省人力,速度会更快,效率也更高。
如果有人问我们 Sniffer 是什么?大家都会说是 协议分析 仪,你看 sniffer 网站( [url]www.networkgeneral.com[/url])
上说的是应用和网络 分析 系统。究竟 Sniffer 是什么样的一个东西,我们要了解他的发展过程。其实很多类似的产品比如 ethereal,netscout,wildpacket 等都有类似的发展过程
第一阶段是抓包和解码,也就是把网络上的数据包抓下来,然后进行解码,那时候谁能解开的 协议 多,谁就是老大, Sniffer 当时能解开的 协议 最多,也就理所当然地成了老大,现在 Sniffer 能解开 550 协议 ,还是业界最多的,
第二阶段是专家系统,也就是通过抓下来的数据包,根据他的特征和前后时间戳的关系,判断网络的数据流有没有问题,是哪一层的问题,有多严重,专家系统都会给出建议和解决方案,现在 Sniffer 的专家系统还是业界最强的
第三阶段:是把网络 分析 工具发展成网络 管理 工具,为什么要这样,如果 Sniffer 知识用作网络 分析 ,那 Sniffer 的软件就够用了,现在软件的 portable 基本上都是盗版的, sniffer 没钱赚了,所以它必须往网络 管理 方向转,要作为网络 管理 工具,就必须能部署在网络中心,能长期监控,能主动 管理 网络,能排除潜在问题,要做到这些,就要求有更高的性能,所以 Sniffer 就有了相应的硬件产品,比如说分布式硬件平台, InfiniStream 等,我知道在座各位都买了 Sniffer 的硬件,这时候如果用软件的 Sniffer 性能就不行了。
我们看一下, Sniffer 究竟有什么用?
第一, Sniffer 可以帮助我们评估业务运行状态,如果你能告诉老板说,我们的业务运行正常,性能良好比起你跟老板报告说网络没有问题,我想老板会更愿意听前面的报告,但我们要做这样的报告,光说是不行的,必须有根据,我们能提供什么样的根据呢。比如各个应用的响应时间,一个操作需要的时间,应用带宽的消耗,应用的行为特征,应用性能的瓶颈等等,到第二门课,我会告诉大家怎么做到有根有据。
第二, Sniffer 能够帮助我们评估网络的性能 ,比如,各连路的使用率,网络的性能的趋势,网络中哪一些应用消耗最多带宽,网络上哪一些用户消耗最多带宽,各分支机构流量状况,影响我们网络性能的主要因素,我们可否做一些相应的控制,等等
第三, Sniffer 帮助我们快速定位故障 ,这个大家比较有经验,我们记住 Sniffer 的三大功能: monitor,expert,decode 这三大功能都可以帮助我们快速定位故障,我后面通过案例演示给大家看,大家再做做实验,很快就上手了(同学问:范老师,是否要学 Sniffer 必须对 协议 很熟,)不一定,我们可以通过 Sniffer 来学习各种 协议 ,比如 ospf, 以前学网络的时候,讲 OSPF LSA 好像很复杂,你用 Sniffer 看看,其实他的 协议 结构还是不复杂的,一般情况下,我会要求学 Sniffer 的学员有 CCNP 的基础 ,或者有几年的网络 管理 经验,我自己也是这样,刚开始只是用 Sniffer 抓抓包,抓下来也不知道怎么 分析 ,当我学完 CCNP 后,学了 CIT ,以为自己不错了,会排除很多网络故障,但实际上很多问题我还是解决不了,比如网络慢,他又不断,断了我很快能解决,网络慢,或者丢包,一般的排错知识还是很难的,那时候开始学 Sniffer ,才发现很好用
第四, Sniffer 可以帮助我们排除潜在的威胁,我们网络中有各种各样的应用,有一些是关键应用,有一些是 OA ,有一些是非业务应用,还有一些就是威胁,他不但对我们的业务没有帮助,还可能带来危害,比如病毒、***、扫描等, Sniffer 可以快速地发现他们,并且发现***的来源 ,这就为我们做控制提供根据,比如我们要做 QOS ,不是说随便根据应用去分配带宽就解决了,我们要知道哪一些应用要多少带宽,带宽如何分配,要有根有据。我们再回过头看一下 Sniffer 什么时候开始流行的,再 2003 年冲击波发作的时候,很多 Sniffer 的用户通过 Sniffer 快速定位受感染的机器 ,后来很多人都知道 Sniffer 可以用来发现病毒, Sniffer 的知名度暴涨,盗版用户也暴涨(同学们大笑),后来震荡波发作的时候,很多人用 Sniffer 来协助解决问题。我想强调的是 Sniffer 不是防病毒工具,这也只是他的一个用途,而且只对蠕虫类型对网络影响大的病毒有效,对于文件型的病毒,他很难发现。
另外要说明的事, Sniffer 还可以用来排除来自内部的威胁,现在我们网络中有各种各样的网络 安全 产品, 防火墙、 IDS 、防病毒软件,他们都有相应的功能,但真的有效吗,能解决全部威胁吗,我们要进行评估 Sniffer 就能评估内网的 状况,有没有病毒,有没有***,有没有扫描 ,像防火墙、 IDS 、防病毒软件他们都是后知后觉的,它必须有特征才能阻绝,而 Sniffer 是即时监控的工具,通过发现网络中的行为特征,判断网络是否有异常流量,所以 Sniffer 可能比防病毒软件更快地发现病毒 。我在神州数码的时候,冲击波震荡波都是我县发现的,有趣的是当时我都在上 Sniffer 的课,中午休息,我把 sniffer 驾到公司网络,再 Hosttable 看到广州一台机器很多广播,接着广州另外一台机器也开始发广播,接着深圳也感染了,我马上通知 IT管理 人员,他们把这几台机器断网,后来才知道有冲击波病毒,防病毒软件还不能杀。
刚才讲到异常流量,这是一个很重要的概念,什么是异常流量?我们怎么判断是否异常,这又涉及另外一个概念,叫基准线 分析 ,什么是基准线,基准线是指我们网络正常情况下的行为特征,包括利用率、应用响应时间、 协议 分布,各用户贷款消耗等,不同工程师会有不同基准线 ,因为他关心的内容不同,只有知道我们网络正常情况下的行为特征,我们才能判断什么是异常流量。
第五,做流量的趋势 分析 ,通过长期监控,可以发现网络流量的发展趋势,为我们将来网络改造提供建议和依据
第六点就是应用性能预测,这点很有用,会用的人不多,我们第二门课会讲, Sniffer 能够根据捕获的流量 分析 一个应用的行为特征,比如,你现在有一个新的应用,还没有上线,我能评估他上线后的性能,比如在用户在网络中心有多快,用户在省中心有多快,用户在市中心有多快,都可以提供量化的预测,准确率挺高的,误差不超过 10% 。我们还可以用她来评估应用的瓶颈在哪,不同应用瓶颈不同,比如有些应用慢了,增加网络带宽效果很明显,比如 FTP 这种应用,有些应用慢了增加带宽没什么效果,比如 TELNET 应用,我们还可以预测网络带宽增加的效果,比如我将 2 兆提高到 8 兆应用性能有多大的提升, Sniffer 能比较准确地预测
在这里我们提到三个重要概念,网络行为特征,异常流量,基准线,大家理解了吗
在这里,我不想太多介绍产品,我不是来推销 Sniffer 的(同学们笑),我们主要探讨网络 分析 技术
Sniffer
的便携式就是我们用的那种盗版软件(同学们笑),我不用介绍了,这门课我们用 Sniffer 的便携式来讲,因为分布式和 InfiniStream 也有一样的界面 ,上课的时候我们都是用便携式。
Sniffer
的分布式包括 4100 6040 ,主要是放在网络核心可以长期监控、 分析 4100 可以处理千兆流量, 6040 可以处理 8 千兆流量,这是业界性能最高的产品
Sniffer
InfiniStream 的特点是可以长期抓包,最多有 4 T 的存储空间,可以长期抓包,可以进行回溯性 分析 ,这点对有些用户来说很重要,比如今天早上 10 点半,某个应用很慢,十分钟后又正常了,如果没有 InfiniStream, 流量没有保存,我们就很难 分析 问题在哪,如果有了 InfiniStream, 这些流量都会保存下来,自动的,就是长期抓包,我们就可以找出当时的流量,进行 分析 ,一个很好的设备,现在支持 1800 兆线速捕获,这也是其他厂商没有的。
这些你们买设备的时候代理都给你们说清楚了,我就不多讲了。
怎么样,听了这么久,感觉如何?有兴趣吗?
其实我个人是很喜欢 Sniffer 的,我当时从三洋出来的时候,错过了去 IBM 的机会,去了神州数码才知道,他们 IBM 需要做 X400 的人,去了神州数码,老板问我想做网络还是想做主机,我说做网络吧,那时一个 CCIE 23 十万的收入是有的,结果到我考过 CCIE 笔试的时候, CCIE 就值 10 万吧,真是绝望了,(同学们笑)为什么当时不做主机呢,我那些做 6000 的同事现在都不错,又不累。做网络不就一个字:累吗(同学们笑)我也没有去考实验了, 01 年的时候我考了 CCSI ,就是 CISCO 授权讲师,后来讲了很多 cisco 的课,我 CISCO 的学员有 1000 个,后来又讲 Sniffer 的课, Sniffer 的学员有 300 个,我的学员不少,有不少关系不错的,他们过的比我好(同学们笑,你做讲师也不错呀,收入不低吧),以前讲 CISCO 的时候收入不高 , 一天也就 1000 1500 ,讲 Sniffer 会好一些, ( 同学们:讲 Sniffer 一天多少)这还不好公开,如果你们有兴趣开班,我们再聊(同学们笑)。后来我考过了 SCM Sniffer 的最高级认证,叫 Sniffer 大师。中国就我一个人,(同学们:哇,难不难考,考几门), Sniffer 的考试不难,这个我后面会讲,考过 SCM 的全球也只有 62 个,亚太区只有 5 个,所以 Sniffer 原厂的课程都是我讲的。在今年,我会去协助组建 Sniffer 中国技术服务中心,以后你们有什么问题都可以联系我,我在那里是技术总监。我们还有在各行各业的 Sniffer 专家小组,都是喜欢使用 Sniffer 的人在一起交流使用心得,分享一些案例,你们如有兴趣,到时我可以邀请你们参加,不过首先要认真听课。(同学们笑)
好了,讲了这么多,目标只有一个,提起大家的学习兴趣,接下来讲课程的内容,首先把 Sniffer 打开。 <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

好,大家都打开了吗,有问题随时告诉我,(跑去解答问题去了)如果大家在上课的时候有任何疑问,随时可以打断我,不用给我面子,我也不一定能回答所有问题,不过没关系,交流总会进步的。
好,我们继续第一个我要介绍的是 local agent
Select settings
à 什么叫 local agent ,大家打开 file

<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />

这时候,大家可能只看到一个 local 下面是你的网卡 , 这就叫做一个 local agent
事实上,一个 local agent 就像一个探针。
我们知道 Sniffer 的工作原理很简单,就是把网卡设成混杂模式(叫做 promiscuous ,所谓混杂模式,就是把所有数据包接受下来放入内存,大家知道一般情况下 ,PC 机只接受目的 mac 地址为自己网卡或广播、组播的数据包。 sniffer 就是这样把所有数据包都接收下来,在进行 分析
大家看我这里有多个 agent, 怎样可以做多个 agent 呢,可以不同网卡做不同的 agent ,就像你们的分布式 sniffer 一样,有多个网卡,那就是多个 agent,infinistream 也一样。
其实一个网卡,也可以做多个 agent , 大家试一下, new 一个,给他加上说明,就叫 101 把,选中你们的网卡,下面选 no pod copy setting 留空,那个 pod 是你外接 sniffer book 时候用的。大家看看你们的 agent 多了一个, 101 括号 local_2 。对不对(同学们:对)
好,不错。
我们为什么建立多个 agent 呢。不同的 agent 可以定义不同的阀值,可以有不同的过滤器,可以有不同的触发器,不同的地址本。
比如说,你们有一台笔记本装着 sniffer ,大家都用它,那不同的工程师可以自己定义一个 agent ,自己定义自己的过滤器,互不干涉,比如不同的网段有不同的阀值,也可以定义不同的 agent
agent 的参数保存 在哪里呢,大家打开 c:\program files\nai\sniffernt\program, 大家看到 local local_2, 这就是两个不同的 agent 保存参数的地方。大家看到两个 CSF 文件,一个是 sniffer.csf ,另外一个是 Snifferdisplay.csf 。这是过滤器文件,当我们使用 sniffer 一段时间之后,大家会累积许多好的过滤器,一定记得保存下来,就是把这两个文件考出来就行了,如果你看到别人那里有好的过滤器,也可以拷过来。不过当你要倒回去的时候, 4.8 比较好办直接倒入就行了, 4.75 比较麻烦,我后面讲定义过滤器的时候再教大家。过滤器是 sniffer 最难、最有意思、最重要的一部分,大家放心,我能让大家成为高手。(同学们笑)
好, local agent 讲完了, local agent 是什么?事实上就是定义一个环境变量,不同的环境不同的参数。
好,休息一下,待会儿讲 monitor 功能。
中间休息的时候,我问了范老师一个问题:我看书上说, TCP 是可靠的 ,UDP 是不可靠的,那要不可靠 UDP 来干什么?(各位:我的问题是不是很傻?但我确实不知道呀)
老师:不错,这个问题非常好!(嘿嘿!)
TCP
叫传输控制 协议 ,他的特点是:有连接,有流控,有顺序号 / 确认号,开销比较大,一般是 20 个字节的头。
UDP
叫用户数据报 协议 ,开销小, 8 个字节的头,无可靠保证。
我后面有详细介绍 TCP UDP ,我们先看您的问题。
首先, UDP ,不可靠,是指,在传输层不提供可靠保证,并不意味着所有使用 UDP 的应用都不可靠。
我们来比较几个应用(范老师用他的 trace file 给我演示)
DNS
53 端口,进行查询时,用的是 UDP ,因为要求速度快,比如我要查 networkgeneral 的地址,你只要告诉我 ip 是多少就行了,如果要进行 3 次握手建立连接,再去取到 IP ,那就慢了,所以用的是 UDP, 一个字:快。没响应怎么办,事实你看(他在演示)它会同时向多个 DNS 查询,所以没响应也没关系,你看这个响应名字错误,找不到。所以 UDP 还是有用的,特别是像 DNS 查询这种应用,丢了也就丢了,我再查。但 DNS 也有用 TCP 的时候,比如 DNS 服务器的同步,用的就是 TCP 53 端口
TFTP
,您所了解的 TFTP, 用的是 UDP 吧,他不可靠吗,事实上文件传输 , 必须保证可靠。不但要保证能知道丢包重传,还要有顺序号,应付错序到达的情况,也就是我们常说的后发先至。事实上 TFTP 是怎样工作的,你看(他在演示),每一个数据块都有 Id 号,一块 512 字节,一次传输,一次确认,这就相当于 TCP 的顺序号和确认号。所以 UDP 是不可靠的,但很多使用 UDP协议 的应用是可靠的,只是在应用层去保证可靠性,很多人说用 UDP 效率高,事实上 TFTP 在传输大文件的时候 , FTP 效率更地,我们后面有专门的实验。
视频流量,(没有演示)对于视频流量,也是需要可靠保证的,但要求不是很高,所以不会像 TFTP 那样每一个数据报都确认,而是传多个数据包确认一次,要不效率就太低了,究竟多少个数据包确认一次,开发人员需要不断测试。
我的解释清楚吗,(我说:明白了!谢谢!)
(确实看着演示,很容易就理解了,中间我们有许多对话,我省略了,确实如果只听录音是不明白的,这是我为什么要整理成文字给大家看,好累呀!大家给我加油!)
好,我们继续!
我们来看一下 Sniffer 七大 monitor 功能 ,有 Dashboard,hosttable,matrix,ART protocol distribution,history sample,global statistics
我们一个一个来看,先看 dashboard

这个大家很熟悉了,我不用多讲, dashboard 3 个仪表,分别是使用率,每秒钟包数量,每秒钟错误率,下面都有两个数字,前面一个表示当前值,后面一个表示最大值。
下面还有 long term, short term
Long term
30 分钟采样一次,一共可以采样 24 小时, short term 30 秒钟采样一次,可以采样 25 分钟
大家自己试一下,首先把 file 里面的 loopback 选上,这样我们发的数据包就不会发到网络中去,然后打开 101 目录里的 TCPdemo7a 那个 trace file , 再用 packet general 发包,选 send current buffer ,连续发送。(我们是跟着范老师做的)
好了,大家试了一遍,感觉应该是一样的,就是这有什么用?没用,对吧,我也这样觉得(同学们笑)
但如果你要监控某一台服务器的时候,这个是有用的,比如你把一台服务器的接口 monitor 过来,这样你就可以看到这台服务器的流量状况了,这就是一个很好的基准线呀。当然大家用的是硬件产品,就更方便了。
大家注意到下面还有错误报的统计,要注意的是一般的网卡是抓不了错误包的,要用专用网卡,一块网卡上万块, NG 好黑呀(同学们笑)
其实大家知道通过交换机的存储转发,基本上很少错误包,所以不用关注它。
在这里我想解释一下 以太网 的错误包,这对大家学习网络是很有帮助的,特别是了解一下封装的概念。
(请看下一页: 以太网 为什么要 64 个字节)


(
这是范老师的板书 , 我画不出来 , 大家将就点吧 )
(
这是范老师的板书 , 我画不出来 , 大家将就点吧 )
以太网
是无连接的,不可靠的服务,采用尽力传输的机制。 以太网CSMA/CD 我就不多讲了,我相信大家都了解这个原理。
以太网
是不可靠的,这意味着它并不知道对方有没有收到自己发出的数据包,但如果他发出的数据包发生错误,他会进行重传。 以太网 的错误主要是发生碰撞,碰撞是指两台机器同时监听到网络是空闲的,同时发送数据,就会发生碰撞,碰撞对于 以太网 来说是正常的。
我们来看一下,假设 A 检测到网络是空闲的,开始发数据包,尽力传输,当数据包还没有到达 B 时, B 也监测到网络是空闲的,开始发数据包,这时就会发生碰撞, B 首先发现发生碰撞,开始发送碰撞信号,所谓碰撞信号,就是连续的 0<?xml:namespace prefix = st2 ns = "Tencent" />1010101 或者 1010 1010 , 十六进制就是 55 AA 。这个碰撞信号会返回到 A ,如果碰撞信号到达 A 时, A 还没有发完这个数据包, A 就知道这个数据包发生了错误,就会重传这个数据包。但如果碰撞信号会返回到 A 时,数据包已经发完,则 A 不会重传这个数据包。
我们先看一下, 以太网 为什么要设计这样的重传机制。首先, 以太网 不想采用连接机制,因为会降低效率,但他又想有一定的重传机制,因为 以太网 的重传是微秒级 ,而传输层的重传,如 TCP 的重传达到毫秒级, 应用层的重传更达到秒级,我们可以看到越底层的重传,速度越快,所以对于 以太网 错误, 以太网 必须有重传机制。
要保证 以太网 的重传,必须保证 A 收到碰撞信号的时候,数据包没有传完,要实现这一要求, A B 之间的距离很关键,也就是说信号在 A B 之间传输的来回时间必须控制在一定范围之内。 IEEE 定义了这个标准,一个碰撞域内,最远的两台机器之间的 round-trip time 要小于 512bit time.( 来回时间小于 512 位时,所谓位时就是传输一个比特需要的时间)。这也是我们常说的一个碰撞域的直径。
512
个位时,也就是 64 字节的传输时间,如果 以太网 数据包大于或等于 64 个字节,就能保证碰撞信号到达 A 的时候,数据包还没有传完。
这就是为什么 以太网 要最小 64 个字节,同样,在正常的情况下,碰撞信号应该出现在 64 个字节之内,这是正常的 以太网 碰撞,如果碰撞信号出现在 64 个字节之后,叫 late collision 。这是不正常的。
我们以前学习 CISCO 网络的时候, CISCO 交换机有一种转发方式叫 fragment-free ,叫无碎片转发,他就是检查 64 个字节之内有没有错误,有的话不转发,这样就排除了正常的 以太网 错误包。

(
这是范老师的板书 , 我画不出来 , 大家将就点吧 )
我们再来看一看 以太网 的帧结构。


要讲帧结构,就要说一说 OSI 七层参考模型。七层参考模型大家很熟悉,以前我们看书的时候会觉得不知所云,我刚学的时候就是这感觉,其实我们只要掌握两点就行了。
一个是访问服务点,每一层都对上层提供访问服务点( SAP ),或者我们可以说,每一层的头里面都有一个字段来区分上层 协议
比如说传输层对应上层的访问服务点就是端口号,比如说 23 端口是 telnet 80 端口是 http IP 层的 SAP 是什么?(同学们没说话)
其实就是 protocol 字段, 17 表示上层是 UDP 6 TCP,89 OSPF 88 EGIRP,1 ICMP 等等。
以太网
对应上层的 SAP 是什么呢?就是这个 type length 。比如 0800 表示上层是 IP 0806 表示上层是 ARP 。我后面还会将各种 以太网 的帧类型。
第二个要了解的就是对等层通讯,对等层通讯比较好理解,发送端某一层的封装,接收端要同一层才能解封装。
我们再来看看帧结构, 以太网 发送方式是一个帧一个帧发送的,帧与帧之间需要间隙。这个叫帧间隙 IFG—InterFrame Gap
IFG
长度是 96bit 。当然还可能有 Idle 时间。
以太网
的帧是从目的 MAC 地址到 FCS, 事实上 以太网 帧的前面还有 preamble ,我们把它叫做先导字段。作用是用来同步的,当接受端收到 preamble ,就知道 以太网 帧就要来了。 preamble 8 个字节前面 7 个字节是 1010 1010 也就是 16 进制的 AA ,最后一个字节是 1010 1011 , 也就是 AB ,当接受端接受到连续的两个高点平,就知道接着来的就是 D_mac 。所以最后一个字节 AB 我们也叫他 SFD (帧开始标示符)。
所以在 以太网 传输过程中,即使没有 idle ,也就是连续传输,也有 20 个字节的间隔。对于大量 64 字节数据来说,效率也就显得不高。
所以,有时我们用下载数据来检查我们的网速,这是不完全准确地,我们要了解他的传输特征,才能准确判断电信究竟给了你多少带宽。我有一个移动的学员,他说用户总怀疑我给他的带宽不够,其实我肯定给他两兆了,所以有时运营商也挺不容易(同学们笑)。后来我告诉他怎么样用 sniffer 来测带宽,不知道他后来成功了吗,我没有得到反馈。后面我会介绍怎样用 Sniffer 来做带宽测试,非常精确的喔 。我给很多用户作过带宽测试,他们大多都是怀疑电信给的带宽不够。(同学们问:有没有不够的时候?)我测试的案例里还没有。还有就是帮集成商作方案验证,比如,集成商给用户作了多链路捆绑,或路由负载均衡,用户说比原来更慢了,我去证明给用户看,负载均衡确实做起来了,流量分担很正常。(同学们问:那为什么会慢呢),这就涉及到应用的特征和不同厂商采用均衡的机制。我还没试过作进一步 分析 。因为这是集成商的朋友叫我去帮忙的,我只要证明给用户看方案没问题,并告诉集成商如何给用户解释就行了,在做下去,就会画蛇添足了,因为可能让用户觉得我的水平比我朋友高,那不是帮倒忙了。(同学们笑)所以帮忙也要适可而止。 (同学们笑)
好了,有点扯远了。前面讲这些主要是帮大家复习以下 以太网 知识,大家别担心,时间是足够的,因为这门课里有很一些基础的知识,比如交换原理、 vlan 原理,那些知识我都会跳过,我第一天的内容不会很难,考虑到大家远道而来,第一天都很累。但后面回越来越难,大家要有心理准备。晚上要早点睡觉(同学们笑)。还有一个,就是大家别指望能记得住我讲得全部内容,今天讲得明天还记得一点,后天就全忘了,(同学们笑),到了课程结束的时候,基本上全忘光了,(同学们大笑),所以做笔记很重要,我建议大家把笔记写在书上,到时才对得起来。我也注意到一些同学在录音,我知道的,不用放在桌子底下 ( 同学们笑),那样效果不好,(同学们大笑),其实这是不允许的,不过没关系,只有一个要求,不要放在互联网上。
(编者:写到这里,有点写不下去了,觉得很内疚,觉得对不起范老师。我参加过很多培训,范老师是我很喜欢的一个老师,他讲课不会非常幽默,但很实用,这是因为他有很多经历,他在讲课过程中,会补充很多课程以外的东西,比如很多网络中的细节知识,很多工作中的思路,我觉得这方面收获很大,我个人觉得是对我知识的全面补充,学完之后觉得不仅学会了 Sniffer ,网络 管理 的思路更清晰了,现在我指导工程师时,套了很多范老师的话,我觉得范老师很好。怎么办?我在进行思想斗争。。。该不该再写下去。我想在论坛里发起投票,听听大家的意见,我该不该再写下去。)
(编者:范老师的课程内容: 第一天 monitor 功能, Sniffer 的部署
  
第二天 expert capture filter troubleshooting
第三天 decode display filter trigger
第四天 应用的类型,应用的剖析,应用的 分析 思路
第五天 应用性能的 分析 ,应用性能预测)



好,我们继续看第二个 monitor 功能, Host table ,我们叫他主机列表
这是非常好用的一个功能,有什么用呢?
第一看流量最大的 TOP10 主机
第二看广播量有多少,当时我发现冲击波、振荡波的时候,就是看

这个 host table ,发现有大量的全子网广播
第三可以快速过滤单一主机流量。
第四通过过滤功能可以看到单一业务主机的流量分布,当然也可以通过镜像接口去实现
我们一个一个来看。
首先 TOP10 主机
我们可以点击各列的标题来排序,方便我们 分析 ,比如收发包情况。大家可以试一下。
第二广播量有多少
我们点击 broadcast multicast 的标题,查看广播量,有一点要注意,不要忘记看 MAC 层的广播和组播,因为 MAC 的广播不一定有 IP 头,比如 ARP ,同样 IP 的广播在 MAC 也可能是单播,比如子网广播。
MAC
层的广播是目的 MAC 48 1 MAC 层的组播为目的 MAC 第一个字节最低位是 1 。(范老师有板书,我的本子上有,懒得画了)
IP
的广播有三种: 255.255.255.255 叫本地广播,也叫直播, direct broadcast ,不跨路由器。
172.16.33.255
叫子网广播,广播给 172.16.33.0 这个子网,可以跨路由器。
172.16.255.255
叫全子网广播,广播给 172.16.0.0 这个主网,可以跨路由器。
大家以前学网络的时候,老师会给一个概念,说路由器是三层设备,隔离广播,对吧,我也是这样给同学介绍的,但我在后面会告诉同学,并不是所有广播都隔离。
事实上只有 255.255.255.255 这类本地广播,路由器才不转发,对于子网广播和全子网广播,路由器是转发的,这是为什么呢?
我们来看 4 255 的广播,在 MAC 的封装中,对应的目的 MAC 是广播,而子网广播和全子网广播,对应的目的 MAC 是单播,所以路由器会转发。(范老师在演示)所以我们注意到,路由器隔离的广播是目的 MAC 为全 1 的广播,对于目的 MAC 是单播的上层广播,路由器是不能隔离的。
现在想想冲击波震荡波为什么影响那么大,因为它采用的是全子网广播,可以跨路由感染。所以对于这种流量我们要小心,希望下次再出现蠕虫病毒时,大家能快速发现,做个世界第一(同学们笑),同样我们要关注 MAC 层的广播。
第三,就是我们可以关注单一主机流量。
第一种办法,抓包 。选中主机,点一下抓蝴蝶的工具,这样通过专家系统和解码你就可以 分析 他在干什么了。这个我们后面再讲
第二种办法,用 single station 。选中主机,点一下下面这个电脑的图标,你可以看到他在跟谁通信,如果你看到他跟几十台、上百台机器同时通讯,可能是什么?(同学们: BT) ,对,像 BT, 电驴等 P2P 应用会有这个特征。
第四,就是我们如果我们把单一业务服务器的接口镜像过来,我们就可以看到这台机器的流量状况,我们也可以采用过滤的方式。
Sniffer
有一种叫 Monitor 过滤器。大家选中一台机器,假设这是你要关心的业务主机,再点一下这个定义过滤器的图标,(范老师在演示),你看他自动产生一个叫 NEW1 的过滤器,就是这台机器跟任何机器通讯这样的一个过滤器。我们点一下确定。
我们在选择 monitor 菜单上的 select filter ,选 apply monitor filter ,再选 new1 ,确定。
大家注意到,现在 host table 就只有和这台机器通讯的所有主机流量情况。要注意一点是, monitor filter 应用的时候,对所有 monitor 功能生效,所以在 分析 单一业务的时候,特别好用。当然如果你们买的是 InfiniStream 的话,就更方便了,想 分析 那个业务就 分析 哪个业务。
怎么样? Host table 好用吧?
(同学问:为什么广播也是一台主机?不是说广播地址不会作为主机地址吗?)(编者:这个问题好像比较低级)
这是流量 分析 技术的特点,再流量 分析 中,它纯粹从包结构中去取得主机信息,也就是目的 MAC, MAC, 目的 IP ,源 IP, 他都作为主机处理,广播地址不会在原地址中出现,但在目的地址中出现,也是一台主机。这并不影响我们 分析
好。还有什么问题吗?大家用 5 分钟自己试一下。


好,我们继续看第 3 monitor 功能 Matrix ,我们叫他矩阵,其实就是主机会话情况,很多人用他来发现病毒,其实用他来评估网络状况,和异常流量,是一个很好用的工具。
大家看,一下子就满了,大多数网络中都是这样的,我们可以按一下崭停。
然后来 分析
分析
什么呢?
看那一台主机的连接数最多,要注意这个连接数不是传输层的连接数,是指谁跟最多的主机连接
按右建选 zoom ,放大。
找到对外连接最多的机器,选中,按右建,选 show select nodes , 大家自己试一下。


我们注意到这台机器跟很多机器通讯,这正常吗?(同学们:不正常)
这要看实际情况,如果这时一台业务主机,太正常了,如果这时一台 PC 机,或许在作 P2P

我们注意到这台机器向公网发出大量的 ICMP 包,那是在作什么?(同学们:在 ping)
对! PING 采用 ICMP协议 ping 可以用来扫描,也可以用来***。
扫描就是看那一台机器活着,接着扫描端口,在***,所以扫描是***主机的前奏。
另外 ,还可以用 ping 来冲击路由器,或占用带宽,是一种 DOS ***。
大家看这个过程更像哪一种类型。
(同学们:扫描, DOS ***)
一般情况下,扫描会是比较连续的地址,我们看这个地址并不连续,我们先排除扫描,当然不是绝对的,也有比较聪明的扫描。
有同学说,这是 DOS ***,那是冲击路由器,还是占用带宽?
(同学们:冲击路由器)
嘿,这次比较统一,我也觉得他在冲击路由器,我们看,他的目标地址基本不在一个网段,这样路由器收到这样的数据包会消耗大量资源在查找路由表上面。所以对路由器有一定冲击。
一般来说,如果他想占用带宽的话,会发大包,我们发现,包的长度不大,并且一秒钟才发 10 几个包,所以对贷款冲击不大。
或许大家会觉得这没秒 10 几个包对路由器冲击也不大呀。大家想像一下,如果有很多机器在作这个操作,那影响就会很大。
大家自己在找一找,是否还有其他机器在作同类事情。
(同学们找出 7 台这样的机器)
好大家找出 7 台这样的机器,怎么找出来的?有同学用钢材的办法,有同学用过滤,都市好办法。
现在假设在你们的网络中出现这样的情况,我们发现了异常,接下来怎么做?
(同学们:找到这台机器)
然后呢?
我们可以看看这台机器的任务 管理 器,看看有什么不常见的进程,把他去掉,看是否解决。在看其他的机器,是否有类似的特征。
这是我的一个学员发给我的,当时他发现这 7 台机器都有一个特殊的进程,但是他的防病毒软件没有查出来。他手工解决了。
这很好说明用 Sniffer 可以比防病毒软件更快发现病毒,因为防病毒软件是后知后觉得,什么意思?防病毒软件必须有相应的特征才能查病毒。而 Sniffer 通过流量可以发现一些特征,一些异常。
但是有一点,我们不能拿 Sniffer 当防病毒软件用,那不是他的特长,同时也太低沽 Sniffer 的功能了(同学们笑)
好我们在看看扫描是怎么一回事,大家看这个 trace file (范老师在演示,我就不写了)
先是 ARP 扫描,再端口扫描,接下来就是***了。
(编者:接着我们做了一个游戏,范老师让大家用 Sniffer ***他的机器,结果 1 台机器就把他的机器搞死了,这个就不细说了)


好,我们再看第四个 monitor 功能, ART Application Response Time ,应用响应时间。
应用响应时间是 分析 应用的一个很好工具,主要用来 分析 应用的性能。
ART
是指一个客户端发出一个请求,到服务器响应回来的时间差。
一般来说,应用响应的快慢,是应用性能的一个重要指标。
应用性能主要决定于几个因素:网络因素、服务器因素、客户端因素、应用 协议 因素
我们先看看如何操作 , 再来看看应用这个功能。
我们打开 ART ,大家看到 Http 的应用响应时间 分析 ,这里有几个列, server Address,Client Address.
他是怎么知道谁是 Server ,谁是 Client? 其实也就是看端口号和 IP 的对应关系,比如如果一个数据包的目的 IP 1.1.1 .1 ,目的端口是 80 Sniffer 就会认为 1.1.1.1 就是 Http 服务器。对应的源 IP 就是 Client
AvgRsp—
平均响应时间
90%Rsp—90%
响应时间,去掉头尾个 5% ,其实我个人觉得去掉最大的 10% 更合理一些。
还有最大最小的响应时间,这些都是以毫秒为单位。
接着就是 TotalRsp, 这个是响应次数,单位是次。
接着是 0 25 毫秒的响应有多少次, 25 50 毫秒的响应有多少次。。等等。
后面还有 server 发送子节数, client 发送子节数, timeout 次数等等, 5 秒不响应则 Timeout
我们再看看怎么增加其他应用,按属性,选择 display protocol, 添加你关心的 协议 ,再确定, ART 会重新刷新(范老师在演示)
你看我这里就有了 telnet,Oracle
(同学们:我们没有 Oracle)
我知道,其实平时我们更关心的是我们关键业务,所以我们要把我们关键业务的端口添加进来,怎么添加? 大家跟我来,
选菜单上的 toolsàoptionsàprotocol ,拉到下面 , 添加一种应用,比如 Oracle, 端口 1521
再在属性里把这个新 协议 选上,有了吗?(跑去解答问题去了)
好,大家都做出来了,我们平常 分析 关键业务就行了 ,有一点要说明,一种业务可能有多个应用,也就是多个端口,需要同时 分析
有些同学喜欢把所有 well known 协议 添加到 协议 列表里,我在共享目录上有两个注册表注入工具,大家只要运行以下就可以将这些常用端口都注入到 协议 列表里,就不用一个一个敲了。其实我个人觉得不太必要,多了反而乱。
大家打开注册表,我们看一下 协议 列表,找到这两项:
HKEY_LOCAL_MACHINE\SOFTWARE\Network Associates, Inc.\Sniffer\4.7\1CommonSettings\Protocols\IP Protocols\TCP
HKEY_LOCAL_MACHINE\SOFTWARE\Network Associates, Inc.\Sniffer\4.7\1CommonSettings\Protocols\IP Protocols\UDP
这就是 协议 列表。注意不要有重复的,否则会报错。

(编者:这是范老师的板书)
应用响应时间是评估影响应用性能因素的一种很好的工具。我们看这样一个例子。
比如通过 client 通过广域网连接到服务器。
我们同时在 AB 两点部署 Sniffer 分析 某一业务的响应时间。
假设 Sniffer A 点,他所看到的响应时间包括网络消耗时间和服务器处理时间
B 点的 Sniffer 看到的响应时间主要是服务器处理时间。这样我们比较 AB 两点的响应时间,来判断影响性能的主要因素是网络还是服务器。
假设 A 点的响应时间是 400 毫秒, B 点的响应时间是 100 毫秒,我们就知道 A 点的 400 毫秒中有 300 毫秒是消耗在网络上的,我们可以认为对于这个业务,性能的主要瓶颈在网络上,如果我们在深入 分析 是距离因素还是贷款因素,我们就可以判断是否有改善空间。这个细节我们在第二门课讲。
如果 B 点的响应时间达到 250 毫秒,我们可以认为改善服务器的性能对于这个应用来说会更明显一些。
如果我们 Sniffer 用多了。我们就可以做一个 AB 点的响应时间的基准线 ,假设正常情况下 A 点的响应时间是 400 毫秒,有一天你发现平均响应时间达到 600 毫秒,你就应该关注了,或许用户还没有抱怨,如果你这时 分析 应用性能下降的原因,你就可以避免故障的产生,同时避免用户投诉。当然你也会有 B 点的基准线,比较跟平时有何不同,很快就知道应该检查网络还是服务器。
对于 ART 还有什么不清楚地吗?或者大家平常还有其他用法?