
ping命令
Ping是一種網(wǎng)絡(luò)工具,用于測試主機(jī)之間的連通性。它基于ICMP(Internet Control Message Protocol,互聯(lián)網(wǎng)控制報文協(xié)議)來發(fā)送探測包并接收響應(yīng)。
Ping工具發(fā)送一個ICMP Echo Request(回顯請求)消息到目標(biāo)主機(jī),目標(biāo)主機(jī)收到請求后會返回一個ICMP Echo Reply(回顯回復(fù))消息作為響應(yīng)。通過比較發(fā)送和接收的消息,可以確定主機(jī)之間的連通性和延遲。
ICMP協(xié)議是在網(wǎng)絡(luò)層(OSI模型中的第三層)工作的,不依賴于特定的端口號。因此,Ping不使用特定的端口來發(fā)送和接收消息。它使用ICMP協(xié)議的類型和代碼字段來標(biāo)識和處理不同類型的消息。
需要注意的是,Ping工具通常在操作系統(tǒng)的網(wǎng)絡(luò)協(xié)議棧中實現(xiàn),而不是通過特定的端口進(jìn)行通信。因此,Ping不會占用或使用特定的端口號。
ping命令用法
文檔
ping -h
Usage
ping [options] <destination>
Options:
<destination> dns name or ip address
-a use audible ping
-A use adaptive ping
-B sticky source address
-c <count> stop after <count> replies
-D print timestamps
-d use SO_DEBUG socket option
-f flood ping
-h print help and exit
-I <interface> either interface name or address
-i <interval> seconds between sending each packet
-L suppress loopback of multicast packets
-l <preload> send <preload> number of packages while waiting replies
-m <mark> tag the packets going out
-M <pmtud opt> define mtu discovery, can be one of <do|dont|want>
-n no dns name resolution
-O report outstanding replies
-p <pattern> contents of padding byte
-q quiet output
-Q <tclass> use quality of service <tclass> bits
-s <size> use <size> as number of data bytes to be sent
-S <size> use <size> as SO_SNDBUF socket option value
-t <ttl> define time to live
-U print user-to-user latency
-v verbose output
-V print version and exit
-w <deadline> reply wait <deadline> in seconds
-W <timeout> time to wait for response
IPv4 options:
-4 use IPv4
-b allow pinging broadcast
-R record route
-T <timestamp> define timestamp, can be one of <tsonly|tsandaddr|tsprespec>
IPv6 options:
-6 use IPv6
-F <flowlabel> define flow label, default is random
-N <nodeinfo opt> use icmp6 node info query, try <help> as argument
For more details see ping(8).
翻譯
用中文翻譯如下:
用法
ping [選項] <目標(biāo)>
選項:
<目標(biāo)> DNS名稱或IP地址
-a 使用可聽的ping
-A 使用自適應(yīng)ping
-B 使用固定源地址
-c <次數(shù)> 在收到 <次數(shù)> 個回復(fù)后停止
-D 打印時間戳
-d 使用SO_DEBUG套接字選項
-f 洪水式ping
-h 打印幫助并退出
-I <接口> 接口名稱或地址
-i <間隔> 發(fā)送每個數(shù)據(jù)包之間的間隔時間(秒)
-L 禁止回送多播數(shù)據(jù)包
-l <預(yù)加載> 在等待回復(fù)時發(fā)送 <預(yù)加載> 個數(shù)據(jù)包
-m <標(biāo)記> 標(biāo)記發(fā)送的數(shù)據(jù)包
-M <pmtud選項> 定義MTU發(fā)現(xiàn),可以是<do|dont|want>之一
-n 不進(jìn)行DNS名稱解析
-O 報告未完成的回復(fù)
-p <模式> 填充字節(jié)的內(nèi)容
-q 靜默輸出
-Q <tclass> 使用服務(wù)質(zhì)量<tclass>位
-s <大小> 使用 <大小> 作為要發(fā)送的數(shù)據(jù)字節(jié)數(shù)
-S <大小> 使用 <大小> 作為SO_SNDBUF套接字選項的值
-t <ttl> 定義生存時間
-U 打印用戶到用戶的延遲
-v 詳細(xì)輸出
-V 打印版本并退出
-w <截止時間> 等待回復(fù)的截止時間(秒)
-W <超時時間> 等待響應(yīng)的時間
IPv4選項:
-4 使用IPv4
-b 允許ping廣播
-R 記錄路由
-T <時間戳> 定義時間戳,可以是<tsonly|tsandaddr|tsprespec>之一
IPv6選項:
-6 使用IPv6
-F <流標(biāo)簽> 定義流標(biāo)簽,默認(rèn)為隨機(jī)值
-N <nodeinfo選項> 使用icmp6節(jié)點信息查詢,嘗試使用<help>作為參數(shù)
更多詳細(xì)信息請參見ping(8)。
示例
下面是對每個參數(shù)的含義和示例的解釋:
- <destination>:目標(biāo)主機(jī)的DNS名稱或IP地址。
示例:ping www.example.com
或 ping 192.168.0.1
- -a:使用可聽的ping。當(dāng)發(fā)送ping請求時,會發(fā)出聲音提示。
示例:ping -a www.example.com
應(yīng)該會有聲音
- -A:使用自適應(yīng)ping。根據(jù)網(wǎng)絡(luò)狀況自動調(diào)整ping的間隔時間。(無延時ping)
示例:ping -A www.example.com
ping得很快,瞬間就ping了幾千下:
- -B:使用固定源地址。在多個網(wǎng)絡(luò)接口上進(jìn)行ping時,指定使用特定的源地址。(不知道怎么玩)
示例:ping -B 192.168.0.2 www.example.com
不知道咋玩:
20230817 解釋:
解釋:
在一個有多個網(wǎng)絡(luò)接口(即多個IP地址)的系統(tǒng)中,使用ping
命令時,系統(tǒng)通常會自動選擇源IP地址。選擇的原則一般是與目標(biāo)IP地址最接近的那個源IP地址。但有時,我們可能希望指定特定的源IP地址發(fā)送ICMP請求。
這就需要用到ping
命令的-B
參數(shù)。-B
參數(shù)允許你設(shè)置一個固定的源IP地址,也就是說,無論目標(biāo)IP地址是什么,ping
命令都會從這個設(shè)定的源IP地址發(fā)送出去。
例如,如果你的系統(tǒng)有兩個網(wǎng)絡(luò)接口,其IP地址分別為192.168.1.100和192.168.2.100,你可以通過ping -B 192.168.1.100 target_ip
命令來指定從192.168.1.100這個地址發(fā)送ICMP請求。
這樣做的一個主要原因是,在某些網(wǎng)絡(luò)配置或者故障排查情況下,你可能需要從特定的網(wǎng)絡(luò)接口進(jìn)行測試,而不是任由系統(tǒng)自動選擇。
但還是ping不通是啥原因?
- -c <count>:在收到指定數(shù)量的回復(fù)后停止ping。
示例:ping -c 5 www.example.com
- -D:打印時間戳。在每個ping回復(fù)中打印時間戳。
示例:ping -D www.example.com
- -d:使用SO_DEBUG套接字選項。啟用調(diào)試模式,打印更多調(diào)試信息。
示例:ping -d www.example.com
- -f:洪水式ping。連續(xù)發(fā)送ping請求,不等待回復(fù)。
示例:ping -f www.example.com
- -h:打印幫助并退出。顯示ping命令的幫助信息。
示例:ping -h
略
- -I <interface>:指定要使用的網(wǎng)絡(luò)接口名稱或地址。
示例:ping -I eth0 www.example.com
- -i <interval>:指定發(fā)送每個數(shù)據(jù)包之間的間隔時間(秒)。
示例:ping -i 1 www.example.com
- -L:禁止回送多播數(shù)據(jù)包。不將多播數(shù)據(jù)包回送到本地回環(huán)接口。(搞不太明白咋玩)
示例:ping -L www.example.com
什么是“禁止回送多播數(shù)據(jù)包。不將多播數(shù)據(jù)包回送到本地回環(huán)接口”?
-L
選項是用于禁止將多播數(shù)據(jù)包回送到本地回環(huán)接口的。在網(wǎng)絡(luò)中,多播是一種將數(shù)據(jù)包從一個源發(fā)送到多個目的地的通信方式。而本地回環(huán)接口是一個虛擬的網(wǎng)絡(luò)接口,用于將數(shù)據(jù)包從一個進(jìn)程發(fā)送到同一臺主機(jī)上的另一個進(jìn)程,而不經(jīng)過網(wǎng)絡(luò)。
當(dāng)使用-L
選項時,ping命令將禁止將多播數(shù)據(jù)包回送到本地回環(huán)接口。這意味著,如果目標(biāo)地址是一個多播地址,并且本地主機(jī)也是該多播組的成員,那么ping命令將不會將多播數(shù)據(jù)包回送給本地回環(huán)接口。這樣可以避免在本地主機(jī)上接收到自己發(fā)送的多播數(shù)據(jù)包,從而避免產(chǎn)生冗余的網(wǎng)絡(luò)流量和處理開銷。
需要注意的是,-L
選項只在目標(biāo)地址是多播地址且本地主機(jī)是該多播組的成員時才會生效。對于其他類型的目標(biāo)地址,該選項不會產(chǎn)生任何影響。
- -l <preload>:在等待回復(fù)時發(fā)送指定數(shù)量的數(shù)據(jù)包。
示例:ping -l 10 www.example.com
“在等待回復(fù)時發(fā)送指定數(shù)量的數(shù)據(jù)包”有什么用?
-l <preload>
選項用于在等待回復(fù)時發(fā)送指定數(shù)量的數(shù)據(jù)包。preload參數(shù)指定了在等待回復(fù)期間要發(fā)送的數(shù)據(jù)包數(shù)量。
這個選項的作用是在等待每個ping回復(fù)時,提前發(fā)送多個數(shù)據(jù)包。這樣可以增加網(wǎng)絡(luò)負(fù)載,以便更好地測試網(wǎng)絡(luò)的性能和穩(wěn)定性。通過發(fā)送多個數(shù)據(jù)包,可以更好地模擬實際網(wǎng)絡(luò)中的流量情況,并更全面地評估網(wǎng)絡(luò)的響應(yīng)能力。
使用-l
選項時,需要注意合理設(shè)置preload參數(shù)的值。如果設(shè)置得太高,可能會導(dǎo)致網(wǎng)絡(luò)擁塞或目標(biāo)主機(jī)無法及時處理所有的數(shù)據(jù)包。因此,建議根據(jù)網(wǎng)絡(luò)環(huán)境和目標(biāo)主機(jī)的處理能力來選擇合適的preload值,以確保測試的準(zhǔn)確性和可靠性。
- -m <mark>:標(biāo)記發(fā)送的數(shù)據(jù)包??梢杂糜跇?biāo)識特定的數(shù)據(jù)包流。(后面未詳細(xì)研究和測試)
示例:ping -m 1234 www.example.com
- -M <pmtud opt>:定義MTU發(fā)現(xiàn)的選項,可以是do、dont或want之一。
示例:ping -M want www.example.com
- -n:不進(jìn)行DNS名稱解析。直接使用IP地址進(jìn)行ping。
示例:ping -n 192.168.0.1
- -O:報告未完成的回復(fù)。顯示未收到回復(fù)的ping請求。
示例:ping -O www.example.com
- -p <pattern>:填充字節(jié)的內(nèi)容。指定填充數(shù)據(jù)包的內(nèi)容。
示例:ping -p ABCD www.example.com
- -q:靜默輸出。只顯示最終結(jié)果,不顯示詳細(xì)信息。
示例:ping -q www.example.com
- -Q <tclass>:使用指定的服務(wù)質(zhì)量(QoS)位。
示例:ping -Q 5 www.example.com
- -s <size>:指定要發(fā)送的數(shù)據(jù)字節(jié)數(shù)。
示例:ping -s 100 www.example.com
- -S <size>:指定SO_SNDBUF套接字選項的值。
示例:ping -S 8192 www.example.com
- -t <ttl>:定義生存時間(TTL)。指定數(shù)據(jù)包在網(wǎng)絡(luò)上的最大生存時間。
示例:ping -t 64 www.example.com
- -U:打印用戶到用戶的延遲。顯示用戶之間的延遲時間。
示例:ping -U www.example.com
- -v:詳細(xì)輸出。顯示更多詳細(xì)信息。
示例:ping -v www.example.com
- -V:打印版本并退出。顯示ping命令的版本信息。
示例:ping -V
- -w <deadline>:等待回復(fù)的截止時間(秒)。如果在指定的時間內(nèi)沒有收到回復(fù),則停止ping。
示例:ping -w 5 www.example.com
- -W <timeout>:等待響應(yīng)的時間(秒)。如果在指定的時間內(nèi)沒有收到回復(fù),則認(rèn)為請求超時。
示例:ping -W 2 www.example.com
- -4:使用IPv4。強(qiáng)制使用IPv4協(xié)議進(jìn)行ping。
示例:ping -4 www.example.com
- -b:允許ping廣播。允許向廣播地址發(fā)送ping請求。
示例:ping -b 192.168.0.255
,ping -b 192.168.1.255
ping廣播存在的問題
使用ping -b
命令去ping廣播地址和單獨ping網(wǎng)段下的每一個IP地址,主要有以下區(qū)別:
-
工作方式:當(dāng)你使用
ping -b
去ping一個廣播地址時,你在網(wǎng)絡(luò)上發(fā)送了一個包,所有在該網(wǎng)絡(luò)中的設(shè)備都會收到并響應(yīng)這個包。而當(dāng)你逐一ping網(wǎng)段下的每個IP地址時,你是向特定的IP地址發(fā)送請求,并等待其回應(yīng)。 -
效率:如果你想要檢查網(wǎng)絡(luò)中所有設(shè)備的連通性,使用
ping -b
會更有效率,因為你只需要發(fā)送一個包就可以了。但是,如果你只關(guān)心特定的幾個設(shè)備,那么直接ping這些設(shè)備的IP地址可能更好。 -
響應(yīng)結(jié)果:通過ping廣播地址,你可以快速地看到哪些設(shè)備在線,但是可能無法確定沒有響應(yīng)的設(shè)備是處于關(guān)閉狀態(tài)還是由于配置問題不響應(yīng)廣播ping。而逐一ping各個IP地址可以得到每個地址的具體響應(yīng)情況。
-
安全性:對于某些網(wǎng)絡(luò)設(shè)備來說,由于安全考慮,可能被配置為不響應(yīng)廣播ping,但仍然會響應(yīng)針對其IP地址的單獨ping。
-
網(wǎng)絡(luò)負(fù)載:頻繁使用廣播ping可能會增加網(wǎng)絡(luò)負(fù)載,因為所有設(shè)備都會收到請求并發(fā)出響應(yīng)。而單獨ping每個IP地址則只會影響到特定設(shè)備。
使用廣播ping時可能會存在很多設(shè)備沒有響應(yīng)的清空,可能的原因是這些設(shè)備被配置為不響應(yīng)廣播請求。但是直接用ping命令還是可以ping到的。所以感覺這個ping -b有點雞肋?
- -R:記錄路由。在ping請求中記錄數(shù)據(jù)包的路由路徑。
示例:ping -R www.example.com
- -T <timestamp>:定義時間戳的類型,可以是tsonly、tsandaddr或tsprespec之一。
示例:ping -T tsandaddr www.example.com
- -6:使用IPv6。強(qiáng)制使用IPv6協(xié)議進(jìn)行ping。
示例:ping -6 www.example.com
- -F <flowlabel>:定義流標(biāo)簽,默認(rèn)為隨機(jī)值。
示例:ping -F 1234 www.example.com
- -N <nodeinfo opt>:使用icmp6節(jié)點信息查詢,嘗試使用help作為參數(shù)。
示例:ping -N help www.example.com
ping結(jié)果解讀
成功1
root@sx-virtual-machine:/userdata/testOtherPrj/test# ping 192.168.1.1
PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.
64 bytes from 192.168.1.1: icmp_seq=1 ttl=64 time=0.545 ms
64 bytes from 192.168.1.1: icmp_seq=2 ttl=64 time=0.720 ms
64 bytes from 192.168.1.1: icmp_seq=3 ttl=64 time=0.546 ms
^C
--- 192.168.1.1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2037ms
rtt min/avg/max/mdev = 0.545/0.603/0.720/0.082 ms
root@sx-virtual-machine:/userdata/testOtherPrj/test#
以下是對每個部分的含義進(jìn)行解釋:
-
PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.
:表示正在對IP地址為192.168.1.1的主機(jī)進(jìn)行ping測試,發(fā)送的數(shù)據(jù)包大小為56字節(jié)(包括IP頭部和ICMP頭部),實際傳輸?shù)臄?shù)據(jù)大小為84字節(jié)。 -
64 bytes from 192.168.1.1: icmp_seq=1 ttl=64 time=0.545 ms
:表示收到來自192.168.1.1主機(jī)的回復(fù),數(shù)據(jù)包大小為64字節(jié),icmp_seq表示ICMP序列號,ttl表示生存時間(Time to Live),time表示往返時間(Round Trip Time)。 -
^C
:表示用戶通過按下Ctrl+C鍵來終止ping命令。 -
--- 192.168.1.1 ping statistics ---
:表示ping統(tǒng)計信息的開始。 -
3 packets transmitted, 3 received, 0% packet loss, time 2037ms
:表示發(fā)送了3個數(shù)據(jù)包,收到了3個回復(fù),丟包率為0%,總共花費了2037毫秒的時間。 -
rtt min/avg/max/mdev = 0.545/0.603/0.720/0.082 ms
:表示往返時間的統(tǒng)計信息,其中min表示最小往返時間,avg表示平均往返時間,max表示最大往返時間,mdev表示往返時間的標(biāo)準(zhǔn)差。
失敗1
root@sx-virtual-machine:/userdata/testOtherPrj/test#
root@sx-virtual-machine:/userdata/testOtherPrj/test# ping 192.168.1.141
PING 192.168.1.141 (192.168.1.141) 56(84) bytes of data.
From 192.168.1.140 icmp_seq=1 Destination Host Unreachable
From 192.168.1.140 icmp_seq=2 Destination Host Unreachable
-
From 192.168.1.140 icmp_seq=1 Destination Host Unreachable
:表示從IP地址為192.168.1.140的主機(jī)發(fā)送的ping請求未能到達(dá)目標(biāo)主機(jī)(192.168.1.141),因為目標(biāo)主機(jī)不可達(dá)(Destination Host Unreachable)。這可能是由于網(wǎng)絡(luò)配置問題、目標(biāo)主機(jī)關(guān)閉或防火墻阻止了ping請求等原因?qū)е碌摹?/li>
解讀一下:TTL(Time to Live)數(shù)據(jù)包生存時間
TTL(Time to Live)字段是IP數(shù)據(jù)包頭部的一個字段,用于限制數(shù)據(jù)包在網(wǎng)絡(luò)中的生存時間。每經(jīng)過一個路由器,TTL值就會減少1。當(dāng)TTL值減少到0時,路由器會丟棄該數(shù)據(jù)包并發(fā)送一個ICMP時間超過(Time Exceeded)消息給源主機(jī)。
在示例中,TTL值為64,這是因為在大多數(shù)操作系統(tǒng)中,初始的TTL值通常設(shè)置為64。當(dāng)數(shù)據(jù)包經(jīng)過一個路由器時,TTL值會減少1,因此在回復(fù)中顯示的TTL值也是64。這并不意味著所有的網(wǎng)絡(luò)中的TTL值都是64,實際上,TTL值可能因網(wǎng)絡(luò)配置而有所不同。文章來源:http://www.zghlxwxcb.cn/news/detail-766547.html
TTL的主要目的是防止數(shù)據(jù)包在網(wǎng)絡(luò)中無限循環(huán),確保數(shù)據(jù)包能夠在合理的時間內(nèi)到達(dá)目的地或被丟棄。文章來源地址http://www.zghlxwxcb.cn/news/detail-766547.html
20230724 安裝ping命令
# ubuntu
apt-get update
apt-get install -y iputils-ping
到了這里,關(guān)于linux ping命令原理與用法(ping指令)ICMP(Internet Control Message Protocol,互聯(lián)網(wǎng)控制報文協(xié)議)TTL(Time to Live)數(shù)據(jù)包生存時間的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!