iT邦幫忙

2025 iThome 鐵人賽

DAY 8
0
IT 管理

從零開始的網際網路隨筆系列 第 8

Day07-ping 通了又能怎?

  • 分享至 

  • xImage
  •  

Day06-簡單的 GNS3 實作 我們有做兩個實作,那時我有說,如果可以成功去 ping 到網站或是機器的話,就表示我們的網路連線沒問題。而今天我們就來解釋為甚麼?

在開始之前不可避免講到網路模型,具體如下

layer description examples
應用層(application layer) 支援不同的網路應用,同時應用層協定會控制網路應用==訊息的發送和響應== HTTP, IMAP, SMTP, DNS...
傳輸層(transport layer) 透過 IP 和 port 實現程序間的資料傳輸(process-process data transfer) TCP, UDP...
網路層(network layer) "IP 資料單元"(datagram)從來源 IP 位址到目標 IP 位址的傳輸 IP, ICMP...
連結層(link layer) 不同網路裝置的資料傳輸,用 MAC 位址去實現 乙太網卡, 802.11 (WiFi), VLAN...
實體層(physical layer) 將封包轉換成幀(frame)後,網卡會把資料轉換成訊號(signal)傳輸到網線 光纖網線、乙太網線...

資料參考此影片
當然實際如TCP/IP 網路模型會把連階層和實體層合併成"網路存取層",而OSI網路模型則會把應用層再細分成"應用層"、"表達層(presentation layer)"和"會議層(session layer)"。

補充: 層號與 OSI 網路模型的表格

層數 層名
7 應用層(Application layer)
6 表達層(Presentation layer)
5 會議層(Session layer)
4 傳輸層(Transport layer)
3 網路層(Network layer)
2 鏈結層(Link layer)
1 實體層(Physical layer)

今天的主角是 ICMP 的協定,在網路層(L3,第三層)運作。而 ping 這個指令會對網上的機器或是架設網站的機器傳送 ICMP 測試封包來確認本地端和伺服器端的連線是否有問題。具體的圖示請看下圖
ICMP demo img
上圖想要表達的是,今天使用 ping 時,本地端(PC)會傳送 ICMP 封包(ICMP request)給伺服器(server),如果
伺服器有收到 ICMP request 封包,則會返回一個 ICMP 封包(ICMP reply)(當然前提是我們的封包沒有被防火牆或者伺服器本身的規則給擋掉),最後如果本地端有收到 ICMP 封包則會在終端機上面顯示對應的畫面,如下圖
pc ping

當然也會有不一樣的情況,詳細請看下圖
ICMP type&code
上圖整理了 ICMP 常見情況的 type number 和 code。

延續之前的範例我們來抓包,如下圖
ICMP gns3
然後我們去 ping www.nisra.net 並擷取封包,就可以得到如這樣的 資料
之後可以在 wireshark 上方的 filter 填 ICMP 以顯示特定的內容。如下圖
wireshark icmp filter capture
如之前整理 ICMP 的表格,封包分析打開 ICMP 後果然會看到對應的 type number 和 code ,網路通暢的時候設備間會傳 echo request (type 8, code 0) 和 echo reply (type 0, code 0) 如下圖兩張
echo request
echo reply

總結

今天我們使用了 ping 指令去查看裝置和伺服器是否有連線問題,而我們透過抓網路封包得知,用 ping 時裝置之間會傳送 ICMP 封包,而本地裝置會根據回傳的 ICMP 封包的參數(type 和 code)得知是否有網路連線的問題。


上一篇
Day06-簡單的 GNS3 實作
下一篇
Day08-明文被抓怎麼不找找自己的問題(上)
系列文
從零開始的網際網路隨筆11
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言