主頁 >  其他 > TCP/IP詳解,卷1:協議--第8章 Traceroute程式

TCP/IP詳解,卷1:協議--第8章 Traceroute程式

2020-09-20 21:38:21 其他

引言

由Van Jacobson撰寫的Tr a c e r o u t e程式是一個能更深入探索T C P / I P協議的方便可用的工具,
盡管不能保證從源端發往目的端的兩份連續的 I P資料報具有相同的路由,但是大多數情況下
是這樣的,Tr a c e r o u t e程式可以讓我們看到I P資料報從一臺主機傳到另一臺主機所經過的路由,
Tr a c e r o u t e程式還可以讓我們使用I P源路由選項,
使用手冊上說:“程式由Steve Deering提議,由Van Jacobson實作,并由許多其他人
根據C. Philip Wood, Tim Seaver 及Ken Adelman等人提出的令人信服的建議或補充意見
進行除錯,

Traceroute程式的操作

在7 . 3節中,我們描述了 I P記錄路由選項(R R),為什么不使用這個選項而另外開發一個
新的應用程式?有三個方面的原因,首先,原先并不是所有的路由器都支持記錄路由選項,
因此該選項在某些路徑上不能使用( Tr a c e r o u t e程式不需要中間路由器具備任何特殊的或可選
的功能),
其次,記錄路由一般是單向的選項,發送端設定了該選項,那么接收端不得不從收到的 I P
首部中提取出所有的資訊,然后全部回傳給發送端,在 7 . 3節中,我們看到大多數P i n g服務器的
實作(內核中的I C M P回顯應答功能)把接收到的R R清單回傳,但是這樣使得記錄下來的 I P地
址翻了一番(一來一回),這樣做會受到一些限制,這一點我們在下一段討論( Tr a c e r o u t e程式
只需要目的端運行一個U D P模塊 — 其他不需要任何特殊的服務器應用程式),
最后一個原因也是最主要的原因是, I P首部中留給選項的空間有限,不能存放當前大多
數的路徑,在I P首部選項欄位中最多只能存放 9個I P地址,在原先的A R PA N E T中這是足夠的,
但是對現在來說是遠遠不夠的,

Tr a c e r o u t e程式使用I C M P報文和I P首部中的T T L欄位(生存周期),T T L欄位是由發送端
初始設定一個8 bit欄位,推薦的初始值由分配數字 R F C指定,當前值為6 4,較老版本的系統
經常初始化為1 5或3 2,我們從第7章中的一些p i n g程式例子中可以看出,發送 I C M P回顯應答
時經常把T T L設為最大值2 5 5

發送一份 T T L欄位為1的I P資料報給
目的主機,處理這份資料報的第一個路由器將 T T L值減1,丟棄該資料報,并發回一份超時
I C M P報文,這樣就得到了該路徑中的第一個路由器的地址,然后 Tr a c e r o u t e程式發送一份
T T L值為2的資料報,這樣我們就可以得到第二個路由器的地址,繼續這個程序直至該資料報
到達目的主機,但是目的主機哪怕接收到 T T L值為1的I P資料報,也不會丟棄該資料報并產生
一份超時I C M P報文,這是因為資料報已經到達其最終目的地,那么我們該如何判斷是否已經
到達目的主機了呢?
Tr a c e r o u t e程式發送一份U D P資料報給目的主機,但它選擇一個不可能的值作為 U D P埠
號(大于30 000),使目的主機的任何一個應用程式都不可能使用該埠,因為,當該資料報
到達時,將使目的主機的 U D P模塊產生一份“埠不可達”錯誤(見 6 . 5節)的I C M P報文,
這樣,Tr a c e r o u t e程式所要做的就是區分接收到的 I C M P報文是超時還是埠不可達,以判斷
什么時候結束,
Tr a c e r o u t e程式必須可以為發送的資料報設定T T L欄位,并非所有與T C P / I P介面的
程式都支持這項功能,同時并非所有的實作都支持這項能力,但目前大部分系統都支
持這項功能,并可以運行Tr a c e r o u t e程式,這個程式界面通常要求用戶具有超級用戶權
限,這意味著它可能需要特殊的權限以在你的主機上運行該程式,

局域網輸出

往返時間是由發送主機的 t r a c e r o u t e程式計算的,它是指從 t r a c e r o u t e程式到該路
由器的總往返時間,如果我們對每段路徑的時間感興趣,可以用 T T L欄位為N + 1所列印出來的
時間減去T T L欄位為N的時間

有兩種不同的I C M P“超時”報文(見6 . 2節的圖6 - 3),它們的I C M P報文中c o d e欄位不同,
圖8 - 2給出了這種I C M P差錯報文的格式

我們所討論的I C M P報文是在T T L值等于0時產生的,其c o d e欄位為0,
主機在組裝分片時可能發生超時,這時,它將發送一份“組裝報文超時”的 I C M P報文
(我們將在11 . 5節討論分片和組裝),這種差錯報文將c o d e欄位置1

計算出S L I P鏈路的往返時間是很有意義的,就象我們在 7 . 2節中所舉的P i n g例子,將鏈路
值設定為1 2 0 0 b / s一樣,發送出的U D P資料報共4 2個位元組,包括1 2位元組的資料、8位元組U D P首
部、2 0位元組的I P首部以及(至少)2位元組的S L I P幀(2 . 4節),但是與P i n g不一樣的是,回傳的
資料報大小是變化的,從圖 6 - 9可以看出,回傳的 I C M P報文包含發生差錯的資料報的 I P首部
以及緊隨該I P首部的8位元組資料(在t r a c e r o u t e程式中,即U D P首部),這樣,總共就是2 0

  • 8 + 20 + 8 + 2,即5 8位元組,在資料速率為960 b/s的情況下,預計的RT T就是(42 + 58/960),
    即104 ms,這個值與s v r 4上所估算出來的110 ms是吻合的

關于t r a c e r o u t e程式,還有一些必須指出的事項,首先,并不能保證現在的路由也是
將來所要采用的路由,甚至兩份連續的 I P資料報都可能采用不同的路由,如果在運行程式時,
路由發生改變,就會觀察到這種變化,這是因為對于一個給定的 T T L,如果其路由發生變化,
t r a c e r o u t e程式將列印出新的I P地址,
第二,不能保證I C M P報文的路由與t r a c e r o u t e程式發送的U D P資料報采用同一路由,
這表明所列印出來的往返時間可能并不能真正體現資料報發出和回傳的時間差(如果 U D P數
據報從信源到路由器的時間是 1秒,而I C M P報文用另一條路由回傳信源用了 3秒時間,則列印
出來的往返時間是4秒)
第三,回傳的I C M P報文中的信源I P地址是U D P資料報到達的路由器介面的 I P地址,這與
I P記錄路由選項(7 . 3節)不同,記錄的 I P地址指的是發送介面地址,由于每個定義的路由器
都有2個或更多的介面,因此,從 A主機到B主機上運行t r a c e r o u t e程式和從B主機到A主機
上運行t r a c e r o u t e程式所得到的結果可能是不同的

最后,在廣域網情況下,如果 t r a c e r o u t e程式的輸出是可讀的域名形式,而不是 I P地
址形式,那么會更好理解一些,但是由于 t r a c e r o u t e程式接收到I C M P報文時,它所獲得的
唯一資訊就是I P地址,因此,在給定 I P地址的情況下,它做一個“反向域名查看”作業來獲
得域名,這就需要路由器或主機的管理員正確配置其反向域名查看功能(并非所有的情況下
都是如此)

IP源站選路選項

通常I P路由是動態的,即每個路由器都要判斷資料報下面該轉發到哪個路由器,應用程
序對此不進行控制,而且通常也并不關心路由,它采用類似 Tr a c e r o u t e程式的工具來發現
實際的路由,
源站選路(source routing)的思想是由發送者指定路由,它可以采用以下兩種形式:
? 嚴格的源路由選擇,發送端指明 I P資料報所必須采用的確切路由,如果一個路由器發現
源路由所指定的下一個路由器不在其直接連接的網路上,那么它就回傳一個“源站路
由失敗”的I C M P差錯報文,
? 寬松的源站選路,發送端指明了一個資料報經過的 I P地址清單,但是資料報在清單上指
明的任意兩個地址之間可以通過其他路由器

圖8 - 6給出了源站路由選項的格式,

這個格式與我們在圖 7 - 3中所示的記錄路由選項格式基本一致,不同之處是,對于源站選
路,我們必須在發送I P資料報前填充I P地址清單;而對于記錄路由選項,我們需要為 I P地址清
單分配并清空一些空間,并讓路由器填充該清單中的各項,同時,對于源站選路,只要為所
需要的I P地址數分配空間并進行初始化,通常其數量小于 9,而對于記錄路由選項來說,必須
盡可能地分配空間,以達到9個地址,
對于寬松的源站選路來說, c o d e欄位的值是0 x 8 3;而對于嚴格的源站選路,其值為 0 x 8 9,
l e n和p t r欄位與7 . 3節中所描述的一樣,
源站路由選項的實際稱呼為“源站及記錄路由”(對于寬松的源站選路和嚴格的源站選路,
分別用L S R R和S S R R表示),這是因為在資料報沿路由發送程序中,對I P地址清單進行了更新,
下面是其運行程序:
? 發送主機從應用程式接收源站路由清單,將第 1個表項去掉(它是資料報的最終目的地
址),將剩余的項移到1個項中(如圖8 - 6所示),并將原來的目的地址作為清單的最后一
項,指標仍然指向清單的第1項(即,指標的值為4),
? 每個處理資料報的路由器檢查其是否為資料報的最終地址,如果不是,則正常轉發數
據報(在這種情況下,必須指明寬松源站選路,否則就不能接收到該資料報),
? 如果該路由器是最終目的,且指標不大于路徑的長度,那么( 1)由p t r所指定的清單中的
下一個地址就是資料報的最終目的地址;(2)由外出接口(outgoing interface)相對應的I P
地址取代剛才使用的源地址;(3)指標加4
以用下面這個例子很好地解釋上述程序,在圖 8 - 7中,我們假設主機 S上的發送應用程
序發送一份資料報給D,指定源路由為R1,R2和R3

在上圖中,#表示指標欄位,其值分別是 4、8、1 2和1 6,長度欄位恒為1 5(三個I P地址加
上三個位元組首部),可以看出,每一跳I P資料報中的目的地址都發生改變,
當一個應用程式接收到由信源指定路由的資料時,在發送應答時,應該讀出接收到的路
由值,并提供反向路由

Host Requirements RFC指明,T C P客戶必須能指明源站選路,同時,T C P服務器
必須能夠接收源站選路,并且對于該 T C P連接的所有報文段都能采用反向路由,如果
T C P服務器下面接收到一個不同的源站選路,那么新的源站路由將取代舊的源站路
由,

小結

在一個T C P / I P網路中,t r a c e r o u t e程式是不可缺少的工具,其操作很簡單:開始時發
送一個T T L欄位為1的U D P資料報,然后將 T T L欄位每次加 1,以確定路徑中的每個路由器,
每個路由器在丟棄 U D P資料報時都回傳一個 I C M P超時報文 2,而最終目的主機則產生一個
I C M P埠不可達的報文

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/91895.html

標籤:其他

上一篇:adb server version (xx) doesn't match this client (xx); killing...

下一篇:為什么 K8s 在阿里能成功(轉)

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more