版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、1寫在前面的話從應用處理的角度來看,負載均衡工作于客戶端和應用服務之間。從網絡協(xié)議的角度來看, 客戶端工作在網絡層和應用層之間。網絡上專門針對負載均衡的故障排錯的文章非常少,而 一般網絡故障或應用問題的故障排查方法對于負載均衡來說并不太適用。一般來說,配置一個設備比較容易,但是要排查故障卻很難,這不僅要求工程師要對設備本 身的配置和管理非常熟悉,而且要求工程師要熟練掌握相關的協(xié)議、應用的處理流程等等。 因此,本文希望能夠系統(tǒng)的介紹負載均衡的故障排查的方式和方法。筆者將通過一系列文章,從常用的調試工具入手,帶領大家了解在增加了負載均衡之后, TCP/IP、HTTP等協(xié)議的處理發(fā)生了哪些變化。有了
2、理論基礎,我將結合具體的負載均衡產 品,介紹常見的故障調試命令,帶領大家了解負載均衡的具體工作狀態(tài)。最后,我將介紹一 些在我在實際環(huán)境中經常遇到的實際案例,與大家分享我在負載均衡排查時的經驗。2工具篇“工欲善其事,必先利其器疽在正式介紹負載均衡的故障排錯技術之前,我想先給大家上 幾碟開胃的小菜一一和大家分享幾個我常用的故障排查的工具。這些工具不僅是我們進行故 障排錯的好幫手,而且還能夠幫助我們更好的理解協(xié)議及應用實現的細節(jié)。2.1協(xié)議分析利器WiresharkWireshark是我最喜歡的一個網絡數據包捕獲工具了。首先,它是一款開源軟件,通過這個 工具,我們可以了解應用數據是如何在客戶端和服務
3、器之間進行交互和傳輸的。在這個工具 之前,我們只有一些商業(yè)的軟件可以選擇,如Sniffer Pro、EtherPeek等。其次,這個軟 件支持多種平臺,如:Windows、Linux/Unix、Sun Solaris、Mac OSX 等。Wireshark的前身叫做Ethereal?,F在的最新穩(wěn)定版本是v1.6.0??梢灾苯訌脑撥浖墓?方網站上直接下載,根據Windows操作系統(tǒng)的版本選擇32-bit或64-bit版本: HYPERLINK /download.html /download.html本文不想成為Wireshark的一個中文化手冊,有關Wireshark的安裝、使用的詳細說明,
4、請 參考Wireshark的官方網站,官網上有大量的詳細介紹和說明文檔。在這里只介紹我常用的 幾個小技巧。2.1.1定制監(jiān)控窗口界面在我看來,Wireshark相較于早先的Ethereal來說,最大的改善就是實現了數據包的實時 監(jiān)控和分析。早先的版本無法在抓包的同時實時的分析數據包,這對于故障排錯是非常痛苦 的。主窗口的三個主要部分分別是:數據流監(jiān)控面板(上)、數據包解析面板(左下)和數據包 原始格式顯示面板(右下)。由于我對Wireshark的顯示格式進行了調整,你看到的Wireshark的顯示格式可能和我的不一樣。我們可以根據仔細的喜好,在菜單的“Edit -Preferences” 中對
5、顯示的內容和排版格式進行調整。如:數據流監(jiān)控面板中增加新的列(在我的調整中, 我增加了源端口和目的端口這兩列)。 Capturing from Microsoft田0Ethernet II田0Ethernet II, src: lntelcor_79:a6:9c (00:2( Internet Protocol Version 4, 5rc: 192.168. user Datagram Protocol, src Port: 57665 (:Domain Name system (query)00000010002:0003000406 17 7 0 2 12 7 0 0 0 0 3 1 0
6、 8 0 0 0 e:o in。o 5 0 3 0 0 do。 a o o o o _of 1 od 4 5 4 0 6 d a 1 of c 4 e o 6 3b6o3 2 3 7 0 6 o of o 3 0 0 6 0 0C 8 e 2 H 9a2 6 LO o f 5 , a c cOH 9 3 9 7 7. 4 e 7 H 7bd 7 1 c 4 e 7 oFile Edit View Go Capture Analyze Statistics Telephony Tools Internals HelpBl參霸勤囤I疆圈參谿昌in翎奪曳Idjojl Q 0蚊巳I部兇Filter:E
7、xpression. ClearApplyNo. 1imeSourceSrc-PortDestinationDest-PortProtocolPkt Length *14bULU2U/4./i.iy44 J192.LbB.U. LJZLU2dTLSV114 U414733.01028332102874.125.:% 19443TCP5414833.0146399443321028TLSVl1BB014933.2162453210289443TCP5415033.3109749443321028TLSVl140415133.3146449443321028TLSVl140415233.31470
8、93210289443TCP5415B33.3182429443321028TLSVl140415433.318B969443321020TLSVl20015533.3184623210289443TCP5415633. 3228789443321028TLSVl140415733. 32B049944332102STLSVl192 匚|15833.3231173210285443TCP54 -/ _p業(yè)1卜Transaction ID: Oxcf2eQ Flags: 0 x0100 (Standard query)Questi ons: 1rrrQ Frame (frameQ Frame (
9、framer 73 bytes2.1.2根據L4 Session追蹤數據流在使用Wireshark進行排錯的過程中,我們捕獲的數據包可能包含眾多的會話或協(xié)議類型, 但實際上我們只是針對其中某些數據流感興趣。因此,我們需要將這些會話單獨過濾出來, 以便于我們進行進一步的分析。這時候,我們只需要在我們感興趣的數據流中的某一個包上 點擊鼠標右鍵,然后在彈出菜單中選擇“Conversation Filter - TCP”,我們就完成了對 這個TCP會話的過濾。這個會話有固定的源地址、源端口、目的地址和目的端口。File Edit View Go Capture Analyze Statistics T
10、elephony Tools Internals HelpFile Edit View Go Capture Analyze Statistics Telephony Tools Internals HelpK取鼠麒解I白臨)津斜昌IR幸摩句睿殳lM5l蝕&眩。夠區(qū)咐海I四Filter:Expression. Clear ApplyFilter:No. TimeSourceJLD/ &451. JUZ5U0 iyZ. . U . 151673 681.340521 8Src- Port Desti n ati on ZlUiB110192.168. 0.13Ziy. Zy. JL3 JL4S6
11、81.340653 8681.341039 3682.372413 766R?. 1776RQ0.1rrrMark Packet (toggle)Ignore Packet (toggle) Set Time Reference (toggle)Dest-Port ProtocolPkt Length InfoJL1UFUPou l: yui i21058POP68S: +QK By*21O5BNo. TimeSourceJLD/ &451. JUZ5U0 iyZ. . U . 151673 681.340521 8Src- Port Desti n ati on ZlUiB110192.16
12、8. 0.13Ziy. Zy. JL3 JL4S681.340653 8681.341039 3682.372413 766R?. 1776RQ0.1rrrMark Packet (toggle)Ignore Packet (toggle) Set Time Reference (toggle)Dest-Port ProtocolPkt Length InfoJL1UFUPou l: yui i21058POP68S: +QK By*21O5BTCP54110 210110TCP54210 5 S 1:13242TCP7320051 1.?nn5.iTCP5R1 =J?47 ?lu田 Fram
13、e 1674: 54 bytes on wire (432 bManually Resolve Address0 Ethernet II s Sire: Tp-LinkT_40: ad: 5e B internet Protocol version 4s sre: 2Version: 4Header 1emgth: 20 bytesDifferentiated services Field: Ox0000 00. . = ETiffeirerrtiaLEd seirv00 = Expli cit CongestionTotal Length: 40Idemtificat!on: 0 x6711
14、 (26385)Flags:0.1.0.Fragment0 x02 (Dont Fragment) .=Reserved bit: Not .=Dont fragment: set . = More fragments: Not offset: 0Ready to load or captureApply as Filter Prepare m Filter Conversation Filter Colorize ConversationSCTPFollow TCP Stream Follow UDP S廿曲m Follow SSL StreamcopyTime to live: 45Pro
15、tocol: TCP (6)Header checksum: 0 x7307 validation disabledGood: FalseBad: FalseSource: 8 (8)Destination: 3 (3)*31 Decode As昌 Print.Show Packet in New Window國Packets: 1678 Displayed: 1678 Marked: 0 Dropped: 0o o o o 0 12 3 o o o o3 6 5 2 0 9 od 8 o 2 a c o 2 o 9 0 4 0 6 0 2 0 a4 5 o 91 e e 7 16 4 7 7
16、 0 5 c 6 o e6 8d e 2 2 0 2 o o o o o o o oEthernetIPTCPUDPPN-CBArrrProfile: Default0 7 44 0 6 d 3d c 7 8ef d5 e 22.1.3巧妙利用過濾條件實際上,上面的追蹤數據流的的菜單,只是Wireshark眾多已經定制好的過濾條件中的一個。當你執(zhí)行這個會話過濾后,你會在菜單欄下方的“ Filter ”中,看到你的過濾條件。File Edit View Go Capture Analyze Statistics Telephony Tools Internals Help副Si幽麒爨I白鼠I昌I
17、、令蜂令容受llWoll Q Q E). IFilter: (ip.a|ddr eq 192.16S.O.13 and ip.addr eq 219.239.215.IS) and (tc Expression. ClearNo. TimeSourceSrc-Port DestinationD&st-Port Protoc1671 681.294073 31672 681.B02306 321058219.2B9.215.18110 TCP1671 681.294073 31672 681.B02306 321058219.2B9.215.18110 POP當然,如果你能夠熟練的利用這些過濾條
18、件,那么你對Wireshark的掌控以及對協(xié)議的了解 一定是達到的一個新的高度。在這些過濾條件中,我們可以指定我們所要過濾的協(xié)議類型甚 至是某個協(xié)議中符合特定要求的數據包類型。比如:我們可以指定僅過濾所有的TCP中的 SYN-ACK數據包,我們的過濾條件可以設為:tcp.flags=0 x12。有興趣的朋友可以親自試驗一下。2.1.4協(xié)議分析面板在我的工程師生涯中,我一直到畢業(yè)后的若干年,我才真正領悟的什么叫做協(xié)議分層、協(xié)議 封裝。而引領我獲得這些知識的,正是這些協(xié)議嗅探工具的協(xié)議分析功能(或者叫專家系統(tǒng)、 協(xié)議分析)。通過這個功能,讓我真正了解了協(xié)議交互的細節(jié)。I source: 3 (3)
19、Destination: 74.125. 71.19 (74.125. 71.19)E Transmission Control Protocol , Src Port: 21042 (21MSource I source: 3 (3)Destination: 74.125. 71.19 (74.125. 71.19)E Transmission Control Protocol , Src Port: 21042 (21MSource port: 21042 (21042)Desti marl on port: 443 (443)Stream index: 53Sequence number
20、: 0 (relafive sequence mumber)Header length: 32 bytes日 Flags: 0 x02 (syn) 000=Reserved: Not set.0=Nonce: Not set.0=congest!on wi mdow Reduced (cwr)0=ECN-Echo: Not set0=Urgent: Not set0 . = Acknowledgement: Not set 0. = Push: Not set0. . = Reset: Not set國1.= syn: set0 = Fin: Not setwindow size value:
21、 8192Calculated wi ndow si ze: 8192E Checksum: 0 x89d8 val1dation disabled日 optioms: (12 bytes)Maximum segment size: 1460 bytesNo-Operati on (nop)4 ImI卜000000100020003000406 6 0 4 2 0 8 0 0 0 4 2 0 8 9 0 e Ob o 5 Ob o d o 1 o a4 o o 0 2 2 8 4 8 3d d b 2 9 c 4 5 83 4 3 0 2 2 3 10 0 0 0 7 0 4 0 0 4 2
22、0a c 1 4 4 8 0 od o 2 o o o o0 0 3 o o o o c 8 o 3a o o0 0 1 a c o o 9 c a 4 7f 8b 7 c a 5 c 5 8 oO Ready to load or captureProfile: DefaultPackets: 1678 Displayed: 183 Marked: 0 Dropped: 0600 26B.177422192.16B.0CP66 21042F601 268.3335449443321042TCP66 443 21&602 268.3336583210429443TCP
23、54 21042 4-603 268.3342893210429443TLSV1418 ClientHe604 268.4965579443321042TCP54 443 210T A T,f TT T C4 4 rr Tfti-ii c rT-i L、rT,s. 4 | vr如上圖,是一個數據包的TCP協(xié)議分析詳情,讓我們看看我們能從這個數據包中讀出一些什 么信息:首先,是這個TCP會話中的數據包,TCP頭部大小為32bytes其次,從源端口、目的端口來看,這個可能是SSL應用(443端口)第三,這是一個TCP的SYN數據包第四,Windows Size 為 8192第五,MSS (Maxi
24、mum Segment Size) 為 1460bytes當然,通過分析這些交互的數據包,你可以分析出更多的信息。好了,有關Wireshark的一些簡單應用方法,我們就先介紹到這里。在后面的篇章中,我們 還要經常使用這個軟件來幫助我們進行協(xié)議分析。在下一節(jié)中,我將為大家介紹兩款HTTP協(xié)議分析的利器HttpWatch和HttpFox。E.S.1.1 HTTP協(xié)議分析利器HttpWatch和HttpFox在實際部署的負載均衡的應用中,絕大多數都是對Web應用進行負載均衡,而Web應用的核 心便是HTTP。因此,我們需要一個能夠對HTTP協(xié)議進行詳盡分析的利器。雖然在某種程度 上,Wireshar
25、k也能夠對HTTP協(xié)議進行解析和分析,但是,我想向大家推薦一款專門用于 對HTTP協(xié)議進行分析的超級武器 ttpWatch和HttpFox。HttpWatch可以與IE、Firefox進行集成,可以專門對HTTP/HTTPS協(xié)議進行分析。它能夠 幫助我們分析瀏覽器與Web服務器之間的交互細節(jié)。它不僅能夠幫助我們進行HTTP問題的 故障排錯,還能夠幫助我們優(yōu)化Web網站的性能。但是,HttpWatch是一款商業(yè)軟件,而且 價格不菲,單用戶授權需要$395。HttpWatch安裝完成后,會自動和系統(tǒng)內安裝的IE、Firefox瀏覽器進行集成。需要注意的 是,HttpWatch無法自動支持最新本的瀏
26、覽器,如最新的Firefox5.0必須要HttpWatch 7.2 以上的版本才能支持。有關HttpWatch軟件的詳細信息,可以訪問以下網站: HYPERLINK HttpFox可以看作是一個精簡版的HttpWatch,它是Firefox的一個插件,具有HttpWatch 的一些最常用的基本功能。HttpFox支持Firefox,如果需要分析對比不同瀏覽器處理某些行為的差別, HttpFox并不能幫到你。HttpFox是免費的。相較于HttpWatch高昂的價格,HttpFox的性價比是超高的。1.1.1記錄網頁訪問的過程和內容HttpWatch會以插件的方式與IE、Firefox瀏覽器進行
27、集成。我們以Firefox下HttpWatch 的使用為例。點擊Firefox瀏覽器下的“工具-HttpWatch”啟動HttpWatch, HttpWatch 的捕獲窗口會出現在瀏覽器的下方。點擊上方標簽欄的Record”啟動捕獲程序。然后,你 在瀏覽器中輸入你想要捕獲的網站域名,即開始進行HTTP請求的捕獲。HttpWatch的捕獲界面分為三個部分:最上面為功能菜單,你可以進行啟動捕獲(Record),停止捕獲(Stop)、清空當前捕獲窗口 (Clear),對捕獲內容進行過濾(Filter)、查詢(Find)、保存(Save)或打印(Print) 等。中間部分為HTTP請求列表,它顯示Ht
28、tpWatch記錄的打開某個頁面執(zhí)行的所有HTTP請求列 表。如:請求處理的時間、請求大小、響應大小、請求方式、請求結果代碼、類型URL等。 最下面為HTTP請求詳細內容,通過選擇不同的標簽,你可以了解:HTTP頭部信息詳情、請 求處理時間線、Cookie信息、響應內容等。1.1.2分析HTTP請求細節(jié)在實際問題的調試過程中,我們可以通過HttpWatch獲得很多有關HTTP請求細節(jié)的信息。以上圖為例,我們可以得到以下信息:打開 HYPERLINK /%e8%bf%99%e4%b8%aa%e9%a1%b5%e9%9d%a2%ef%bc%8c%e4%b8%80%e5%85%b1%e8%8a%b1
29、%e8%b4%b9%e4%ba%86 /這個頁面,一共花費了 4.376秒的時間;有效的 HTTP 請求(Network Round Trips)共 13 個;發(fā)送請求共7725Bytes,接收請求共198294Bytes,由于啟用了壓縮,節(jié)省了43567Bytes的傳輸數據發(fā)起DNS查詢5個,建立TCP連接6個選擇其中某個HTTP請求,我們再來看看這個請求的一些細節(jié)。Overview Time Chart Headers Cookies Cache Query String POST Data Content Stream Warnings 如上圖所示,顯示了 HTTP請求以及應答的細節(jié),在
30、HTTP請求中,說明了:客戶端支持的 HTTP協(xié)議版本、瀏覽器的類型、支持的壓縮方式、請求的主機名、Cookie信息等。而HTTP 的應答中說明了服務器類型、支持的HTTP版本、應答長度、是否可以緩存、緩存過期時間 等。Headers SentValueHeaders SentValue(Request-Line)GET /images/bg_lj 182. png HTTP/1.1Acceptimage/png rimage/*;q =0.8, */*;q =0.5Accept-CharsetGB2312Tutf-8;q =0.7f*;q=0.7Accept-Encodinggziprdef
31、lateAcceptanguagezhnfzh;q=0.5Connectionkeep-aliveCookie_utma=l. 122架 96495.1310918552.1310918552.131Hostwww. httpwatch. comKeep-Alive115Refererhttp:/www. httpwatch. com/User-AgentMozilla/5.0 (Windows; U; Windows NT 6.1; zh-CN; rv:l4 |mrHeaders ReceivedValue(Status-Line)1-fTTP/l, L200 OKAccept-Ranges
32、bytesCacheontrolPublicContent-Length110Content-Typeimage/pngDateSun, 17 Jul 2011 17:55:06 GMTETagT0311737eljc2dil:0ExpiresMonx 01 Jan 2035 00:00:00 GMTLast-ModifiedWed, 02 Feb 20 :1 L 13:58:0 5 GMTServerMiCT0S0ft-II5/7.5X-Powered-ByASP.NET此外,通過選擇Time Chart標簽,還可以查詢這個請求處理過程中,各部分的時間。例如: 這個請求的的發(fā)送和接受時間都很
33、短,大部分的時間都花在等待應答的過程中。這也許說明 在服務器的處理上可能有優(yōu)化的可能性。通過其它標簽,我們還可以了解當前請求的Cookie信息、緩存信息、應答的具體內容等。E.S.2.3 wget 和 curlwget和curl是兩個常用的,基于命令行的文件傳輸工具軟件。這兩個工具很類似,但又有所不同。這兩個工具都可以通過FTP、HTTP或HTTPS協(xié)議來下載內容,通過這兩個工具,我們可以模擬客 戶端向負載均衡發(fā)送各種TCP請求,以研究負載均衡對數據包的處理方式和流程。但是,這兩個工 具實際上也有差別:curl 支持更多的協(xié)議,如:FTP, FTPS, HTTP, HTTPS, SCP, SF
34、TP, TFTP, TELNET, DICT,LDAP, LDAPS, FILE, POP3, IMAP, SMTP和 RTSP,而 wget 僅支持 FTP, HTTP, HTTPSocurl默認支持HTTP1.1 (也支持HTTP1.0),而wget僅支持HTTP1.0 (據說最新的wget已經支持HTTP1.1,我們將在后續(xù)的測試中進行驗證)o網上有很多文章說,二者最關鍵的區(qū)別在于curl支持libcurl庫,而wget純粹是一個命令行工具。對于這一點,我們并不在乎。這些命令行工具的使用方法非常簡單,但是,要想完全精準的掌握這兩個命令的使用方法,其實并不 是那么容易。讓我們從最簡單的命令
35、開始:rootlinux-test # curl HYPERLINK 2. titleXstylehtmloverflow-y:autobodyfont:12px arial;text-align:center;background:#fffbody,p,form,ul,limargin:0;padding: 0;list-/,此處省略XXX字符5.rootlinux-test #7.rootlinux-test # wget HYPERLINK 9.-2011-09-16 23:05:51- HYPERLINK / /11.Resolving HYPERLINK . 6, 513.Conne
36、cting to |6|:80. connected.15.HTTP request sent, awaiting response. 200 OK17.Length: 8403 (8.2K) text/html19.Saving to: index.html00%8,403-.-K/sin 0s011-09-16 23:05:51 (296 MB/s) 23.100%8,403-.-K/sin 0s011-09-16 23:05:51 (296 MB/s) - index.html saved 8403/840327.28.29.rootlinux-test #從上面的兩
37、個對比例子可以看出,curl比wget更加符合傳統(tǒng)的unix風格,我們可以通過下面的例子,使curl獲得與wget相同的輸出結果(baidu,html與index.html的內容完全相同):1.rootlinux-test # curl HYPERLINK baidu.html2.3.% Total% Received % Xferd AverageSpeedTimeTimeTime Current4.5.DloadUploadTotalSpentLeft Speed6.7.100 8403 100 84031.rootlinux-test # curl HYPERLINK baidu.htm
38、l2.3.% Total% Received % Xferd AverageSpeedTimeTimeTime Current4.5.DloadUploadTotalSpentLeft Speed6.7.100 8403 100 84030 49023141k8.9.rootlinux-test #ll1012-rwrootroot1608Sep1610:16anaconda-ks.cfg1314-rw-r-r-rootroot8403Sep1623:06baidu.html1516-rw-r-r-rootroot8403Sep1623:05index.html1718-rw-r-r-root
39、root15780 Sep 16 10:16 install.log1920-rw-r-r-rootroot1012-rwrootroot1608Sep1610:16anaconda-ks.cfg1314-rw-r-r-rootroot8403Sep1623:06baidu.html1516-rw-r-r-rootroot8403Sep1623:05index.html1718-rw-r-r-rootroot15780 Sep 16 10:16 install.log1920-rw-r-r-rootroot3779 Sep 16 10:16 install.log.syslog2122root
40、linux-test #total 6811但是,這兩個命令的請求過程對于服務器來說真的就一樣嗎?我們看看用wireshark對兩個工具訪問 相同網站的解碼過程。下面兩張圖分別是對wget和curl的HTTP請求的解碼。Frame 51: 209 bytes on wire (1672 bits)5 209 bytes captu Ethernet II, Src: lntelcor_79:a6:9c (00:26:c7:79:9c), & Internet Protocol Version 4, Src: 192.16S.0.27 (192.168. Transmission Control
41、 Protocol, Src Port: 59071 (59071), jjynp尸TFxT Trini4FiP尸巨GET / HTTP/l.lrnJi LExpert inro tcFat/sequence): get / http/1.lrn Request Method: GET Request URI: / Request version: HTTP/1.1User-Agent: curl/7.15.5 (1686-redhat-l1nux-gnu) 1ibcur Host: www. baidu. comrn Accept: */*Vn VnreciiJEM UR工:hLW: iw/
42、m baidu. com.門從上面Wireshark的解碼截圖,我們可以非常明顯的發(fā)現,兩個命令請求的HTTP 請求的頭部有很大的區(qū)別。wget默認采用HTTP/1.0標準發(fā)送請求,而curl則默認采用HTTP/1.1發(fā)送請求。默認的User-Agent不同。wget 多了一個 Connection: Keep-Alive 頭。至于這其中的區(qū)別究竟意味著什么,我們將在后續(xù)的文章中詳細介紹。有關wget和curl的具體用法,請讀者參考互聯(lián)網上的其它文章或其幫助文件,本文將不再贅述,對 于后續(xù)文章中用到的一些參數,我們將在使用時再介紹其含義。E.S.2.4 nmap 下的 nping本來,我是想給
43、大家介紹hping, 一款命令行下使用的TCP/IP數據包發(fā)送工具,經常用于安全審計、 網絡或防火墻測試。但是,在搜集資料的過程中,我發(fā)現了一個類似的但可能是更好的工具:nping。 由于hping的開發(fā)已經基本停滯,而從nmap 5.3開始,hping大多數的功能已經陸續(xù)移植到nping,因 此,從長遠的發(fā)展來看,我推薦大家使用nping。nping同樣是一款開源的網絡數據包發(fā)送工具,它不但能像傳統(tǒng)的ping 一樣對目標主機的進行檢測, 而且能夠產生各種各樣的TCP、UDP、ICMP、ARP報文,甚至是DoS攻擊數據包。通過這個工具, 配合wireshark,可以讓我們更加深入的了解網絡協(xié)議
44、中的細節(jié)。目前,nping的最新版本可以通過安裝最新的nmap軟件包獲得。Nmap的最新版本為v5.51,可以通 過以下地址下載: HYPERLINK /download.html /download.htmlnping的使用很簡單,其基本的命令行格式為:nping Probe mode Options (target specificationTarget specification即探測目標,可以是主機名、域名、IP地址或一段網絡地址。Probe Mode指探測模式,nping支持以下幾種探測模式:-tcp-connectUnprivileged TCP connectprobe mode
45、.-tcpTCP probe mode.-udpUDP probe mode.-icmpICMP probe mode.-arpARP/RARP probe mode.-tr, -tracerouteTraceroute mode (can only be used with TCP/ UDP/ ICMPmodes).這里,比較容易迷惑的是-tcp-connect和-tcp兩種探測模式的區(qū)別。簡單的來講,-tcp-connect發(fā)送 的數據包是由底層系統(tǒng)的TCP協(xié)議棧建立的,而-tcp發(fā)送的數據包是有nping程序生成的,因此,-tcp 可以對數據包進行更多的定制和控制。至于Options,各
46、種探測模式所支持的選項并不太相同,但是大致上,這些選項包括:指定目的端口、 指定源端口、各種flag標記位設定等等。實際上,就是根據各個協(xié)議中的選項來構造數據包。甚至是 生成一些有問題的數據包,比如:發(fā)送一些具有無效checksum的TCP數據包。下面,我們將通過幾個簡單的例子來展示nping的強大之處。最簡單的使用方式:rootcentos # nping 2.3.Starting Nping 0.5.51 ( HYPERLINK /nping /nping ) at 2011-10-14 17:48 CST.10111213141516171819202122232425262728293
47、0313233343536375.SENT (0.3372s) ICMP 2 21 Echo request (type=8/code= 0) ttl=64 id=52152 iplen=28RCVD (0.5527s) ICMP 21 2 Echo reply (type=0/code=0) ttl=46 id=27226 iplen=28SENT (1.3380s) ICMP 2 21 Echo request (typ e=8/code=0) ttl=64 id=52152 iplen=28RCVD (1.5502s) ICMP 21 2 Echo reply (type= 0/code
48、=0) ttl=46 id=27227 iplen=28SENT (2.3396s) ICMP 2 21 Echo request (typ e=8/code=0) ttl=64 id=52152 iplen=28RCVD (2.5517s) ICMP 21 2 Echo reply (type= 0/code=0) ttl=46 id=27228 iplen=28SENT (3.3407s) ICMP 2 21 Echo request (typ e=8/code=0) ttl=64 id=52152 iplen=28RCVD (3.5531s) ICMP 21 2 Echo reply (
49、type= 0/code=0) ttl=46 id=27229 iplen=28SENT (4.3423s) ICMP 2 21 Echo request (typ e=8/code=0) ttl=64 id=52152 iplen=28RCVD (4.5612s) ICMP 21 2 Echo reply (type= 0/code=0) ttl=46 id=27230 iplen=28Max rtt: 218.368ms | Min rtt: 211.530ms | Avg rtt: 213.680msRaw packets sent: 5 (140B) | Rcvd: 5 (230B)
50、| Lost: 0 (0.00%)Tx time: 4.00576s | Tx bytes/s: 34.95 | Tx pkts/s: 1.25Rx time: 5.00626s | Rx bytes/s: 45.94 | Rx pkts/s: 1.00Nping done: 1 IP address pinged in 5.36 secondsrootcentos #最簡單的使用方式即忽略所有的探測模式和選項,后面指定你的探測目標。在這種方式下,nping會 發(fā)送5個ICMP request到探測目標。探測結束后,會在最后列出探測的一些統(tǒng)計數據。2)nping推薦的一個典型的例子(也很有趣!
51、)rootcentos # nping -c 1 -tcp -p 80,433 HYPERLINK 2.3.Starting Nping 0.5.51 ( HYPERLINK /nping /nping ) at 2011-10-14 18:03 CST5.SENT (5.0542s) TCP 2:41300 21:80 S ttl=64 id=17109iplen=40 seq=2938784718 win=14807.RCVD (5.2703s) TCP 21:80 2:41300 SA ttl=46 id=0 iplen=44 seq=385149730 win=14600 9.SENT
52、 (6.0550s) TCP 2:41300 25:80 S ttl=64 id=17109 iplen=40 seq=2938784718 win=148011.SENT (7.0569s) TCP 2:41300 21:433 S ttl=64 id=17109 iplen=40 seq=2938784718 win=148013.RCVD (7.2698s) TCP 21:433 2:41300 RA ttl=4 6 id=0 iplen=40 seq=0 win=015.SENT (8.0580s) TCP 2:41300 25:433 S ttl=64 id=17109 iplen=
53、40 seq=2938784718 win=148017.18.19.Statistics for host (21):20.| Probes Sent: 2 | Rcvd: 2 | Lost: 0 (0.00%)21.22.|_ Max rtt: 215.424ms | Min rtt: 212.379ms | Avg rtt: 213.901ms23.24.Statistics for host HYPERLINK (25):25.| Probes Sent: 2 | Rcvd: 0 | Lost: 2 (100.00%)26.|_ Max rtt: N/A | Min rtt: N/A
54、| Avg rtt: N/A27.28.Raw packets sent: 4 (160B) | Rcvd: 2 (92B) | Lost: 2 (50.00%)29.30.Tx time: 3.00463s | Tx bytes/s: 53.25 | Tx pkts/s: 1.3331.32.Rx time: 4.00604s | Rx bytes/s: 22.97 | Rx pkts/s: 0.5033.Nping done: 2 IP addresses pinged in 9.07 seconds35.rootcentos #這是一個很有趣的例子,也是nping的官方手冊中推薦的一種典
55、型用法:指定發(fā)送的數據包數據量:-c1指定探測模式:-tcp指定探測的目標端口(多個):-p 80,443指定探測目標(多個): 和 HYPERLINK 這個例子的有趣之處在于,測試完畢之后,我發(fā)現所有對的測試數據包均未收到回應。 這很奇怪,因為按道理,像百度這么大的網站不應該不回應我的測試包的。因此,我仔細查看了前面 的數據流,終于發(fā)現了其中的蹊蹺之處:所有的數據包均是通過41300這個相同的端口發(fā)送出去的。 由于我們上網的NAT設備不支持EIM (Endpoint Independent Mapping,也稱作Full-cone NAT),因 此,所有發(fā)往的數據包都被這臺NAT設備給丟棄了
56、。具體的原因我們到后面再為大家 進行詳細的分析?;蛘?,有興趣的朋友可以自己去翻閱一下RFC5382。簡單的攻擊測試利用nping強大的數據包構造功能,我們能夠模擬出一些常見的網絡層攻擊,以驗證目標對這些測試 的防御情況。rootcentos # nping -tcp -p 80 -flag syn,ack,rst -c 5 -rate 10 2.3.Starting Nping 0.5.51 ( HYPERLINK /nping /nping ) at 2011-10-14 18:27 CST5.SENT (0.8205s) TCP 2:3167 21:80 SRA ttl=64 id=317
57、56iplen=40 seq=2249461123 win=14807.SENT (0.9215s) TCP 2:3167 21:80 SRA ttl=64 id=31756iplen=40 seq=2249461123 win=14809.SENT (1.0221s) TCP 2:3167 21:80 SRA ttl=64 id=31756 iplen=40 seq=2249461123 win=148011.SENT (1.1227s) TCP 2:3167 21:80 SRA ttl=64 id=31756 iplen=40 seq=2249461123 win=148013.SENT
58、(1.2233s) TCP 2:3167 21:80 SRA ttl=64id=31756 iplen=40 seq=2249461123 win=148015.16.Max rtt: N/A | Min rtt: N/A | Avg rtt: N/A18.19.Raw packetssent:5 (200B) | Rcvd: 0(0B) | Lost: 5 (100.00%)20.21.Tx time: 0.40352s| Tx bytes/s: 495.64 | Tx pkts/s: 12.3922.23.Rx time: 1.40498s| Rx bytes/s: 0.00| Rx pk
59、ts/s: 0.0024.Nping done: 1 IP address pinged in 2.24 seconds26.rootcentos #在上面的例子中,我們利用nping構造出了一些具有異常flag的TCP數據包,我們可以通過這些數據 包查看目標的響應情況。指定數據包的 flag: -flag syn,ack,rst指定發(fā)送的數據包數量:-c 5指定發(fā)送的速率:-rate 10在這里,我只是簡單介紹了 nping的一些使用方式。利用nping可以幫助我們更好的了解TCP/IP協(xié)議 的工作機制。我們在后面的文章中,將會經常使用這些工具。因此,能夠熟練的應用這些工具,將會 對理解后面
60、的內容有很大幫助。詳細的了解nping的使用方式,最好的教材應該是官方的nping手冊了,大家可以通過下面的鏈接來 進行進一步的閱讀。 HYPERLINK /book/nping-man.html /book/nping-man.htmlE.S.故障排查方法論故障排查方法簡單的來說,故障排錯的方法很簡單:說明問題,分析問題,解決問題。在這三個步驟中,分析問題 花費的時間最多,說明問題卻最容易被我們忽略,而解決問題則相對簡單。說明問題當問題發(fā)生后,我們應該做的第一件事是盡快收集信息,確定問題的現象以及造成的影響。有時候, 我們還需要利用一些工具做一些對比測試,以進一步對問題進行確認。通常情況下,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 鉑合金漏板(坩堝)制造工風險評估與管理測試考核試卷含答案
- 啤酒糖化工操作測試考核試卷含答案
- 2025年谷胱甘肽及酵母提取物項目發(fā)展計劃
- (一模)株洲市2026屆高三年級教學質量統(tǒng)一檢測化學試卷(含答案)
- 2025年軋鋼導衛(wèi)裝置項目合作計劃書
- 2023年礦業(yè)開采模塊行業(yè)商業(yè)計劃報
- 2026年智能土壤 pH 值傳感器項目評估報告
- 2025年江蘇省淮安市中考英語真題卷含答案解析
- 環(huán)境污染控制技術
- 2025年人工智能技術知識普及試題及答案解析
- 特種工安全崗前培訓課件
- 新疆維吾爾自治區(qū)普通高中2026屆高二上數學期末監(jiān)測試題含解析
- 2026屆福建省三明市第一中學高三上學期12月月考歷史試題(含答案)
- 2026年遼寧金融職業(yè)學院單招職業(yè)技能測試題庫附答案解析
- (正式版)DB51∕T 3342-2025 《爐灶用合成液體燃料經營管理規(guī)范》
- 2026北京海淀初三上學期期末語文試卷和答案
- 2024-2025學年北京市東城區(qū)五年級(上)期末語文試題(含答案)
- 人工智能在醫(yī)療領域的應用
- 2025學年度人教PEP五年級英語上冊期末模擬考試試卷(含答案含聽力原文)
- 全國中學生數學建模競賽試題及答案
- LY/T 2482.2-2015東北、內蒙古林區(qū)森林撫育技術要求第2部分:小興安嶺、完達山、張廣才嶺和老爺嶺林區(qū)
評論
0/150
提交評論