卖逼视频免费看片|狼人就干网中文字慕|成人av影院导航|人妻少妇精品无码专区二区妖婧|亚洲丝袜视频玖玖|一区二区免费中文|日本高清无码一区|国产91无码小说|国产黄片子视频91sese日韩|免费高清无码成人网站入口

網(wǎng)絡(luò)工具

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

MIT

電子工程與計算機(jī)科學(xué)系

6.829 2002秋季 網(wǎng)絡(luò)工具 2001年9月13日

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

其次,我們來看一組基于查找的工具,dig 和whois ,它們提供關(guān)于DNS 的主機(jī)信息,關(guān)于名字和網(wǎng)絡(luò)的注冊信息等。

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

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

1 Tcpdump 和netstat

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

過濾過程由內(nèi)核實(shí)現(xiàn)。這限制了從內(nèi)核拷貝到用戶空間的數(shù)據(jù)總量。

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

? 2002 Nick Feamster 1

,

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

信息包括如下格式:時間戳,源和目的(IP 地址和端口),TCP 標(biāo)志,段信息(開始,結(jié)束,大?。?,應(yīng)答,窗口尺寸,以及其它TCP 選項(xiàng)。“P ”標(biāo)志表示將接收到的數(shù)據(jù)盡快“推”給應(yīng)用。并且,注意以下過程釋放一條連接:

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ī)則集”。

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

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

2 查詢工具:dig 和whois

dig 是一個DNS 查詢工具。它與nslookup 類似,但功能更強(qiáng)大。你可以查詢各種類型的記錄。最常見(缺省)的是將DNS 名字映射到IP 地址的“A ”記錄。

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

類似于“1800”的數(shù)字描述了本地DNS 服務(wù)器保留返回結(jié)果的時間。

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

,

格域名等。

你能看到的還有類似于CNAME 的類型。人們通常使用別名,或?yàn)橥粋€機(jī)器取不同的名字。這通過規(guī)范名字來實(shí)現(xiàn),這在DNS 通過CNAME 記錄來實(shí)現(xiàn)。如下所示: ;; 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 來查詢特定域的郵件服務(wù)器。假如有人想發(fā)送郵件到feamster@lcs.mit.edu;他的郵件服務(wù)器如何獲得相應(yīng)的郵件服務(wù)器來將郵件傳送到lcs.mit.edu ?這通過MX 記錄來表示。例如,可通過輸入dig lcs.mit.edu MX來查詢這個記錄。數(shù)字代表什么呢?表示一個郵件服務(wù)器的優(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 也可用作批量模式。參加隨機(jī)手冊。

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

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

? 2002 Nick Feamster 4

,

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

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

RIPE :Reseaux IP Europeans

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

APNIC :亞太網(wǎng)絡(luò)信息(包括澳洲)

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

? 2002 Nick Feamster 5

,

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

3 測量工具:ping 和traceroute

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

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

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

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

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

? 2002 Nick Feamster 6

,

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

而不是報文的到達(dá)接口。這會產(chǎn)生一些奇怪的結(jié)果。

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

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

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

4 Perl

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

計算從一個主機(jī)到另一個主機(jī)傳輸?shù)淖止?jié)數(shù)

畫出應(yīng)答的軌跡

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

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

? 2002 Nick Feamster 7

,

? 2002 Nick Feamster 8

,

? 2002 Nick Feamster 9

,

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

為什么軌跡會是這樣的呢? 因?yàn)槲覀兪钦驹诮邮照叩牧觯喊l(fā)送者填滿了擁塞窗口,我們按照窗口容納報文的最大尺寸應(yīng)答,然后過程自己重復(fù)。

? 2002 Nick Feamster 10

標(biāo)簽: