写给非网工的CCNA教程(3)聊聊ping命令后的原理
? ? 在我們工作中,相信大家都有接觸并使用過ping命令,無論你是開發、測試、運維、網絡、安全哪個職位。
? ? 當你想要知道從本地到目標設備/系統網絡是否通暢時,這時候ping命令就派上用場了。而且ping命令除了windows系統、linux系統外,其他的網絡設備,比如交換機、路由器、防火墻、負載均衡等等都支持。
?
1 ping命令調用ICMP協議
? ? 那ping命令后面的原理你知道嗎?在本地敲入ping命令后,發生了些什么,然后就知道到目標設備/系統網絡是否通暢?
? ? 其實在我們本地(比如windows,ip地址為10.74.97.116)敲入ping 10.75.97.125后,本地系統會發送一個ICMP數據包到目標設備10.74.97.125。如果目標設備收到以后就會回復此數據包,本地收到回復的數據包后,就知道到目標設備網絡是通暢的。如果在一段時間內沒有收到回復,說明網絡不通或者目標設備沒有開機等等一系列問題。
?
2 ICMP協議與OSI模型
? ? 那這個ICMP數據包是個什么鬼?其實這就得說道我們的TCP/IP協議族中的另一個協議了--ICMP協議,如下圖所示,ICMP跟上文我們講的ARP協議一樣,位于OSI模型的第三層--網絡層。
? ? 不過呢,我們的ARP協議是直接封裝在底層網絡(以太網)之上的,如下圖所示。
? ? 但我們的ICMP協議,可不是直接封裝在底層網絡之上, 而是在底層網絡之上加了一層IP層,然后封裝在IP層之上。IP層對應了TCP/IP協議中的一個非常重要的協議--IP協議,IP協議跟ARP、ICMP協議一樣,也是位于OSI模型的網絡層。關于IP協議和ICMP協議的字段內容如下圖所示。
?
3 IP的報頭
? ? 從上圖我們可以看到IP報頭的字段,不難看出IP的頭部還是比較復雜的,而且長度不固定,因為IP頭部包含了固定的20個字節和0--40個字節的options,所以說IP頭部的長度范圍是20--60字節。
? ? 我們終端關注IP報頭的以下幾個部分,余下的非網工可以不必掌握。
? (1)Version:IP協議的版本,本系列教程中的IP協議都指IPv4協議,還有一個IPv6協議,不過它的頭部可比IPv4頭部簡單多了;
? (2)Header Length:IPv4頭部長度,因IPv4頭部長度不固定,需要一個字段指明頭部的長度,該值要乘4,才是頭部長度,字節為單位;
? (3)Total Length:整個數據包的長度,包括IPv4的可變頭部和載荷部分;
? (4)Time to live:原來表示數據包生存周期,現在每當數據包經過一臺路由器(或其他三層設備),該值減一,初始值有發送方控制;
? (5)Protocol:因好多協議作為載荷被封裝在IPv4協議里,需要一個字段區分這些不同的協議,本例中的1表示ICMP,如果是17則表示UDP,6表示TCP;
? (6)Header Checksum:頭部檢驗和,數據如果被篡改,可以通過此字段看出來,具體原理不展開;
? (7)Source:源IP地址,也就是此數據包的發送者IP地址;
? (8)Destination:目的IP地址,即此數據包的接收者IP地址。
?
4 ICMP的報頭
? ? 從上圖中,我們不難看出ICMP協議報頭的字段,有type、code、checksum和data等部分。由于此ICMP協議封裝在IPv4上,所以我們又稱之為ICMPv4協議。同樣的道理,ICMPv6協議是封裝在IPv6協議上。
? (1)type:表示ICMP的消息類型,長劍的type如下圖所示;
? ? 我們ping命令發送數據包時,對應的type為8:Echo Request,對端回復ping命令的數據包,對應的type為0:Echo Reply,
? (2)code:表示ICMP消息類型的子類型,常見的code如下圖所示;
? (3)checksum:檢驗和,作用也是通過此字段判斷出數據是否被篡改。
總結
以上是生活随笔為你收集整理的写给非网工的CCNA教程(3)聊聊ping命令后的原理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如果你也23岁
- 下一篇: IE缓存文件提取器 V2.1 绿色版