iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 27
0

https://blog.gtwang.org/linux/windows-linux-ping-command-tutorial/

ping
發送 ICMP ECHO_REQUEST的封包,檢查自己與特定設備之間的網路是否暢通,並同時測量網路連線的來回通訊延遲時間(round-trip delay time),通常如果網路出問題時,會使用 ping 這個指令來做初步的檢查。

先來了解來回通訊延遲時間(round-trip delay time)

所以要先了解什麼是網路延遲
https://blog.gtwang.org/web-development/network-lantency-and-bandwidth/

會影響網路速度的兩個重要因素就是延遲(Latency)與頻寬(Bandwidth):
延遲(Latency):一個封包從來源端送出後,到目的端接收到這個封包,中間所花的時間。單位ms(毫秒,千分之一秒)
頻寬(Bandwidth):傳輸媒介的最大吞吐量(throughput)。速率單位Mbps。
bps代表bit per second(位元/秒) ,M代表百萬bit,所以Mbps是百萬位元/秒

網路延遲(Latency)的組成元素:
在網路上有許多路由器專門負責遞送網路封包,這樣的路由器通常會有下面這些會造成網路延遲的因素:

propagation delay:封包在網路線上傳輸所花費的時間,與網路線上電子訊號跑的速度有關,這個時間就是距離除以訊號傳送速度所得到的數值。假設傳送距離為d,傳輸的速率為s,那麼propagation delay就是 d/s。

transmission delay:網路卡將資料傳送到網路線上(或從網路線上接收)所花的時間,與網路設備的傳送速度有關(如高速乙太網路傳送速度為100Mbps)。假設頻寬為L(bits),數據傳輸速率為 R(bits/sec),這樣產生的transmission delay 就是L/R。

nodal processing delay:路由器處理封包表頭(packet header)、檢查位元資料錯誤與尋找配送路徑等所花費的時間。

queuing delay:路由器因為某些因素無法立刻將封包傳送到網路上,造成封包暫存在佇列(queue)中等待的時間。

大概了解這四種延遲後,那什麼是來回通訊延遲時間(round-trip delay time)?
簡寫:RTT。就是不只是發送端到接收端的網路延遲,也有接收端到發送端的網路延遲,也就是大約 2 * Propagation delay,為甚麼只剩Propagation delay?,因為其他的delay都因為比Propagation delay的時間小很多,所以都被當成0而忽略不記。
有關為什麼RTT大概等於2 * Propagation delay:
https://www.youtube.com/watch?v=8PFFBMdyhm4

接著了解什麼是ICMP
https://www.youtube.com/watch?v=M5h8BgZVPNM&t=1s
網際網路控制訊息協定(英語:Internet Control Message Protocol,縮寫:ICMP)
簡單來講應該就是ip(Internet Protocol,OSI第三層)是只有管封包交換,也就是記錄來源和目的的地址,所以不保證任何封包均能送達目的地,也不保證所有封包均按照正確的順序無重複地到達,所以需要TCP(Transmission Control Protocol,OSI第四層),那如果ip封包有錯誤時,使用者要知道ip封包哪裡錯誤,就需要ICMP(OSI第三層)

這邊舉例子:找不到目的地的封包要怎麼丟棄或time-to-live變成0,這些都是ICMP的事
https://ithelp.ithome.com.tw/upload/images/20181109/20111994Vsi4Zj86wo.png

ICMP有兩部分
1 error-reporting messages:回報錯誤
2 query messages:檢查狀態
ICMP的messages都會傳給sender,而不會給reciver
https://ithelp.ithome.com.tw/upload/images/20181109/20111994l9M1Zya4SF.png

ICMP的錯誤和檢查類型,由type的值分類:
https://ithelp.ithome.com.tw/upload/images/20181109/20111994qwuVly4SB3.png

如圖這就是ICMP的header,ICMP的header是從ip的第160位元開始,所以應該就是ip的Options(其他參數)和Padding(補齊項目)的部分,對照前面的表格,像是如果type是3那就是Destination unreachable
https://ithelp.ithome.com.tw/upload/images/20181109/20111994bNLNR1pIhL.png

接著影片就詳細介紹error-reporting messages和query messages的詳細項目,這邊就先跳過。
接下來練習ping指令:
https://www.youtube.com/watch?v=0LzL4u5fmJ4
http://linux.vbird.org/linux_server/0140networkcommand.php#ping
Ping + 網址
離開ping-->ctrl+c
https://ithelp.ithome.com.tw/upload/images/20181109/2011199491vlp4swac.png

TTL可以判斷作業系統
Linux 64
Windows 128
Unix 255
像這邊從虛擬機器ping windows 的ttl就是127,因為從windows要發封包給虛擬機器要經過一個路由器,所以ttl是128-1=127,可以更改ttl的預設值,如果不想這麼簡單就讓別人判斷電腦的作業系統
https://ithelp.ithome.com.tw/upload/images/20181109/201119948NrgP2zqiv.png

可以測試mtu,先修改mtu,然後ping限定的封包大小要是mtu-28才能通過路由器,28是因為IP封包表頭 (不含 options) 就已經佔用了20bytes,再加上ICMP的表頭有8bytes
https://ithelp.ithome.com.tw/upload/images/20181109/20111994rhyLRrRibi.png
https://ithelp.ithome.com.tw/upload/images/20181109/20111994WRih0PtfNH.png


上一篇
AWS ELB
下一篇
Linux Questions
系列文
Linux學習30

尚未有邦友留言

立即登入留言