1. 程式人生 > >淺談TCP/IP協議棧(七)網路層常見協議彙總

淺談TCP/IP協議棧(七)網路層常見協議彙總

附上部落格連結,歡迎大家前來交流和學習。

不知不覺這個系列已經寫了6章,雖然都是寫比較基礎和簡單的知識,但是整理起來還是用了不少時間,相信能夠堅持看完前面幾節的同學,已經對TCP/IP協議有了大致的瞭解,至少幾個關鍵的知識點,比如說協議棧、IP地址、路由和轉發的關係等等,這些知識業也許不足以讓你全面瞭解網路知識,但作為入門知識卻也是綽綽有餘了。
大家還節的第一節講的網路分層協議棧麼?我們來回顧一下:
物理層——鏈路層——網路層——傳輸層——應用層
我們之前著重介紹的還是網路層這方面的知識,包括IP協議、IP地址、路由和轉發等等,都是網路層的基礎知識,這一屆我們來介紹一些常用的網路層協議。網路層的協議有很多,在這裡我們就挑一些常見,常用的協議來介紹:

PING:
大家對於ping肯定都不陌生,尤其是喜歡玩遊戲的同學,ping值過高的話,就會嚴重影響遊戲體驗,ping從嚴格意義上講不算一種協議,但是在這裡也一併將其介紹一下,因為它太有名了。
我們先來介紹一下ping的流程:windows使用者可以用cmd進入使用者終端,輸入ping+ip地址,便可以進行一次ping,如下圖所示:
如果你輸入的IP地址有效且可達,則會收到相應對端發來的回覆報文,如下圖所示:
圖片描述
這裡的對端是指IP地址所在的伺服器,而所謂的ping指,就可以簡單理解為從某個資料包傳送到伺服器開始,到收到伺服器應答包為止的時間就是ping。一般以毫秒計算,如果你輸入的IP地址有誤,或者IP地址不可達,則會受到以下資訊:
圖片描述

ICMP:
大家可能對於ICMP協議有些陌生,事實上上面介紹得ping,其回覆報文實際上就是ICMP差錯報文,ICMP報文一般分為兩種型別,一種是ICMP查詢報文,它的作用很明顯,就是用來在主機或者路由器之間傳遞控制資訊的協議,所謂的傳遞資訊就是指目的地址是否可達,路由是否可達等等狀態資訊,ICMP協議並不傳輸資料,但是它卻能夠很好地傳遞狀態資訊,而剛才介紹的ping程式,結合ICMP協議之後的完整過程就是:
1、首先查本地arp cache資訊,看是否有對方的mac地址和IP地址對映條目記錄;
2、如果沒有,則發起一個arp請求廣播報文,等待對方告知具體的mac地址;
3、收到arp響應包之後,獲得某個IP對應的具體mac地址,有了實體地址之後才可以開始通訊,同事對ip-mac地址做一個本地cache;
4、發出icmp echo request包,收到icmp echo reply包
前面3條還是一個查arp表獲取對端mac的三層IP轉發基本流程,而第4條規則就是用ICMP報文來完成回顯資訊的輸出。
既然提到了ping和icmp,那麼就順便介紹一種常見的IP攻擊方式“Ping of Death”(死亡之ping)
Ping of Death可以利用作業系統規定的ICMP資料包最大尺寸不超過64KB這一規定,向主機發起死亡之ping攻擊,如果ICMP資料包的尺寸超過64KB上限時,主機就會出現記憶體分配錯誤,導致TCP/IP堆疊崩潰,致使主機宕機。

ARP
在大多數的TCP/IP視線中,ARP是一個基礎協議,但是它的執行對於應用程式或系統管理員來說一般都是透明的。ARP告訴快取在它的執行過程中非常關鍵。我們可以用arp命令對快取記憶體進行檢查和操作。快取記憶體中的每一項內容都有一個定時器,根據它來刪除不完整和完整的表項。arp命令可以顯示和修改ARP快取記憶體中的內容,我們介紹了ARP的一般操作,同時也介紹了一些特殊的功能,委託ARP和免費ARP.。
簡單總結起來就是,在IP轉發時,僅僅知道對端IP地址是無法完成轉發的,我們需要知道對短的MAC地址才能夠進行轉發,這個時候加入本地的ARP快取表中查不到對端的MAC,那麼則會發送ARP學習報文,去下游學習MAC,只有學到了MAC才能進一步的轉發,而ARP在其中就起到了儲存IP地址與MAC地址對映關係的作用,因此ARP協議是網路轉發中非常重要的一個協議!

最後我們來回顧一下,這一節介紹了ping程式,ICMP協議和ARP協議,事實上網路層的協議還有很多很多,但是以上接種協議都是比較常用的協議,大家有興趣可以深入瞭解一下。網路層的介紹也暫時告一段落,接下來,我們開始學習傳輸層的知識,敬請期待!