Ping
這個應該你們都會用的吧,最主要的就是檢測目標主機是否是可連通。Ping程序實際就是發送一個ICMP回顯請求報文給目的主機,並等待回顯的ICMP應答。而後打印出回顯的報文。Ping不通一個地址,並不必定表示這個IP不存在或者沒有鏈接在網絡上,由於對方主機可能作了限制,好比安裝了防火牆,所以Ping不通並不表示不能使用FTP或者TELNET鏈接。
PING獲得的結果包括字節數、反應時間、以及生存時間。Ping程序經過在ICMP報文數據中存放發送請求的時間來計算返回時間。當應答返回時,根據如今時間減去報文中存放的發送時間就獲得反應時間了。生存時間(TTL),原本就存放在IP數據報的頭部,直接就可以獲取。
上次和Dancefire說天網防火牆的時候,如今不是天網能識別哪些程序在進行網絡鏈接麼,結果試驗用Ping的時候,天網就不知道了,呵呵,反正是沒有警告。那ICMP木馬天網能防麼?
Tracert
一個探測路由的程序,可讓咱們看見IP數據包到達目的地通過的路由。
Tracert利用ICMP數據報和IP數據報頭部中的TTL值。TTL(Time To Live)是一個IP數據報的生存時間,當每一個IP數據報通過路由器的時候都回把TTL值減去1或者減去在路由器中停留的時間,可是大多數數據報在路由器中停留的時間都小於1秒種,所以實際上就是在TTL值減去了1。這樣,TTL值就至關於一個路由器的計數器。
當路由器接收到一個TTL爲0或者1的IP數據報的時候,路由器就再也不轉發這個數據了,而直接丟棄,而且發送一個ICMP「超時」信息給源主機。Tracert程序的關鍵就是這個回顯的ICMP報文的IP報頭的信源地址就是這個路由器的IP地址。同時,若是到達了目的主機,咱們並不能知道,因而,Tracert還同時發送一個UDP信息給目的主機,而且選擇一個很大的值做爲UDP的端口,使主機的任何一個應用程序都不使用這個端口。因此,當達到目的主機的時候,UDP模塊就產生一個「端口不可到達」的錯誤,這樣就能判斷是不是到達目的地了。
有說法是利用ping獲得的TTL值來判斷主機類型,這種辦法能夠大概地用來判斷,有人問爲何通常獲得的都不是標準的TTL值。這個就是由於ICMP數據包走的路由器線路的緣由,因此,用ping 和 tracert 一塊兒來用更容易判斷主機類型(不過並不必定兩次走的路線都同樣,因此,仍是個大概值,不過更接近點,並且主機的默認TTL值是能夠改變的)。
C:\>ping 211.99.199.204
Pinging 211.99.199.204 with 32 bytes of data:
Reply from 211.99.199.204: bytes=32 time=20ms TTL=248
Reply from 211.99.199.204: bytes=32 time〈10ms TTL=248
Reply from 211.99.199.204: bytes=32 time=10ms TTL=248
Reply from 211.99.199.204: bytes=32 time=10ms TTL=248
Ping statistics for 211.99.199.204:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 20ms, Average = 10ms
C:\>tracert 211.99.199.204
Tracing route to 211.99.199.204 over a maximum of 30 hops
1 10 ms 10 ms 20 ms 211.99.57.121
2 10 ms 10 ms 10 ms 202.96.13.1
3 〈10 ms 10 ms 20 ms 202.96.13.62
4 20 ms 10 ms 10 ms 210.77.139.186
5 〈10 ms 10 ms 20 ms 210.77.139.170
6 〈10 ms 〈10 ms 10 ms 211.99.193.154
7 〈10 ms 10 ms 〈10 ms 211.99.199.204
Trace complete.
Ping獲得的TTL=248,通過了7個路由器,減小了7,因此主機的TTL值是255。這樣來判斷吧。
下面是一些主機的默認TTL值。
LINUX Kernel 2.2.x & 2.4.x ICMP 回顯應答的 TTL 字段值爲 64
FreeBSD 4.1, 4.0, 3.4;
Sun Solaris 2.5.1, 2.6, 2.7, 2.8;
OpenBSD 2.6, 2.7,
NetBSD
HP UX 10.20
ICMP 回顯應答的 TTL 字段值爲 255
Windows 95/98/98SE
Windows ME
ICMP 回顯應答的 TTL 字段值爲 32
Windows NT
Windows 2000
ICMP 回顯應答的 TTL 字段值爲 128
03/3/12 23:03 oniontangping和tracert命令詳解
ping只有在安裝了TCP/IP協議之後纔可使用:
ping [-t] [-a] [-n count] [-l length] [-f] [-i ttl] [-v tos] [-r count] [-s count] [-j computer-list] | [-k computer-list] [-w timeout] destination-list
Options:
-t Ping the specified host until stopped.To see statistics and continue - type Control-Break;To stop - type Control-C.
不停的ping地方主機,直到你按下Control-C。
此功能沒有什麼特別的技巧,不過能夠配合其餘參數使用,將在下面提到。
-a Resolve addresses to hostnames.
解析計算機NetBios名。
示例:
C:\>ping -a 192.168.1.21
Pinging iceblood.yofor.com [192.168.1.21] with 32 bytes of data:
Reply from 192.168.1.21: bytes=32 time<10ms TTL=254
Reply from 192.168.1.21: bytes=32 time<10ms TTL=254
Reply from 192.168.1.21: bytes=32 time<10ms TTL=254
Reply from 192.168.1.21: bytes=32 time<10ms TTL=254
Ping statistics for 192.168.1.21:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 0ms, Average = 0ms
從上面就能夠知道IP爲192.168.1.21的計算機NetBios名爲iceblood.yofor.com。
-n count Number of echo requests to send.
發送count指定的Echo數據包數。
在默認狀況下,通常都只發送四個數據包,經過這個命令能夠本身定義發送的個數,對衡量網絡速度頗有幫助,好比我想測試發送50個數據包的返回的平均時間爲多少,最快時間爲多少,最慢時間爲多少就能夠經過如下獲知:
C:\>ping -n 50 202.103.96.68
Pinging 202.103.96.68 with 32 bytes of data:
Reply from 202.103.96.68: bytes=32 time=50ms TTL=241
Reply from 202.103.96.68: bytes=32 time=50ms TTL=241
Reply from 202.103.96.68: bytes=32 time=50ms TTL=241
Request timed out.
………………
Reply from 202.103.96.68: bytes=32 time=50ms TTL=241
Reply from 202.103.96.68: bytes=32 time=50ms TTL=241
Ping statistics for 202.103.96.68:
Packets: Sent = 50, Received = 48, Lost = 2 (4% loss),Approximate round trip times in milli-seconds:
Minimum = 40ms, Maximum = 51ms, Average = 46ms
從以上我就能夠知道在給202.103.96.68發送50個數據包的過程中,返回了48個,其中有兩個因爲未知緣由丟失,這48個數據包當中返回速度最快爲40ms,最慢爲51ms,平均速度爲46ms。
-l size Send buffer size.
定義echo數據包大小。
在默認的狀況下windows的ping發送的數據包大小爲32byt,咱們也能夠本身定義它的大小,但有一個大小的限制,就是最大隻能發送65500byt,也許有人會問爲何要限制到65500byt,由於Windows系列的系統都有一個安全漏洞(也許還包括其餘系統)就是當向對方一次發送的數據包大於或等於65532時,對方就頗有可能擋機,因此微軟公司爲了解決這一安全漏洞因而限制了ping的數據包大小。雖然微軟公司已經作了此限制,但這個參數配合其餘參數之後危害依然很是強大,好比咱們就能夠經過配合-t參數來實現一個帶有攻擊性的命令:(如下介紹帶有危險性,僅用於試驗,請勿輕易施於別人機器上,不然後果自負)
C:\>ping -l 65500 -t 192.168.1.21
Pinging 192.168.1.21 with 65500 bytes of data:
Reply from 192.168.1.21: bytes=65500 time<10ms TTL=254
Reply from 192.168.1.21: bytes=65500 time<10ms TTL=254
………………
這樣它就會不停的向192.168.1.21計算機發送大小爲65500byt的數據包,若是你只有一臺計算機也許沒有什麼效果,但若是有不少計算機那麼就可使對方徹底癱瘓,我曾經就作過這樣的試驗,當我同時使用10臺以上計算機ping一臺Win2000Pro系統的計算機時,不到5分鐘對方的網絡就已經徹底癱瘓,網絡嚴重堵塞,HTTP和FTP服務徹底中止,因而可知威力非同小可。
-f Set Don<|>t Fragment flag in packet.
在數據包中發送「不要分段」標誌。
在通常你所發送的數據包都會經過路由分段再發送給對方,加上此參數之後路由就不會再分段處理。
-i TTL Time To Live.
指定TTL值在對方的系統裏停留的時間。
此參數一樣是幫助你檢查網絡運轉狀況的。
-v TOS Type Of Service.
將「服務類型」字段設置爲 tos 指定的值。
-r count Record route for count hops.
在「記錄路由」字段中記錄傳出和返回數據包的路由。
在通常狀況下你發送的數據包是經過一個個路由纔到達對方的,但究竟是通過了哪些路由呢?經過此參數就能夠設定你想探測通過的路由的個數,不過限制在了9個,也就是說你只能跟蹤到9個路由,若是想探測更多,能夠經過其餘命令實現,我將在之後的文章中給你們講解。如下爲示例:
C:\>ping -n 1 -r 9 202.96.105.101 (發送一個數據包,最多記錄9個路由)
Pinging 202.96.105.101 with 32 bytes of data:
Reply from 202.96.105.101: bytes=32 time=10ms TTL=249
Route: 202.107.208.187 ->
202.107.210.214 ->
61.153.112.70 ->
61.153.112.89 ->
202.96.105.149 ->
202.96.105.97 ->
202.96.105.101 ->
202.96.105.150 ->
61.153.112.90
Ping statistics for 202.96.105.101:
Packets: Sent = 1, Received = 1, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 10ms, Maximum = 10ms, Average = 10ms
從上面我就能夠知道從個人計算機到202.96.105.101一共經過了202.107.208.187 ,202.107.210.214 , 61.153.112.70 , 61.153.112.89 , 202.96.105.149 , 202.96.105.97這幾個路由。
-s count Timestamp for count hops.
指定 count 指定的躍點數的時間戳。
此參數和-r差很少,只是這個參數不記錄數據包返回所通過的路由,最多也只記錄4個。
-j host-list Loose source route along host-list.
利用 computer-list 指定的計算機列表路由數據包。連續計算機能夠被中間網關分隔(路由稀疏源)IP 容許的最大數量爲 9。
-k host-list Strict source route along host-list.
利用 computer-list 指定的計算機列表路由數據包。連續計算機不能被中間網關分隔(路由嚴格源)IP 容許的最大數量爲 9。
-w timeout Timeout in milliseconds to wait for each reply.
指定超時間隔,單位爲毫秒。
此參數沒有什麼其餘技巧。
ping命令的其餘技巧:在通常狀況下還能夠經過ping對方讓對方返回給你的TTL值大小,粗略的判斷目標主機的系統類型是Windows系列仍是UNIX/Linux系列,通常狀況下Windows系列的系統返回的TTL值在100-130之間,而UNIX/Linux系列的系統返回的TTL值在240-255之間,固然TTL的值在對方的主機裏是能夠修改的,Windows系列的系統能夠經過修改註冊表如下鍵值實現:
[HKEY_LOCAL_MACHINE\sys tem\CurrentControlSet\Services\Tcpip\Parameters]
"DefaultTTL"=dword:000000ff
255---FF
128---80
64----40
32----20
在路由器上-c能夠指定發送的包數.
例如:ping -c 10000 x.x.x.x
就會ping 10000個數據包.並統計丟包率.
Tracert命令詳解
該診斷實用程序將包含不一樣生存時間 (TTL) 值的 Internet 控制消息協議 (ICMP) 回顯數據包發送到目標,以決定到達目標採用的路由。要在轉發數據包上的 TTL 以前至少遞減 1,必需路徑上的每一個路由器,因此 TTL 是有效的躍點計數。數據包上的 TTL 到達 0 時,路由器應該將「ICMP 已超時」的消息發送回源系統。Tracert 先發送 TTL 爲 1 的回顯數據包,並在隨後的每次發送過程將 TTL 遞增 1,直到目標響應或 TTL 達到最大值,從而肯定路由。路由經過檢查中級路由器發送回的「ICMP 已超時」的消息來肯定路由。不過,有些路由器悄悄地下傳包含過時 TTL 值的數據包,而 tracert 看不到。
tracert [-d] [-h maximum_hops] [-j computer-list] [-w timeout] target_name
使用 tracert 跟蹤網絡鏈接
Tracert(跟蹤路由)是路由跟蹤實用程序,用於肯定 IP 數據報訪問目標所採起的路徑。Tracert 命令用 IP 生存時間 (TTL) 字段和 ICMP 錯誤消息來肯定從一個主機到網絡上其它主機的路由。
Tracert 工做原理
經過向目標發送不一樣 IP 生存時間 (TTL) 值的「Internet 控制消息協議 (ICMP)」迴應數據包,Tracert 診斷程序肯定到目標所採起的路由。要求路徑上的每一個路由器在轉發數據包以前至少將數據包上的 TTL 遞減 1。數據包上的 TTL 減爲 0 時,路由器應該將「ICMP 已超時」的消息發回源系統。
Tracert 先發送 TTL 爲 1 的迴應數據包,並在隨後的每次發送過程將 TTL 遞增 1,直到目標響應或 TTL 達到最大值,從而肯定路由。經過檢查中間路由器發回的「ICMP 已超時」的消息肯定路由。某些路由器不經詢問直接丟棄 TTL 過時的數據包,這在 Tracert 實用程序中看不到。
Tracert 命令按順序打印出返回「ICMP 已超時」消息的路徑中的近端路由器接口列表。若是使用 -d 選項,則 Tracert 實用程序不在每一個 IP 地址上查詢 DNS。 ios
在下例中,數據包必須經過兩個路由器(10.0.0.1 和 192.168.0.1)才能到達主機 172.16.0.99。主機的默認網關是 10.0.0.1,192.168.0.0 網絡上的路由器的 IP 地址是 192.168.0.1。
C:\>tracert 172.16.0.99 -d
Tracing route to 172.16.0.99 over a maximum of 30 hops
1 2s 3s 2s 10,0.0,1
2 75 ms 83 ms 88 ms 192.168.0.1
3 73 ms 79 ms 93 ms 172.16.0.99
Trace complete.
用 tracert 解決問題
可使用 tracert 命令肯定數據包在網絡上的中止位置。下例中,默認網關肯定 192.168.10.99 主機沒有有效路徑。這多是路由器配置的問題,或者是 192.168.10.0 網絡不存在(錯誤的 IP 地址)。
C:\>tracert 192.168.10.99
Tracing route to 192.168.10.99 over a maximum of 30 hops
1 10.0.0.1 reports:Destination net unreachable.
Trace complete.
Tracert 實用程序對於解決大網絡問題很是有用,此時能夠採起幾條路徑到達同一個點。
Tracert 命令行選項
Tracert 命令支持多種選項,以下表所示。
tracert [-d] [-h maximum_hops] [-j host-list] [-w timeout] target_name
-d 指定不將 IP 地址解析到主機名稱。
-h maximum_hops 指定躍點數以跟蹤到稱爲 target_name 的主機的路由。
-j host-list 指定 Tracert 實用程序數據包所採用路徑中的路由器接口列表。
-w timeout 等待 timeout 爲每次回覆所指定的毫秒數。
target_name 目標主機的名稱或 IP 地址。
使用 tracert 命令跟蹤路徑
打開 命令提示符,而後鍵入:
tracert host_name
或者鍵入 tracert ip_address
其中 host_name 或 ip_address 分別是遠程計算機的主機名或 IP 地址。
例如,要跟蹤從該計算機到 www.21andy.com 的鏈接路由,請在命令提示行鍵入:
tracert www.21andy.com
注意 要打開「命令提示符」,請單擊「開始」,指向「程序」、「附件」,而後單擊「命令提示符」。 tracert 命令跟蹤 TCP/IP 數據包從該計算機到其它遠程計算機所採用的路徑。tracert 命令使用 ICMP 響應請求並答覆消息(和 ping 命令相似),產生關於通過的每一個路由器及每一個躍點的往返時間 (RTT) 的命令行報告輸出。 若是 tracert 失敗,可使用命令輸出來幫助肯定哪一個中介路由器轉發失敗或耗時太多。 參數 /d 指定不將地址解析爲計算機名。 -h maximum_hops 指定搜索目標的最大躍點數。 -j computer-list 指定沿 computer-list 的稀疏源路由。 -w timeout 每次應答等待 timeout 指定的微秒數。 target_name 目標主機的名稱或 IP 地址。