1. 程式人生 > >Linux traceroute --追蹤網路資料包

Linux traceroute --追蹤網路資料包

通過traceroute我們可以知道資訊從你的計算機到網際網路另一端的主機是走的什麼路徑。當然每次資料包由某一同樣的出發點(source)到達某一同樣的目的地(destination)走的路徑可能會不一樣,但基本上來說大部分時候所走的路由是相同的。linux系統中,我們稱之為traceroute,在MSWindows中為tracert。traceroute通過傳送小的資料包到目的裝置直到其返回,來測量其需要多長時間。一條路徑上的每個裝置traceroute要測3次。輸出結果中包括每次測試的時間(ms)和裝置的名稱(如有的話)及其IP地址。

在大多數情況下,我們會在linux主機系統下,直接執行命令列:

traceroutehostname

而在Windows系統下是執行tracert的命令:

tracerthostname

1.命令格式:

traceroute[引數][主機]

2.命令功能:

traceroute指令讓你追蹤網路資料包的路由途徑,預設資料包大小是40Bytes,使用者可另行設定。

具體引數格式:traceroute[-dFlnrvx][-f<存活數值>][-g<閘道器>...][-i<網路介面>][-m<存活數值>][-p<通訊埠>][-s<來源地址>][-t<服務型別>][-w<超時秒數>][主機名稱或IP地址][資料包 大小]

3.命令引數:

-d使用Socket層級的排錯功能。

-f設定第一個檢測資料包的存活數值TTL的大小。

-F設定勿離斷位。

-g設定來源路由閘道器,最多可設定8個。

-i使用指定的網路介面送出資料包。

-I使用ICMP迴應取代UDP資料資訊。

-m設定檢測資料包的最大存活數值TTL的大小。

-n直接使用IP地址而非主機名稱。

-p設定UDP傳輸協議的通訊埠。

-r忽略普通的Routing Table,直接將資料包送到遠端主機上。

-s設定本地主機送出資料包的IP地址。

-t設定檢測資料包的TOS數值。

-v詳細顯示指令的執行過程。

-w設定等待遠端主機回報的時間。

-x開啟或關閉資料包的正確性檢驗。

4.使用例項:

例項1:traceroute 用法簡單、最常用的用法

命令:

輸出:

[[email protected] ~]# traceroute www.baidu.com

traceroute to www.baidu.com (61.135.169.125), 30 hops max, 40 byte packets

 1  192.168.74.2 (192.168.74.2)  2.606 ms  2.771 ms  2.950 ms

 2  211.151.56.57 (211.151.56.57)  0.596 ms  0.598 ms  0.591 ms

 3  211.151.227.206 (211.151.227.206)  0.546 ms  0.544 ms  0.538 ms

 4  210.77.139.145 (210.77.139.145)  0.710 ms  0.748 ms  0.801 ms

 5  202.106.42.101 (202.106.42.101)  6.759 ms  6.945 ms  7.107 ms

 6  61.148.154.97 (61.148.154.97)  718.908 ms * bt-228-025.bta.net.cn (202.106.228.25)  5.177 ms

 7  124.65.58.213 (124.65.58.213)  4.343 ms  4.336 ms  4.367 ms

 8  202.106.35.190 (202.106.35.190)  1.795 ms 61.148.156.138 (61.148.156.138)  1.899 ms  1.951 ms

 9  * * *

30  * * *

[[email protected] ~]

說明:

記錄按序列號從1開始,每個紀錄就是一跳,每跳錶示一個閘道器,我們看到每行有三個時間,單位是 ms,其實就是-q的預設引數。探測資料包向每個閘道器傳送三個資料包後,閘道器響應後返回的時間;如果您用traceroute -q 4 www.58.com ,表示向每個閘道器傳送4個數據包。

有時我們traceroute一臺主機時,會看到有一些行是以星號表示的。出現這樣的情況,可能是防火牆封掉了ICMP的返回資訊,所以我們得不到什麼相關的資料包返回資料。

有時我們在某一閘道器處延時比較長,有可能是某臺網關比較阻塞,也可能是物理裝置本身的原因。當然如果某臺DNS出現問題時,不能解析主機名、域名時,也會有延時長的現象;您可以加-n 引數來避免DNS解析,以IP格式輸出資料。

如果在區域網中的不同網段之間,我們可以通過traceroute 來排查問題所在,是主機的問題還是閘道器的問題。如果我們通過遠端來訪問某臺伺服器遇到問題時,我們用到traceroute 追蹤資料包所經過的閘道器,提交IDC服務商,也有助於解決問題;但目前看來在國內解決這樣的問題是比較困難的,就是我們發現問題所在,IDC服務商也不可能幫助我們解決。

例項2:跳數設定

命令:

traceroute-m 10 www.baidu.com

輸出:

[[email protected] ~]# traceroute -m 10 www.baidu.com

traceroute to www.baidu.com (61.135.169.105), 10 hops max, 40 byte packets

 1  192.168.74.2 (192.168.74.2)  1.534 ms  1.775 ms  1.961 ms

 2  211.151.56.1 (211.151.56.1)  0.508 ms  0.514 ms  0.507 ms

 3  211.151.227.206 (211.151.227.206)  0.571 ms  0.558 ms  0.550 ms

 4  210.77.139.145 (210.77.139.145)  0.708 ms  0.729 ms  0.785 ms

 5  202.106.42.101 (202.106.42.101)  7.978 ms  8.155 ms  8.311 ms

 6  bt-228-037.bta.net.cn (202.106.228.37)  772.460 ms bt-228-025.bta.net.cn (202.106.228.25)  2.152 ms 61.148.154.97 (61.148.154.97)  772.107 ms

 7  124.65.58.221 (124.65.58.221)  4.875 ms 61.148.146.29 (61.148.146.29)  2.124 ms 124.65.58.221 (124.65.58.221)  4.854 ms

 8  123.126.6.198 (123.126.6.198)  2.944 ms 61.148.156.6 (61.148.156.6)  3.505 ms 123.126.6.198 (123.126.6.198)  2.885 ms

 9  * * *

10  * * *

[[email protected] ~]#

說明:

例項3:顯示IP地址,不查主機名

命令:

輸出:

[[email protected] ~]# traceroute -n www.baidu.com

traceroute to www.baidu.com (61.135.169.125), 30 hops max, 40 byte packets

 1  211.151.74.2  5.430 ms  5.636 ms  5.802 ms

 2  211.151.56.57  0.627 ms  0.625 ms  0.617 ms

 3  211.151.227.206  0.575 ms  0.584 ms  0.576 ms

 4  210.77.139.145  0.703 ms  0.754 ms  0.806 ms

 5  202.106.42.101  23.683 ms  23.869 ms  23.998 ms

 6  202.106.228.37  247.101 ms * *

 7  61.148.146.29  5.256 ms 124.65.58.213  4.386 ms  4.373 ms

 8  202.106.35.190  1.610 ms 61.148.156.138  1.786 ms 61.148.3.34  2.089 ms

 9  * * *

30  * * *

[[email protected] ~]# traceroute www.baidu.com

traceroute to www.baidu.com (61.135.169.125), 30 hops max, 40 byte packets

 1  211.151.74.2 (211.151.74.2)  4.671 ms  4.865 ms  5.055 ms

 2  211.151.56.57 (211.151.56.57)  0.619 ms  0.618 ms  0.612 ms

 3  211.151.227.206 (211.151.227.206)  0.620 ms  0.642 ms  0.636 ms

 4  210.77.139.145 (210.77.139.145)  0.720 ms  0.772 ms  0.816 ms

 5  202.106.42.101 (202.106.42.101)  7.667 ms  7.910 ms  8.012 ms

 6  bt-228-025.bta.net.cn (202.106.228.25)  2.965 ms  2.440 ms 61.148.154.97 (61.148.154.97)  431.337 ms

 7  124.65.58.213 (124.65.58.213)  5.134 ms  5.124 ms  5.044 ms

 8  202.106.35.190 (202.106.35.190)  1.917 ms  2.052 ms  2.059 ms

 9  * * *

30  * * *

[[email protected] ~]

說明:

例項4:探測包使用的基本UDP埠設定6888

命令:

traceroute-p 6888 www.baidu.com

輸出:

[[email protected] ~]# traceroute -p 6888 www.baidu.com

traceroute to www.baidu.com (220.181.111.147), 30 hops max, 40 byte packets

 1  211.151.74.2 (211.151.74.2)  4.927 ms  5.121 ms  5.298 ms

 2  211.151.56.1 (211.151.56.1)  0.500 ms  0.499 ms  0.509 ms

 3  211.151.224.90 (211.151.224.90)  0.637 ms  0.631 ms  0.641 ms

 4  * * *

 5  220.181.70.98 (220.181.70.98)  5.050 ms  5.313 ms  5.596 ms

 6  220.181.17.94 (220.181.17.94)  1.665 ms !X * *

[[email protected] ~]

說明:

例項5:把探測包的個數設定為值4

命令:

traceroute-q 4 www.baidu.com

輸出:

[[email protected] ~]# traceroute -q 4 www.baidu.com

traceroute to www.baidu.com (61.135.169.125), 30 hops max, 40 byte packets

 1  211.151.74.2 (211.151.74.2)  40.633 ms  40.819 ms  41.004 ms  41.188 ms

 2  211.151.56.57 (211.151.56.57)  0.637 ms  0.633 ms  0.627 ms  0.619 ms

 3  211.151.227.206 (211.151.227.206)  0.505 ms  0.580 ms  0.571 ms  0.569 ms

 4  210.77.139.145 (210.77.139.145)  0.753 ms  0.800 ms  0.853 ms  0.904 ms

 5  202.106.42.101 (202.106.42.101)  7.449 ms  7.543 ms  7.738 ms  7.893 ms

 6  61.148.154.97 (61.148.154.97)  316.817 ms bt-228-025.bta.net.cn (202.106.228.25)  3.695 ms  3.672 ms *

 7  124.65.58.213 (124.65.58.213)  3.056 ms  2.993 ms  2.960 ms 61.148.146.29 (61.148.146.29)  2.837 ms

 8  61.148.3.34 (61.148.3.34)  2.179 ms  2.295 ms  2.442 ms 202.106.35.190 (202.106.35.190)  7.136 ms

 9  * * * *

30  * * * *

[[email protected] ~]

說明:

例項6:繞過正常的路由表,直接傳送到網路相連的主機

命令:

輸出:

[[email protected] ~]# traceroute -r www.baidu.com

traceroute to www.baidu.com (61.135.169.125), 30 hops max, 40 byte packets

connect: 網路不可達

[[email protected] ~]

說明:

例項7:把對外發探測包的等待響應時間設定為3秒

命令:

traceroute-w 3 www.baidu.com

輸出:

[[email protected] ~]# traceroute -w 3 www.baidu.com

traceroute to www.baidu.com (61.135.169.105), 30 hops max, 40 byte packets

 1  211.151.74.2 (211.151.74.2)  2.306 ms  2.469 ms  2.650 ms

 2  211.151.56.1 (211.151.56.1)  0.621 ms  0.613 ms  0.603 ms

 3  211.151.227.206 (211.151.227.206)  0.557 ms  0.560 ms  0.552 ms

 4  210.77.139.145 (210.77.139.145)  0.708 ms  0.761 ms  0.817 ms

 5  202.106.42.101 (202.106.42.101)  7.520 ms  7.774 ms  7.902 ms

 6  bt-228-025.bta.net.cn (202.106.228.25)  2.890 ms  2.369 ms 61.148.154.97 (61.148.154.97)  471.961 ms

 7  124.65.58.221 (124.65.58.221)  4.490 ms  4.483 ms  4.472 ms

 8  123.126.6.198 (123.126.6.198)  2.948 ms 61.148.156.6 (61.148.156.6)  7.688 ms  7.756 ms

 9  * * *

30  * * *

[[email protected] ~]

說明:

Traceroute的工作原理:

Traceroute最簡單的基本用法是:traceroutehostname

Traceroute程式的設計是利用ICMP及IP header的TTL(Time To Live)欄位(field)。首先,traceroute送出一個TTL是1 的IPdatagram(其實,每次送出的為3個40位元組的包,包括源地址,目的地址和包發出的時間標籤)到目的地,當路徑上的第一個路由器(router)收到這個datagram時,它將TTL減1。此時,TTL變為0了,所以該路由器會將此datagram丟掉,並送回一個 「ICMP timeexceeded」訊息(包括髮IP包的源地址,IP包的所有內容及路由器的IP地址),traceroute 收到這個訊息後,便知道這個路由器存在於這個路徑上,接著traceroute 再送出另一個TTL是2 的datagram,發現第2 個路由 器...... traceroute每次將送出的datagram的TTL 加1來發現另一個路由器,這個重複的動作一直持續到某個 datagram抵達目的地。當datagram到達目的地後,該主機並不會送回ICMP time exceeded訊息,因為它已是目的地了,那麼traceroute如何得知目的地到達了呢?

Traceroute在送出UDP datagrams到目的地時,它所選擇送達的port number 是一個一般應用程式都不會用的號碼(30000 以上),所以當此 UDPdatagram 到達目的地後該主機會送回一個「ICMP port unreachable」的訊息,而當traceroute 收到這個訊息時,便知道目的地已經到達了。所以traceroute 在Server端也是沒有所謂的Daemon 程式。

Traceroute提取發ICMP TTL到期訊息裝置的IP地址並作域名解析。每次 ,Traceroute都打印出一系列資料,包括所經過的路由裝置的域名及IP地址,三個包每次來回所花時間。

windows之tracert:

格式:

tracert [-d] [-hmaximum_hops] [-j host-list] [-w timeout] target_name

引數說明:

tracert [-d] [-hmaximum_hops] [-j computer-list] [-w timeout] target_name

該 診斷實用程式通過向目的地傳送具有不同生存時間(TL) 的 Internet 控制資訊協議 (CMP) 迴應報文,以確定至目的地的路由。路徑上的 每個路由器都要在轉發該 ICMP 迴應報文之前將其 TTL值至少減 1,因此 TTL 是有效的跳轉計數。當報文的 TTL 值減少到 0 時,路 由器向源系統發回 ICMP 超時資訊。通過傳送 TTL 為 1的第一個迴應報文並且在隨後的傳送中每次將 TTL 值加 1,直到目標響應或達到最 大 TTL 值,Tracert 可以確定路由。通過檢查中間路由器發發回的ICMP 超時 (ime Exceeded) 資訊,可以確定路由器。注 意,有些路由器“安靜”地丟棄生存時間 (TLS) 過期的報文並且對 tracert無效。

引數:

-d 指定不對計算機名解析地址。

-hmaximum_hops 指定查詢目標的跳轉的最大數目。

-jcomputer-list 指定在computer-list 中鬆散源路由。

-w timeout 等待由timeout 對每個應答指定的毫秒數。

target_name 目標計算機的名稱。

例項:

C:\Users\Administrator>tracert www.58.com

Tracing route to www.58.com [221.187.111.30]

over a maximum of 30 hops:

  1     1 ms     1 ms     1 ms  10.58.156.1

  2     1 ms    <1 ms    <1 ms  10.10.10.1

  3     1 ms     1 ms     1 ms  211.103.193.129

  4     2 ms     2 ms     2 ms  10.255.109.129

  5     1 ms     1 ms     3 ms  124.205.98.205

  6     2 ms     2 ms     2 ms  124.205.98.253

  7     2 ms     6 ms     1 ms  202.99.1.125

  8     5 ms     6 ms     5 ms  118.186.0.113

  9   207 ms     *        *     118.186.0.106

 10     8 ms     6 ms    11 ms  124.238.226.201

 11     6 ms     7 ms     6 ms  219.148.19.177

 12    12 ms    12 ms    16 ms  219.148.18.117

 13    14 ms    17 ms    16 ms  219.148.19.125

 14    13 ms    13 ms    12 ms  202.97.80.113

 15     *        *        *     Request timed out.

 16    12 ms    12 ms    17 ms  bj141-147-82.bjtelecom.net [219.141.147.82]

 17    13 ms    13 ms    12 ms  202.97.48.2

 18     *        *        *     Request timed out.

 19    14 ms    14 ms    12 ms  221.187.224.85

 20    15 ms    13 ms    12 ms  221.187.104.2

 21     *        *        *     Request timed out.

 22    15 ms    17 ms    18 ms  221.187.111.30

Trace complete.

相關推薦

Linux traceroute --追蹤網路資料

通過traceroute我們可以知道資訊從你的計算機到網際網路另一端的主機是走的什麼路徑。當然每次資料包由某一同樣的出發點(source)到達某一同樣的目的地(destination)走的路徑可能會不一樣,但基本上來說大部分時候所走的路由是相同的。linux系統中,我們稱之為traceroute,在MSWi

Linux網路 - 資料的接收過程

轉自https://segmentfault.com/a/1190000008836467 本文將介紹在Linux系統中,資料包是如何一步一步從網絡卡傳到程序手中的。 如果英文沒有問題,強烈建議閱讀後面參考裡的兩篇文章,裡面介紹的更詳細。 本文只討論乙太網的物理網絡卡,不涉及虛擬裝置,並且

linux網路linux核心網路資料流向圖

根據網路上搜集的資源以及檢視linux核心網路相關的程式碼,arvik繪製了一份linux核心網路資料包流向圖,該圖大致呈現了資料包從網絡卡進來以後到怎麼出網絡卡或者進入本地的流程 以及 本地資料怎麼流出網絡卡的流程。如下(linux核心版本3.10.36):

Linux的抓取網路資料命令tcpdump

tcpdump是Linux命令列下常用的的一個抓包工具。 tcpdump的命令格式 tcpdump的引數眾多,通過man tcpdump可以檢視tcpdump的詳細說明。 tcpdump [-i

深入淺出-網路七層模型&&網路資料

引言 今天回顧一下--網路七層模型&&網路資料包 網路基本概念 OSI模型 OSI 模型(Open System Interconnection model)是一個由國際標準化組織提出的概念模型,試圖供一個使各種不同的計算機和網路在世界範圍內實現互聯的標準框架。 它將計算機網路體系結

sk buff封裝和解封裝網路資料的過程詳解

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

sk_buff封裝和解封裝網路資料的過程詳解

可以說sk_buff結構體是Linux網路協議棧的核心中的核心,幾乎所有的操作都是圍繞sk_buff這個結構體進行的,它的重要性和BSD的mbuf類似(看過《TCP/IP詳解 卷2》的都知道),那麼sk_buff是什麼呢?      

使用tcpdump+wireshark抓分析網路資料

最近和學弟在除錯一個GPRS通訊模組,需求是通過GPRS模組通過http協議傳送資料到伺服器,但是http協議一直失敗,伺服器返回400,通過查詢http狀態碼得知,http400錯誤是請求無效,因為GPRS模組沒有實現http協議的封裝,需要在TCP協議的基礎上,手動拼裝http格式的報文.所以初步猜測是h

Android網路資料的抓和分析

1. 手機獲得root許可權; 2. push tcpdump到 /; 3. chmod 755 tcpdump; 4. 抓包: adb shell tcpdump -s 0 -w /sdcard/capture.pcap 5. pull資料包到pc,使用wireshark

網路資料收發流程(一):從驅動到協議棧

早就想整理網路資料包收發流程了,一直太懶沒動筆。今天下決心寫了一、硬體環境intel82546:PHY與MAC整合在一起的PCI網絡卡晶片,很強大bcm5461:   PHY晶片,與之對應的MAC是TSECTSEC:      Three Speed Ethernet C

linux網橋--接受資料

 版權宣告:如有需要,可供轉載,但請註明出處:https://blog.csdn.net/City_of_skey/article/details/85254786 目錄 1、netif_receive_skb 2、handle_bridge 3、br_handle_fra

網路資料轉發過程

這篇文章講述了上網時資料包轉發的全過程,下面是電腦和網路裝置連線簡略圖:   以PC1 ping PC3為例講述資料包轉發過程: 1、當PC1 ping PC3時,發現它們的IP不在同一網段,PC1就

python應用系列教程——python使用scapy監聽網路資料、按TCP/IP協議進行解析

全棧工程師開發手冊 (作者:欒鵬) python使用scapy監聽抓取網路資料包。 scapy具有模擬傳送資料包、監聽解析資料包、網際網路協議解析、資料探勘等多種用處。這裡我們只來說一下scapy監聽資料包,並按照不同的協議進行解析。

網路資料型別

型別一-------乙太網幀 EthernetV2幀頭結構為6bytes的源地址+6bytes的目標地址+2Bytes的協 議型別欄位+資料   型別二-----802.3/802.2幀 LLC is defined in ISO/IEC 8802-2:1998 SNAP

替代WinPcap的新型Windows網路資料截獲軟體——NPcap

Npcap介紹 Npcap是致力於採用Microsoft Light-Weight Filter (NDIS 6 LWF)技術和Windows Filtering Platform (NDIS 6 WFP)技術對當前最流行的WinPcap工具包進行改進的一個專案。Npc

網路資料大小計算

1、資料鏈路層對資料幀的長度都有一個限制,也就是鏈路層所能承受的最大資料長度,這個值 稱為最大傳輸單元,即MTU。以乙太網為例,這個值通常是1500位元組。 2、對於IP資料包來講,也有一個長度,在IP包頭中,以16位來描述IP包的長度,也就是說, 一個IP包,最長可能是65535位元組。 3、結合以上兩個概

scapy:網路資料操作

scapy 是具有超強功能的資料包操作工具,不僅具有無數個協議的解碼功能,還可以 傳輸修改後的資料包.scapy的最大特點就是可以執行多種功能。例如:建立網路掃描、資料包轉儲、資料包攻擊時需要利用多個不同的工具,而只要一個scapy就夠了。 Welcome t

有關C#開發抓取、分析網路資料的程式碼段

 using   System;     using   System.Net;     using   System.Net.Sockets;     using   System.Runtime.InteropServices;     using   System.Wi

發現新大陸:一個最簡單的破解SSL加密網路資料的方法

1. 簡介相信能訪問到這篇文章的同行基本上都會用過流行的網路抓包工具WireShark,用它來抓取相應的網路資料包來進行問題分析或者其他你懂的之類的事情。一般來說,我們用WireShark來抓取包進行分析是沒有多大問題的。但這裡有個問題是,如果你碰到的是用SSL/TLS等加密

在已經截獲網路資料的情況下,做更新伺服器端的簡單WEB開發,請進。承諾RMB報酬,謝謝!

本人QQ:529615027  有一個程式,其實就是NP要更新,為了不讓NP更新,我想架設一個旁路伺服器,讓NP去我架設的伺服器更新資料。我截獲了NP更新的資料包。從資料包能看出原來伺服器的IP地址是218.6.139.196(其實IP有多個,更新程式使用的域名應該是np1