ping (packet internet groper),網際網路包探索器,用於測試網路連通性的程式。
ping傳送乙個icmp(internet control messages protocol,網際網路信報控制協議);回聲請求訊息給目的地並報告是否收到所希望的icmpecho (icmp回聲應答)。
工作原理:利用網路上機器ip位址的唯一性,給目標ip位址傳送乙個資料報,再要求對方返回乙個同樣大小的資料報來確定兩台網路機器是否連線相通,時延是多少。
icmp屬於osi七層協議的網路層,和ip一層,但icmp使用時必須增加ip報頭。
pc1—ping —pc2 也就是pc1:192.168.1.1 ping pc2:192.168.1.2 屬於同一網段的ping過程:
【步驟1】、ping開始------------------------------------------即後台執行192.168.1.1 ping 192.168.1.2
解釋:ping過程是源主機icmp協議傳送乙個icmp協議報文給目的主機的icmp協議,目的主機收到icmp報文後,icmp協議規則規定收到請求報文要強制回乙個應答報文給源主機。源主機收到應答報文後一次完整的ping過程才算完成。icmp(internet-control-message-protocol)網際控制資訊報文—名字就說明此報文的用途,傳送一些網路間控制資訊的報文。比如ping中強制應答就是控制資訊。icmp屬於tcp/ip網際層,呼叫同樣位於網際層的ip協議,只是比ip層更接近上層而已,icmp協議號是1。
【步驟2】、pc1開始封包---------------------------------------確切說是pc1的tcp/ip協議簇開始封包
解釋:封包就是把要傳送的資料封裝在有固定頭部格式的協議內方便傳輸中識別和控制。比如實時語音包(手機打**的資料)就要求特別對待優先處理;再比如你傳送1g的資料,不可能一次乙個包傳送完,要根據規則分割成一小塊一小塊的資料進行多次傳送。再比如你傳送的是銀行密碼和存款金額,就要求穩定傳輸和保密傳輸,這些控制的規則資訊、加密的規則資訊、都在封包的包頭裡有對應的標識。此處ping命令對應的操作實際是icmp協議呼叫同層(呼叫也不全是上層呼叫下層)的ip協議向目的位址發包,ip協議會通過協議號1來標註是icmp協議讓我發包的,到目的地後以這個協議號為依據把包交給icmp協議。ip協議封裝源ip和目的ip,也就是ping命令中源和目的ip位址,然後把包交給下層即資料鏈路層,資料鏈路層會用協議號0x0800標註是ip協議讓我發的這個包,以便傳到目的位址時交給對方的ip協議。因為此過程一直沒用到四層的埠號,所以icmp屬於三層協議。資料鏈路層會檢查包的頭部封裝的目的ip,然後到pc1的mac位址表中找目的ip對應的二層mac位址。因為二層裝置在傳送過程中是不認識ip位址的(因為ip屬於三層的編址,二層裝置不識別),只認mac位址,mac位址是燒錄在網絡卡中的全球唯一,每個交換機介面也有乙個全球唯一的mac位址。資料鏈路層在pc1的mac位址表中找目的ip對應的mac發現找不到,封裝失敗。
【步驟3】.沒有目的mac—封包失敗,開始找目的ip的mac位址--------------------------------------即arp找目的mac
解釋:arp(address resolution protocol)—位址解析協議-----就是通過ip位址找mac位址的過程。pc1的tcp/ip協議簇的資料鏈路層呼叫arp協議完成位址解析。arp協議傳送乙個目的ip為192.168.1.2,源位址為192.168.1.1,目的mac為全0,源mac位址為pc1mac的arp請求包。目的mac為全0的二層廣播就像ip位址主機位全為f的廣播一樣,交換機收到此廣播後,會向網路內所有介面傳送-也叫泛洪。在此過程,交換機1學到了如下資訊(交換機1介面1-------ip:192.168.1.1—mac:pc1mac)。pc2的mac位址表學到如下資訊(ip:192.168.1.1-----mac:pc1mac)。備註,此過程路由器1介面1也會收到泛洪包,檢查目的位址不是自己隨即丟棄包,並不做任何回應。----這也體現了廣播或者泛洪的壞處,白幹活,沒效果(拆包–檢查—丟棄)。
同一網路內主機收到此arp請求資料報(此時叫frame—二層資料報標準稱呼),會拆包==檢查三層的ip位址,不一致的丟棄,一致的回arp-reply包。arp-reply包內容自動填自己的mac位址為源mac。此處為pc2傳送,包的頭部如下:sourcemac:pc2mac–destinationmac:pc1mac–sourceip:192.168.1.2–destinationip:192.168.1.1。pc1會收到此包,拆包,填pc2的mac位址和ip在mac位址表中。在此過程,交換機1學到了如下資訊(交換機1介面2-------ip:192.168.1.2—mac:pc2mac)。pc1的mac位址表學到如下資訊(ip:192.168.1.2-----mac:pc2mac)。
【步驟4】.重新封包傳送:
解釋:pc1封包如下:smac:pc1mac–dmac:pc2mac–sip:192.168.1.1–dip:192.168.1.2,從網絡卡發包給交換機1介面1,交換機在arp過程學到紅字標註的資訊,建立了自己的mac位址**表。檢視收到pc1的包頭目的mac位址為pc2mac直接從介面2**出去。pc2收到包後核對目的mac和自己一致,開始解包,根據包頭標註上層協議號0x0800把包頭丟掉,資料傳給ip協議,ip協議檢查ip位址一致後根據上層協議號1把包頭丟掉,資料傳給icmp,icmp根據資料中的type=0code=0得知是echo-request即要回應的請求報文,就會立即傳送乙個返回的icmp報文的echo-reply即回應應答報文。
簡述:(同一網段)1.pc1-ping -pc2-------2.pc1準備封包傳送--------3.發現沒pc2的mac-------4.arp請求pc2的mac(發請求時交換機1學到介面1連線pc1,回請求時交換機1學到介面2連線pc2)------5.重新封包--------6.pc1發包給交換機1介面1-----7.交換機1根據**表從介面2發出------8.pc2收到包,並按要求回包-------9.pc2發包給pc1-----10.pc1收到回包,一次完整內網ping包過程完成。
外網ping過程(不同網段):(此例為:pc1–ping–pc3----------192.168.1.1–ping --172.16.1.1):
【總結】:ping包在傳遞過程中,是一跳一跳**的,每經過乙個交換機,不停留不拆包直接按目的mac**,每進過乙個路由器拆封包一次。更換二層包頭,去掉上一網段mac位址,換成下一網段mac位址。在ping包的整個傳輸過程中,源ip和目的ip始終不變。
特別感謝:
參考:
Ping命令的過程
同一網段 1.ping通知系統建立乙個固定格式的icmp請求資料報 2.icmp協議打包這個資料報和機器b的ip位址轉交給ip協議層 一組後台執行的程序,與icmp類似 3.ip層協議將以機器b的ip位址為目的位址,本機ip位址為源位址,加上一些其他的控制資訊,構建乙個 ip資料報獲取機器b的mac...
Ping命令的工作過程
假定主機a的ip位址是192.168.1.1,主機b的ip位址是192.168.1.2,都在同一子網內,則當你在 主機a上執行 ping 192.168.1.2 後,都發生了些什麼呢?首先,ping命令會構建乙個固定格式的icmp請求資料報,然後由icmp協議將這個資料報連同位址 192.168.1...
ping命令執行過程詳解
ping命令執行過程詳解 ping 是我們經常會接觸到的命令,但是大家對這個命令的了解有多少,這個命令的執行過程以及返回過來的資訊代表什麼意思呢?接下來我為大家逐一講解。先看一下 ping 的執行過程 就以這樣乙個網路作為例子 假設有a b c d四台機器,一台路由ra,子網掩碼均為255.255....