ZT - UNIX 網路協議的深度分析(1)

saintsiro發表於2010-08-08
簡介: 無論您是在監控您的網路以便發現效能問題、除錯一個應用,還是在您的網路上發現一個您不認識的應用,有時您都需要對您的 UNIX® 網路中使用的協議進行深度分析,以便了解它們的作用。有一些協議很容易確定和理解,即使它們使用非標準埠。而另外一些協議則需要進行更多的觀察以瞭解它們在做什麼、在交換什麼資訊。在本文中,我們將介紹對 UNIX 網路中使用的協議進行深度分析的技術。[@more@]Martin Brown, 自由撰稿人 Martin Brown 成為職業撰稿人已有八年之久。他所撰寫的眾多書籍和文章涵蓋了各種各樣的主題。他擅長的領域包括許多開發語言和平臺(Perl、Python、Java、JavaScript、Basic、Pascal, Modula-2、C、C++、Rebol、Gawk、Shellscript、Windows、Solaris、Linux、BeOS 和 Mac OS/X 等等)以及 Web 程式設計和系統管理與整合。他是 ServerWatch.com、LinuxToday.com 和 IBM developerWorks 的定期撰稿人,還為 Computerworld、The Apple Blog 和其他站點定期編寫部落格,同時還是 Microsoft 的主題專家(SME)。 引言 網路已經是無處不在,很多時候我們都會利用網路與不同主機進行通訊,包括網路內部和外部的。大多數情況下這不會遇到問題,但是有時您需要仔細檢查您的網路以查明問題原因。 仔細檢查網路流量內容的原因有很多。其中第一個原因是您可能正在除錯一個現有的網路應用,或者您正在開發一個應用,而您想要監控透過您的網路的流量。第二個原因是需要識別可能耗盡網路頻寬和資源的流量。對於前一種情況,您可能已經知道協議的內容了,但是您希望能夠更深入地瞭解正在傳輸的實際資料,例如,在使用 Web 服務時。對於後一種情況,確定資料包的內容需要了解正在使用的協議的一些擴充套件知識。 在 TCP/IP 和 UDP/IP 的通訊中,最主要的元素是用於確定主機和埠號的 IP 地址。埠號用於提供額外的通訊通道,這樣您才能夠在兩個主機之間實現多個連線。其中埠定義還有一些標準。例如,埠 25 是專用於電子郵件(SMTP)傳輸,而大多數網站都是執行在埠 80(HTTP)上的。這些規範可以使程式之間透過一個熟悉的通道進行通訊,這與您選擇電話或傳真號的道理是一樣的。 雖然有這樣一些規範,但是您實際想使用哪些埠是沒有任何限制或約束的。事實上,大多數情況下一些破壞性網路應用和一些安全性方法會故意使用非標準埠。例如,有些應用會透過將一個標準埠用於不同的協議而隱藏內容,如在 埠 25 上使用 HTTP 協議。此外,有時某些應用也會使用與標準不同的埠,這樣埠的用途就明顯了(如,將埠 99 用於 HTTP),或者將特定的協議流量封裝到另一個協議中。最後的方法實際上是網路通道和虛擬私有網路(VPN)所使用的方法。 不管網路流量原因和複雜性,第一個步驟都會開始記錄資料。 記錄原始資料 如果您希望記錄網路原始資料,以便自己檢查這些資訊,那麼您可以使用許多不同的工具。大多數的網路嗅探器也能夠解碼和解密特定的資料包內容,這能夠幫助您研究一個已知協議的內容。 在 Solaris 上,您可以使用 snoop 工具,而在 AIX 上,您可以使用 iptrace 工具。您也可以嘗試使用跨平臺的 tcpdump 工具,它支援大多數的 UNIX 和 Linux 作業系統。這些工具能夠幫您捕捉和解碼資料包,通常也能為您執行大多數的協議分析。注意,現代交換機不會將 Ethernet 資料包傳送到每一個埠上,這通常會限制您從當前主機獲取的資訊量。許多現代交換機具有一個管理埠,它通常帶有與這種監控完全相同的所有資料包的副本。 解碼網路傳輸最複雜的是網路資料包中資訊的級別。此外,大部分資訊也會經過二進位制編碼後再傳送,從網路捕捉完全原始的資料包需要進行大量的操作才能捕捉您需要的資料。透過使用實現某些處理的工具,您可以簡化解碼網路資料的過程。 例如,在一個 Ethernet 上檢視一個典型的 TCP/IP 協議,您將會發現網路中傳輸的資料包括: Ethernet 資料包頭,包括 Ethernet 來源和目標地址,資料包大小和 Ethernet 資料包型別。 IP 報頭,由 IP 定址(來源和目標),協議標識和 IP 標記。您也會得到關於分片和資料包順序的資訊。 TCP 報頭,它包含埠上的資訊、隱含的協議、標記和順序編號。 即使有這些資訊,我們仍然無法瞭解實際內容。在 TCP(或 UDP)協議之下還有額外的協議,標準資料協議(包括 HTTP、SMTP 和 FTP),或者封裝性協議,如 Remote Procedure Call (RPC) 和 RPC 的子型別,如 NFS。 通常這些工具必須使用協議和/或埠號來確定正在傳輸的內容。所以,如果流量是透過非標準埠傳輸的,那麼這個些資訊可能無法正確解碼。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16896827/viewspace-1036461/,如需轉載,請註明出處,否則將追究法律責任。

相關文章