成人AV在线无码|婷婷五月激情色,|伊人加勒比二三四区|国产一区激情都市|亚洲AV无码电影|日av韩av无码|天堂在线亚洲Av|无码一区二区影院|成人无码毛片AV|超碰在线看中文字幕

網絡工具

MIT電子工程與計算機科學系6.829 2002秋季 網絡工具 2001年9月13日概述:在這個指南中,我們覆蓋了網絡研究中常用

MIT

電子工程與計算機科學系

6.829 2002秋季 網絡工具 2001年9月13日

概述:在這個指南中,我們覆蓋了網絡研究中常用的工具(在現實中的調試使用的)。我們首先介紹netstat 和tcpdump ,通過觀察一個活動的TCP 連接及其輸出形式來簡單介紹它們的使用。我們使用netstat 來描述TCP 狀態(tài)機的細微之處。

其次,我們來看一組基于查找的工具,dig 和whois ,它們提供關于DNS 的主機信息,關于名字和網絡的注冊信息等。

接下來我們介紹網絡的策略工具,ping 和更有趣的traceroute ,是如何工作的,以及它們能(不能)告訴你們什么。

最后,為那些不了解perl 的人講解如何使用一個簡單的perl 腳本將指定目的IP 地址和AS 的跟蹤和計數字節(jié)信息綁定到一起。

1 Tcpdump 和netstat

tcpdump 是如何工作的呢?對于BSD 驅動的內核來說,由BPF (Berkeley Packet Filter)提供。這個過濾器將設備驅動器設置到混雜模式,從驅動器接收所有發(fā)送和接收的報文。然后這些報文通過用戶定義的過濾器,這樣只有用戶感興趣的報文才會送到用戶進程處理。那么,為了小量的讀取而進行的內核固定的截獲行為的高代價是如何考慮呢?一個成批讀取的timeout 值將解決這個問題。

過濾過程由內核實現。這限制了從內核拷貝到用戶空間的數據總量。

下面是在我的機器上執(zhí)行tcpdump host –I eth0 aros.ron.lcs.mit.edu port ssh 的輸出結果。

? 2002 Nick Feamster 1

,

時間戳選項是如何工作的呢?例如,為什么不在一個報文中用當前發(fā)送時間來標志?(需要時鐘同步)

信息包括如下格式:時間戳,源和目的(IP 地址和端口),TCP 標志,段信息(開始,結束,大?。瑧?,窗口尺寸,以及其它TCP 選項?!癙 ”標志表示將接收到的數據盡快“推”給應用。并且,注意以下過程釋放一條連接:

tcp 0 0 ginseng.lcs.mit.ed:3524 aros.ron.lcs.mit.ed:ssh ESTABLISHED

tcp 0 0 ginseng.lcs.mit.ed:3524 aros.ron.lcs.mit.ed:ssh TIME_WAIT

可將狀態(tài)傳輸圖簡單描述為TCP 行為的“規(guī)則集”。

為什么連接會進入time wait狀態(tài)?注意這也被稱為“2MSL ”(最大段生存期)狀態(tài)。執(zhí)行主動關閉連接的端點不知道最后的ACK 是否收到,因此它不知道另一端點關閉了連接。只因為FIN 的到達,我們還不能假定連接以及關閉 — 段有可能沒有按順序到達。

你能想到各種對TCP 的攻擊嗎?順序號攻擊是一個例子。SYN flood是另外一個。你如何防范SYN flood攻擊呢?其中的一種策略是“SYN Cookies”,這種策略在三次握手協議執(zhí)行完之前不會為一個連接設置狀態(tài)(而不是——第一個SYN 到達就立即進入SYN 接收狀態(tài))。這在以后的講義中會進行介紹。

2 查詢工具:dig 和whois

dig 是一個DNS 查詢工具。它與nslookup 類似,但功能更強大。你可以查詢各種類型的記錄。最常見(缺?。┑氖菍NS 名字映射到IP 地址的“A ”記錄。

下面是我機器的查詢輸出結果。注意,是查詢“A ” 記錄。Dig 還會返回一些其它的有用信息。例如,返回lcs.mit.edu 的“NS ” 記錄。NS 字段返回特定域的授權DNS 服務器。注意,我還獲得了所有這些機器的“A ”記錄。為什么每個域的結束位置都有一個點號?因為,這告訴你名字是完全資格的(試著在MIT 機器上查詢ai vs.ai.)。

類似于“1800”的數字描述了本地DNS 服務器保留返回結果的時間。

說明當名字沒有被解析時的輸出時什么樣子。說明相反的DNS 的同樣情況,特別是資? 2002 Nick Feamster 2

,

格域名等。

你能看到的還有類似于CNAME 的類型。人們通常使用別名,或為同一個機器取不同的名字。這通過規(guī)范名字來實現,這在DNS 通過CNAME 記錄來實現。如下所示: ;; ANSWER SECTION:

bgp.lcs.mit.edu. 1800 IN CNAME mit-network-monitor.lcs.mit.edu. mit-network-monitor.lcs.mit.edu 1800 IN A 18.31.0.51

可以使用dig 來查詢特定域的郵件服務器。假如有人想發(fā)送郵件到feamster@lcs.mit.edu;他的郵件服務器如何獲得相應的郵件服務器來將郵件傳送到lcs.mit.edu ?這通過MX 記錄來表示。例如,可通過輸入dig lcs.mit.edu MX來查詢這個記錄。數字代表什么呢?表示一個郵件服務器的優(yōu)先順序。

? 2002 Nick Feamster 3

,

;; ANSWER SECTION:

lcs.mit.edu. 1800 IN MX 10 fedex.ai.mit.edu.

lcs.mit.edu. 1800 IN MX 1 mintaka.lcs.mit.edu.

你還可以使用dig 來來執(zhí)行反向查找。dig –x是最簡單的方式。Dig 也可用作批量模式。參加隨機手冊。

whois 是查詢whois 機器的一種有效工具。有很多種類型的whois 服務器。其中之一是“nic ”服務器,常用來告訴你關于誰注冊了特定的名字的信息。我機器上缺省的whois 服務器是whois.crsnic.net 。這個whois 服務器將執(zhí)行來自負責注冊該名字的whois 服務的查詢。輸出的摘錄如下:

Whois 還可以用來查詢地址注冊,ARIN(North America),APNIC (Asia ),以及RIPE (Europe )。例如,我們希望知道關于地址18.31.0.38的更多信息:

? 2002 Nick Feamster 4

,

注意,數據庫中的所有的日期都是最后修改日期,記錄也是的最后修改時間。這就給你提供了信息的準確性。

whois 服務器除了可提供名字到管理域的解析,還可以幫助完成序號到管理域的映射。特別的,“序號”(例如IP 地址和AS 序號)由一些組織管理:

RIPE :Reseaux IP Europeans

ARIN : Internet序號在美洲的注冊(包括非洲)

APNIC :亞太網絡信息(包括澳洲)

如果我要了解在MIT 中IP 地址或者AS 序號的一些信息,我就要作為ARIN whois服務器(whois.arin.net )。ARIN whois服務器有很多選項來限制查詢特定的記錄類型。例如,我想查詢“AS 701”:

? 2002 Nick Feamster 5

,

還支持在超網中的查詢;APINIC (whois.apnic.net )和RIPE (whois.ripe.net )以相同的方式工作。我們如何發(fā)現一個特定網絡或IP 地址的自治系統(tǒng)?還有另外一個稱為RADB 的whois 數據庫,它保持著最新的相關信息。注意,這是traceroute –A為AS 解析IP 地址的過程。

3 測量工具:ping 和traceroute

ping 是通過使用ICMP 的“回聲請求Echo Request”信息,并等待ICMP 的“回聲響應Echo Reply”的一個簡單程序。它最基本的應用是檢測一個特定主機是否有響應(因此可確定主機開機,并連接到網絡)。Ping 還為每個請求/響應對顯示一個RTT 值,和一個順序號。Ping 還會給出丟失率的概要。注意:這個RTT 值并不準確,因為ICMP 不是在很多路由器的最快路徑上。選項“f ”(flood ,有時需要根),“c ”(發(fā)送特定數量的報文),“s ”(指定報文的尺寸,有時對分段特別有用)。

試著發(fā)送一個巨大尺寸的ping 報文,使用tcpdump 觀測IP ID。

Traceroute 是一個獲得從一個主機看到的到特定目的的路徑的工具。Traceroute 使用遞增的TTL 值(實際上,每個TTL 值3次)發(fā)送IP 報文,并監(jiān)聽路徑上每跳的ICMP 的“TIME EXCEEDED ”響應。Traceroute 需要注意以下問題:

每跳都指定一個接口(發(fā)送time-exceeded 消息),而不是主機或路由器。一條路徑

在一個路由器上可能傳輸超過一跳。

? 2002 Nick Feamster 6

,

有可能time-exceeded 消息的源被設置為通向主機返回路徑的輸出接口的IP 地址,

而不是報文的到達接口。這會產生一些奇怪的結果。

traceroute 的錯誤不代表節(jié)點的錯誤。有可能是相反路徑的錯誤,例如,“*”不代

表錯誤情況,必要的;這可能意味著,例如,路由器不響應ICMP 消息。

注意很多機器上的traceroute 的版本不支持選項“A ”。你可以通過澄清RPM 或恰當的已存在包,來手工來完成(如上所示);或者從http://nms.lcs.mit.edu/6.829/other/ traceroute-nanog.tar.gz 下載“Nanog Traceroute”,并在你機器上編譯(注意traceroute 需要超級用戶的權限執(zhí)行,或者你必須設置為“setuid root”,否則你會得到權限的錯誤)。

4 Perl

在這個部分,我們介紹如何使用Perl (一個流行的腳本語言)來執(zhí)行tcpdump 文件的分析工作:

計算從一個主機到另一個主機傳輸的字節(jié)數

畫出應答的軌跡

注意下面的代碼不是告訴你如何使用最基本的部分,例如對問題集非常有用的數字和hash 表。要理解這些基本信息(或者關于Perl 的更多信息),可參考一本非常好的書Larry Wall編寫O’Reilly出版的Programming Perl,Perl 手冊(在Unix 中輸入“man perl”)也是非常好的參考。

下面的程序做了兩件事情:它有一個統(tǒng)計tcpdump 跟蹤信息(以tcptrace 跟蹤文集的格式給出)字節(jié)數的函數,以及一個為tcpdump 跟蹤信息產生“ACK trace”的函數。這兩個函數帶有教育的目的。這里我主要是告訴你們perl 的外觀,以及在網絡研究和分析中使用的基本要素。這不是語言的教材。

? 2002 Nick Feamster 7

,

? 2002 Nick Feamster 8

,

? 2002 Nick Feamster 9

,

calculate-byte 從routeviews 到ginseng 打印了(希望是正確的)一些字節(jié)的數量。Ack_trace函數生成如下圖像(這是整個連接的完整ACK 軌跡的一個縮略):

為什么軌跡會是這樣的呢? 因為我們是站在接收者的立場:發(fā)送者填滿了擁塞窗口,我們按照窗口容納報文的最大尺寸應答,然后過程自己重復。

? 2002 Nick Feamster 10

標簽: