亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

traceroute工作原理

系統 1812 0
?
traceroute , 也就是 trace route,跟蹤路由。這個程序最早是Van Jacobson實現的。源代碼在網上能夠找到,只是我還沒有去找。 基本的原理 是IP路由過程中對數據包TTL(Time to Live,存活時間)的處理。當路由器收到一個IP包時,會改動IP包的TTL(及由此造成的頭部檢驗和checksum變化)。每收到一個包,檢查這個 的TTL是否是0或1。假設是,表明這個包還沒有到達目的地,并且剩余時間不多了,肯定是到不了目的地了。這樣路由器就簡單地丟棄這個包,并給源主機發送 ICMP通知,說這個包已經超時了。ICMP的通知信息里包括當前路由器發送時所用的IP。

  這樣就能夠通過構造數據包,來間接檢查到 達一個主機時經過了哪些路由。一開始發送一個TTL為1的包,這樣到達第一個路由器的時候就已經超時了,第一個路由器就發通知說包超時,這樣就能夠記錄下 所經過的第一個路由器的IP。然后TTL加1,安全通過第一個路由器,而第二個路由器的的處理與第一個同樣,丟包,發通知說包超時了,這樣記錄下第二個路 由器IP,由此能夠一直進行下去,直到這個數據包到達目標主機,由此打印出全部經過的路由器。

  在通信中,IP層僅僅負責數據的路由與傳 輸,并不處理數據包的內容。比如ICMP,或TCP,UDP,這些協議是依賴IP層的傳輸功能來傳送數據的。在通信兩方的主機中,收到這些協議的數據包 后,一般在通信的相應主機上,會有程序來處理這些數據。而直接的IP數據報是沒實用處的(win2000的驅動層能夠直接使用IP報而不須要加上其它協 議,可是通常是不會這樣用的)。因此traceroute程序發送一個UDP包來試探。對路由器來說,UDP數據報僅僅是IP數據報的一種,它并不關心 UDP數據報的詳細內容。直到這個包到達目的端的主機會,目的主機的內核會解析UDP數據報,并查找數據報中要求port是否已經有進程在使用。假設找到,則 通知進程有數據到達。而假設找不到,則發送一個"目的port不可達"的ICMP錯誤數據回到源主機。

  這樣就能夠全然確定下來。 trcertroute建立一個UDP數據包,不斷改動TTL值并發送出去,假設收到"超時錯",表示剛剛到達的是路由器,而假設收到的是"port不可達"錯誤,表示剛剛到達的就是目的主機。這樣路由跟蹤完畢,程序結束。

有幾個細節

  1.局域網的路由是相對穩定的,因此用traceroute打印出來的響應時間相差不大。而假設用來跟蹤廣域網的路由,因為廣域網的路由信息是動態變化的,并且并不能確定是發送路徑耗時還是返回路徑耗時較多,因此時間與路由信息僅僅能做為參考。

   2.TTL 的選擇。假設把TTL設得足夠大,是不是一定能夠打印出全部路由,比方一個數據包經過300個路由器才到達目的端。當然在現有網絡環境下不太可能出現要經 過這么多路由的情況。而TTL信息在IP數據報中僅僅有一個字節,也就是最多能設定到255(256以后又又一次從0開始)。設定這個信息的目的,就是防止一 些僵而不化的數據報在網絡漫上無目的的游蕩而不消失。數據報每經過一個路由器,路由器就把TTL減1(或在該路由器被處理前經過的秒數),總有一個時候會 被減到1,然后路由器會把它丟棄。

  3.traceroute的是以收到"port不可達"為標志來結束的。前提是發出的UDP數據報中要求 的port在目的主機上沒有進程在使用。而假設目的主機上正好有進程在使用這個port,接收這個包并按正常方式處理,這樣traceroute就收不到"port不 可達"的錯誤了。為了避免出現這樣的情況,UDP數據報的port非常高(書中的實現是初始值33435,以后每發送一次再加1,port號最大能夠到65535)。 普通程序一般不會使用這些高port。問題是假如真的存在這樣的情況時,traceroute會怎么處理?而好像Solaris系統可能會使用高port,這時又怎 么樣。

  4. 在發送過程中,要經過很多的路由,到達目的主機前,可能還要經過網關,防火墻,以及其它比如IDS的過濾,發送包能不能到達目的主機還是個問題。而即使到 達了,發送的ICMP信息能不能返回也是個問題。由于沿途經過的關卡太多,遇上黑洞路由器,不轉發這些信息的話,那就一點辦法也沒有了。

   書中還提到原來的traceroute里有一個選項,能夠指定數據包經過的路由器。假設是寬路由,則僅僅要經過指定的路由就可以。而假設是嚴路由,則必須按 指定的順序經過指定的路由器。由于這個選項可能導致某個固定的路由處理信息太多,在發布的源代碼里已經取消了。可是能夠找到補丁,還是能夠用起來的。從比較 的結果看,似乎指定路由器反而不如讓路由器採用默認路由處理得快。而對于嚴路由來說,要成功就要更難一些,由于并不一定你指定的路由器正好有條目到接下來 的路由器。

?

?

ping 程序是利用icmp的回復請求來探測遠端主機是否可達。(并不能繼續推斷port是否可達。要想查看port,就要使用掃描器了。)win2000里的網絡庫里已 經提供網絡函數庫(icmp.dll)能夠實現利用icmp來探測遠端主機。相比起使用管道來讀ping的結果,或者嵌入ping源代碼,這個是最簡單的方 法了(沒辦法,人懶)。ping事實上另一個R選項,用來記錄經過的路由,曾經一直不知道。(ping www.google.com -r 7)記錄經過的7個路由器。依照分析,依據所在環境限制最多能夠記錄8~9個項目。

  除了回顯請求外,還能夠利用icmp來實現時間請求。在icmp的數據包中能夠包括發送時間,目的主機收到后再附上自身當時時間才發回。這樣能夠做一個時間校驗,并能夠推斷源與目的之間的通訊速度。因為詳細的內容部分比較煩,類型太多,一下子記不住各個類型的意思。

  一般用ping的時候僅僅是用了它的最簡單的功能:檢查主機能不能連到。事實上使用它所提供的其它選項,能夠實現很多細節上的控制,比如數據包長度,TTL,路由記錄,寬/嚴路由經過路由等。

?

traceroute工作原理


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 精品黑人一区二区三区 | 曰本一级毛片免费 | 亚洲天堂一区在线 | 久99久精品视频免费观看v | 色姝影院免费 | 色四月| 99r精品| 久久国产成人亚洲精品影院老金 | 亚洲成人xxx | 国产精品福利社 | 国产成人精品日本 | 亚洲国内精品久久 | 成人免费一级片 | 日韩美视频网站 | 久久精品视频播放 | 麻豆亚洲一区 | 四虎影视永久费观看在线 | 极品美女一级毛片免费 | 亚洲一区二区三区在线网站 | 日韩欧美视频一区二区在线观看 | 欧美综合图区亚欧综合图区 | 激情久久久久久久久久久 | 亚洲 欧美 视频 | 亚洲精品久久婷婷爱久久婷婷 | 国产精品久久久久久久午夜片 | 日日干夜夜欢 | 国产精品入口麻豆高清在线 | 国内精品伊人久久久久妇 | 四虎精品影院永久在线播放 | 欧美中文字幕一区 | 亚洲国产另类久久久精品小说 | 日本综合欧美一区二区三区 | 一亚洲精品一区 | 99在线精品日韩一区免费国产 | 婷婷玖玖 | 天天撸天天操 | 午夜亚洲国产理论秋霞 | 免费一区二区三区久久 | 国产极品嫩模大尺度福利视频 | 国产在线视频二区 | 久久精品国产在爱久久 |