《趣学CCNA——路由与交换》一2.3 网络层协议概述
本節書摘來自異步社區《趣學CCNA——路由與交換》一書中的第2章,第2.3節,作者 田果 , 彭定學,更多章節內容可以訪問云棲社區“異步社區”公眾號查看
2.3 網絡層協議概述
趣學CCNA——路由與交換
網絡層的協議不勝枚舉,完全不可能一一進行介紹。在本節,我們會挑其中幾個對網絡行為產生極大影響的協議進行介紹。
話說回來,雖說網絡層協議多如牛毛,但在眾多網絡層協議之中,有一個協議光輝太過耀眼,讓人們幾乎忘記了其他協議的存在。它的重要性是如此不容忽視,以至于它的名稱叫做“互聯網協議 ( Internet Protocol )”,簡稱為IP協議。那么,讓我們就從這個互聯網協議說起吧。
2.3.1 IP介紹
在那個“模型們”還沒有走上歷史舞臺的年代,IEEE發布了一篇論文,題為“一個實現數據網通信的協議”。這篇論文的兩位作者(文頓·格雷·瑟夫先生和羅伯特·埃利奧特·卡恩先生)描述了一個在網絡節點之間,使用包交換的方式共享資源的互聯網絡協議。這個協議的核心叫做“傳輸控制程序”,它由兩部分組成,其中一部分的功能是提供面向連接的傳輸;另一部分則是提供數據報文服務。后來,就像很多讀者可能已經猜測到的那樣:這個程序的兩大功能按照分層的理念被分為了兩個協議,其中一個協議負責提供面向連接的傳輸,叫做傳輸控制協議,簡稱TCP;另一個提供數據報文服務,叫做互聯網協議,簡稱IP。這兩個協議分別工作在傳輸(Transport)層和互聯網(Internet)層,由此誕生的四層模型就是后來的DoD模型(見圖2-1下面的注釋)。最開始是需求,然后是協議,最后誕生了分層模型,這是具有盤古開天地或者創世紀意義的事件,至少對于網絡世界來說,這樣的形容毫不夸張。
因此,IP協議原本就是傳輸控制程序中負責提供數據報文服務的一個組成部分。既然原本的傳輸控制程序中已經安排了TCP來提供有連接的數據傳輸服務,那么IP 協議必然也是一個無連接的協議,而它提供的數據報文服務肯定不包含在TCP協議之中。那么,IP協議到底能夠為數據報文提供什么樣的服務呢?
這個關子賣得一分錢不值,因為不知道IP協議的人,不會有耐心把這本書讀到現在——沒錯,IP 提供的 服務,主要就是尋址。下面,我們按照前面的慣例,通過分析IP數據包頭部格式,來研究這項協議能夠提供給的功能,請看圖2-8。
版本:IP協議不只有一個版本,但我們當前最常使用的IP協議叫做IPv4。所有IPv4封裝的數據包,版本號字段的取值當然全都是4。雖然新版的IP協議(也就是IPv6協議)為了提供更豐富的地址資源,也為了斧正IPv4的一些缺陷,而對數據包頭部格式進行了重新的定義,但它依然保留了版本字段,且取值為6。當然,IPv6定義的頭部格式我們會在第15章中進行深入的介紹。
首部長度:如果看到這個字段時,您的目光就開始自動在首部格式中搜索“可選項”字段,說明您的學習已經入門了。沒錯,首部長度需要通過頭部格式中字段的取值進行描述,說明這個首部是不定長的,因此一定存在可選項字段,不過我們不會在這一章中介紹IP協議頭部的可選項字段,因為它們并不常用。
服務類型:這個字段的作用是向設備說明,是否應該對數據包進行特殊處理,以及應該如何對數據包進行特殊處理。
總長度:總長度字段相當于UDP協議的長度字段,它的數值標明了這個數據包頭部與數據部分的長度之和。圖2-8標記得很清楚,IP包頭如果沒有可選項,也沒有攜帶任何數據,則長度為20字節。
標識符、標志與段偏移量:數據在鏈路中傳輸是有長度限制的,就像載貨車在路上跑是有限重的一樣。如果一輛車跑著跑著,發現車皮加貨物的總重量超過了前面這個道路的限重,就應該停車卸貨分裝,這個過程叫做“分片”,有時也翻譯成“分段”。可是最終,同一批貨畢竟還是要拾掇齊了才能交付的。為了能把分裝的貨按照原樣組裝回去,難免需要貼一些標簽,說明哪些貨是同一批的,以及如何把它們組裝在一起。標識符、標志和段偏移量就是這樣的標簽。
TTL :TTL的全稱是生存時間(Time-To-Live)。這個字段定義的本來是數據包在網絡中最長能跑多長時間。后來人們發現數據包跑得實在是太快了,就轉而把這個字段定義成了數據包在網絡中最多能穿過多少臺路由器設備。這個字段的目的是為了防止數據按照一些不靠譜的行程,遭遇“迷失”,在網絡中沿著一條環路永遠這樣跑下去。這樣跑的數據多了,網絡豈不是會被堵死?
協議號:這個字段定義的是IP封裝上層的協議,就像TCP/UDP協議的端口號字段定義的是它們上層的協議一樣。
首部校驗和:校驗數據在傳輸的過程中,頭部是否發生了變化。
源地址和目的地址:信封上的發信人地址和收信人地址。這兩個32位的地址我們會單拿一章進行介紹。好消息是那一章的內容極為枯燥,敬請期待。
關于IP協議,我們姑且介紹到這里,上面的內容僅僅有助于讀者了解這項協議所定義的功能。但是這項協議最重要的信息在于它的地址部分,而介紹它的地址必須以一整章的內容展開說明,敬請讀者稍安勿躁。而下面,我們要介紹另一個網絡層的協議,那就是與IP協議關系極為密切的互聯網控制消息協議(ICMP)。
2.3.2 ICMP介紹
沒吃過豬肉,還沒見過豬跑?沒聽說過ICMP協議,還沒在家里裝寬帶路由器的時候按照說明書去ping過幾個地址?其實,ping是一項測試工具,這個工具使用的就是ICMP協議,其目的是檢測對方與自己在網絡層上的連通性。說得再通俗點,就是看看發起ping的這臺設備,與它去ping的那臺設備,在網絡層能不能“通”。如果說ICMP是第二常用的網絡檢測協議,估計沒有協議敢稱第一。
在這里,有些讀者也許感到不解:既然ICMP的功能是檢測網絡層的連通性,它的分層就應該高于網絡層,何況ICMP還封裝在IP頭部之內,更讓它像極了一個傳輸層的協議。這大概是這些讀者第一次有機會產生這種不解。
首先,對于在我提出這個問題之前就產生了這個疑問的讀者,我表示欽佩,您的理解能力真的很強,而且您也的確相當準確地把握了分層模型的理解方式。確實,ICMP既不完全屬于網絡層,也不完全屬于傳輸層,而是介于這兩層之間。為了便于讀者理解網絡層相關的操作和協議,我們姑且將ICMP放在網絡層部分進行介紹。后面我們要進行介紹的ARP協議也存在同樣的問題。
這是各類分層模型經常遭遇的尷尬之一,TCP/IP模型是對TCP/IP協議棧所進行的一種描述,但世界上沒有一種分類模型能夠既無所不包地考慮到每一個已有協議的特點,又料事如神地預測到未來的所有需求與環境。馬克思的社會發展五段論對歐洲社會的過往進行了充分地概括,又對人類社會未來的發展作出了自己的預言。但他不是亞洲人,他在歸納歷史發展規律的時候沒有考慮到歐洲之外的國家都經歷過各自不同的文明歷程。當今中國國內就有大量學者或在學術領域著書立說,或在象牙塔內開壇授課,解釋中國自周之后、民國之前的時代既不能歸入封建制度,也不歸入資本主義制度的理由。這都沒有錯,但縱使每個國家都有自己的發展道路,殊途同歸,人類文明在不同的發展歷程中表現出的共性還是遠大于差異性。為了強調差異性而認為一切探討共性的努力都是紙上談兵,這種態度是弊大于利的。
TCP/IP模型則是根據實際環境總結出來的協議模型,盡管大把協議還是無法按照它的分層方式而毫無爭議地被歸入某一層之中,但瑕不掩瑜,它提供的功能分類仍然對這個行業擁有不容小覷的指導意義。推薦讀者在學習不同協議的時候,先去思考一下它的分層,如果發現它的分層確實存在爭議,那就接受現實,而不是進行深入的理論挖掘。思考分層,有助于讀者理解分層結構,并潛移默化地用它來指導配置和排錯的工作。不進行理論挖掘,是因為這樣做實在意義不大。在此,我還是想搬出在介紹OSI模型時提到的那句話:分層模型固然重要,具體協議僅供參考。
回到正文,前面我們說ICMP是封裝在IP數據包中的,具體方法是作為IP數據包中的數據部分,并且在前面添加上圖2-8所示的IP數據包首部。封裝后的ICMP消息如圖2-9所示。
當然,ICMP協議也有自己定義的頭部格式,它的頭部格式如圖2-10所示。
圖2-10 ICMP的頭部格式
根據圖2-10不難看出,ICMP協議定義了一些不同的消息類型,就連頭部格式都會因為消息類型而有所區別。在這里,我們只介紹4種與日常使用關系最為密切的消息類型供讀者參考。
回應 ( Echo) 消息和回應應答 ( Echo Reply) 消息:這是ping工具用來測試數據包是否在網絡層可達時,測試設備和被測試設備之間相互發送的消息。比如,主機A的IP地址為10.0.0.2,主機B的IP地址為10.0.0.3。那么,在我們通過主機A測試A到B網絡層的連通性時,就可以輸入命令ping 10.0.0.3,向B發送Echo消息。如果這兩臺設備的網絡層互相可達,我們就會收到主機B發來的Echo Reply消息。關于IP地址的問題,我們會在后面的章節中詳加闡述。
目的地不可達 ( Destination Unreachable) 消息:如果路由器不能定位一個目的地址,就會發出這類消息。
發送超時 ( Time Exceeded) 消息:當數據包的TTL為0時,路由器就會發出這類消息。trace是除了ping之外,另一項使用ICMP協議的常用路徑檢測工具。它的原理就是通過接收路由器發送的超時消息來了解去往某個目的地址的沿途路徑情況。trace的具體做法是這樣的:把去往那個目的地址數據包的TTL值依次設置為1、2、3……以此類推,然后發送出去。于是,這些數據包在經過沿途的路由器時,總會有其中一個的TTL值遞減至零,于是路由器就會向始發設備發出發送超時消息。根據收到的這些消息就能跟蹤發往目的地的數據包在網絡上依次通過的路由器,從而統計路徑的數據和時間開銷。
關于ICMP,我們的介紹已經足夠讀者完成CCNA階段的學習,下面我們來介紹本章的最后一個協議:ARP協議。
2.3.3 ARP介紹
對于沒什么網絡基礎的同學,我們先對下一章進行一個小小的預告。在局域網中,每個接口都有一個硬件地址,叫做MAC地址。這個地址與IP數據包頭部的地址最大的不同之處在于,它是出廠的時候就燒錄在板卡上的。那IP地址呢?如果您配置過家用寬帶路由器,或者對您家里的任何一臺PC執行過網絡配置,您就會明白:IP地址是咱們自己填在地址欄里的。當然,我們有時候也會對IP地址進行自動配置。但不管手動配置還是自動配置,IP地址終究是可以管理的。
如果一個數據幀經過局域網接口的封裝,需要轉發給這個局域網中的某臺設備,那么它就一定要封裝上那臺目的設備的 MAC 地址。問題是,始發的這臺設備要怎么才能知道燒錄在人家硬件上的地址呢?答案是,它只能去問知道這個地址的設備。那么,哪臺設備知道這個地址呢?通常情況下,這個問題的答案是:當然是那臺設備自己知道自己的硬件地址(例外情況姑且不提)。
這樣一來,我們發現問題變成了一個死循環:因為A設備不知道B設備的硬件地址,所以沒法向B發包,所以A要設法搞到B的硬件地址,因為B知道自己的硬件地址,所以A要向B發包詢問,因為A不知道B的硬件地址,所以沒法向B發包。
有辦法嗎?
有。
在火車站,孩子丟了。因為不知道孩子在哪里,所以要找人問,因為只有孩子自己知道自己在哪里,所以這個問題應該問孩子本人,因為找不到孩子,所以沒法問。怎么辦?廣播尋人唄。孩子聽見廣播,自己就找車站的制服阿姨帶他去廣播室了。
于是,我們想到,A可以“以B的IP地址作為目的IP地址,以自己的IP地址作為源IP地址,以廣播地址作為目的MAC地址,以自己的MAC地址作為源MAC地址”,這樣封裝一個二層的數據幀,把它發送出去。這樣一來,雖然局域網中的所有設備都會收到這個數據包,但只有B在接收到這個數據包時,才會通過查看其目的IP地址而發現這個數據包找的是自己,于是它會以自己的IP和MAC地址作為源IP和源MAC地址,以A的IP和MAC地址作為目的IP和目的MAC地址,向A發送一個數據包,這樣就將自己的MAC地址發送給了A。從此A和B幸福地生活在了一起。注意,定義這種MAC地址解析方式的協議,就叫做ARP 協議,全 稱地址解析協議。
您也許想問,既然有了MAC地址,為啥還要搞出來一個什么IP地址,然后再為了對應這兩個地址,還得用什么亂七八糟的協議去解析,只有一個地址不好嗎?
那麻煩可就大了。
前面說過,MAC地址是燒錄在硬件上的地址,它是一個物理地址,它的屬性是自然屬性,就像人臉一樣。這個世界上固然千人千面,一張臉就足以唯一地定義一個人。但是靠這種純自然的屬性,是無法對人進行歸類的。而無法歸類就無法找尋,茫茫人海,想靠一張照片就找到這個人,恐怕比上青天還不知道難了多少倍。
而IP地址是人們定義的一個邏輯地址,它的屬性是抽象屬性,就像咱們的家庭住址一樣,是經過了抽象和匯總的。中華人民共和國北京市海淀區蘇州街18號長遠天地大廈B1-1005是一個層層縮小、層層具體的范圍,按照這個范圍,尋找一個人又是何其容易的一件事。
關于MAC地址與局域網,關于IP地址及其分類和匯總,后面的故事還有很多,請讀者拭目以待。
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的《趣学CCNA——路由与交换》一2.3 网络层协议概述的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: srvany.exe是什么
- 下一篇: 《防患未然:实施情报先导的信息安全方法与