範偉導老師的Sniffer培訓課程資料(部分)

前言:
範老師現在是Sniffer中國技術服務中心的技術總監,是中國唯一的Sniffer大師(SCM),他有豐富的經驗和經典案例,講課講得不錯。
我是範老師的學生,我2005年學習了Sniffer,發現收穫很大,但我不能透露我的單位,因爲我想範老師不會允許我把他的講課內容公開。
以下內容是我根據上課錄音編寫的,基本上是範老師的原話。我整理了一個星期才整理出來,因爲範老師在上課時有很多筆書,整理起來很困難,
有人會問,爲什麼不把錄音共享出來,主要是課程中很多實驗,只有錄音,作用不大,我把他整理成文字,看起來會方便一些,當我全部整理完,估計可以出書了,版權費給誰呢?哈哈
我希望大家喜歡,如果反應良好,我把後面的內容也貼出來,很辛苦的,大家要珍惜。
大家不要放映,精華內容都在註釋裏。
大家有什麼問題,可以發E-mail給範老師,[url=mailto:[email protected]][email protected][/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網站(www.networkgeneral.com)
上說的是應用和網絡分析系統。究竟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打開。

好,大家都打開了嗎,有問題隨時告訴我,(跑去解答問題去了)如果大家在上課的時候有任何疑問,隨時可以打斷我,不用給我面子,我也不一定能回答所有問題,不過沒關係,交流總會進步的。
好,我們繼續第一個我要介紹的是local agent。
什麼叫local agent,大家打開file?Select settings

這時候,大家可能只看到一個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首先發現發生碰撞,開始發送碰撞信號,所謂碰撞信號,就是連續的01010101或者10101010,十六進制就是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個字節是10101010也就是16進制的AA,最後一個字節是10101011,也就是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還有什麼不清楚地嗎?或者大家平常還有其他用法?

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章