天天看點

談談網絡分層和IP

概述

在計算機網絡這門課中,往往是将各層協定拆開一章一章的講,每層協定是幹嘛的,都各種怎麼工作的。但如果有人問,這些協定之間怎麼協調工作,有什麼關系,往往處于懵逼狀态。

網絡分層

網絡為什麼分層,其實了解很簡單,複雜的東西都要分層。就像寫代碼,有Controller層,service層,dao層等,如果這個代碼很複雜,都寫在一個類裡裡,不利于你後期維護(可能過兩天你自己都看不懂了),和同僚之間的交流溝通也不友善。是以複雜的程式都要分層,這是基本的程式設計要求。

談談網絡分層和IP

這是一次使用者發起的請求,浏覽器用http協定打包使用者的請求,然後傳給下一層,調用下一層函數,這個函數會在這個網絡包裡加上一個TCP頭,記錄下源端口号,目的端口号,然後在調用下一層的函數,這個函數會加一個IP的頭,記錄源IP位址和目标IP的位址,然後在調用下一次函數,這個函數又加了一個本機器的MAC位址和目标MAC位址。這個資料包完整後,就可以從網口發出去。

網卡檢測到這個網絡包的目的位址是指向自己的,把這個資料包拿進來調用一段函數來處理這個網絡包,把屬于這層的東西剝離出去,然後調用另一層的一個函數(process_layer3())來處理這個網絡包。這一層檢測一下,目标IP是不是對上自己的IP,如果IP對不上,就轉發出去,若是對上IP,取下屬于這層的IP頭,在調用下一層的函數來處理。那是調用TCP函數還是UDP的函數處理哪,這個就得看協定字段,我這次請求是TCP的,就調用TCP的函數取下TCP頭,然後檢視這是一個發起,還是應答,或者是一個正常資料包,如果是發起或者應答,還需要發送一個回複包,若是一個正常資料包,根據端口号就直接交給應用去處理,然後浏覽器解析html,使用者現實界面。

網絡上跑的包,都是完整的,可以有下層沒上層,絕對不可能有上層沒下層。這有點類似于俄羅斯套娃,一層連着一層,一開始是個很小的套娃,套一層又套一層,套完後就是一個完整的套娃。網絡世界中也是一樣的,http層資料包,在套上TCP層,在套上IP層,又套上MAC層,所有機制都得運作一遍才能成功從網口發出去。

IP

      不管學沒學過計算機,一定都會聽到的詞===>IP。有沒有想過,MAC位址就可以辨別電腦了,還要IP幹嘛,我剛開始也模糊,後面才逐漸有點頭緒(但現在也不知道了解是否全對,畢竟計算機網絡小白)。MAC位址與裝置是一 一對應在區域網路内是唯一的,如果在區域網路内,MAC位址直接通信是沒有問題的,每次有消息的時候,各個主機都接收一下,對照下是不是自己的MAC位址,如果不是,就直接丢棄,對上就接收并處理。但是每次有消息都得接收和處理有點費事,于是出現了交換機,交換機記錄所有與之連接配接的MAC位址并與端口一一對應,現在A主機發消息給B主機并帶上B主機的MAC位址,現在先到交換機這裡,交換機查下記錄的MAC對照表,哦,原來你要找B主機,就按照這個端口發給B主機。為什麼會有IP哪,以太網MAC位址就可以通信了,但後來有了網際網路,相容以前的模式才有了IP + MAC的通信模式,長春這邊的區域網路有台A主機要與北京的區域網路一台B主機通信。長春的交換機記錄了A主機的MAC位址,可能還記錄了北京交換機的MAC位址,北京交換機記錄了要通信的B主機MAC位址。現在A給交換機發消息,我要找B主機,很遺憾,交換機找不到B主機,因為不是一個區域網路内,交換機沒記錄這個MAC位址,沒法通信。

     MAC位址是硬體提供商寫在網卡中的,MAC位址是唯一,但沒辦法表示我在網際網路的位置,除非維護一個超級大的MAC位址對應表,那尋址效率必定爆炸,而且擷取MAC位址是ARP協定完成的,隻用MAC位址通信廣播風暴就是很難克服的問題,但IP位址解決了這個問題,IP位址是網絡提供商給的,你在哪裡整個網絡都是知道的(類似于定位功能),找到你這個網絡,在這個網絡環境找到你的MAC就顯得容易得多。但是IP位址不總是唯一的,可能我今天在長春這個網絡環境,我下線了,我這個IP就會動态配置設定給别的裝置,明天到了北京,又動态分了一個IP位址,然而我的MAC位址總是固定且唯一的,通過這個我網絡IP位址和MAC位址就很容易找到我。

 ip addr

談談網絡分層和IP

檢視ip位址,192.168.181.110就是一個IP位址,總共有四個部分,每部分有8位,總共有32位,理論上可以有42.9億個IP位址,然而這些顯然不能滿足日益增長的計算機IP需求,因為不夠用,是以有了IPV6,也就是我們的  fe80::20c:29ff:feb6:4146/64,這個有128位,有生之年都不可能配置設定完,據說可以給地球的每粒沙子配置設定一個IP,就可以想象有多少IP位址了。IP位址是一個網卡在網絡世界的通訊位址,也相當于現實世界的門牌号碼,是以不能重複,它包括兩個辨別碼(網絡ID + 主機ID)。在同一個實體網絡上的所有主機都使用同一個網絡ID,網絡上的主機(路由器,伺服器等)有一個主機ID與其對應,早期IP位址為了便于尋址和階層化構造網絡,把IP分為5種類型,即A,B,C,D,E類位址。

談談網絡分層和IP

A類

  A類的位址,8位網絡位址,和24位的主機位址組成。位址範圍 1.0.0.0 -> 126.255.255.255,A類網絡有127個,每個網絡能容納16777214的主機。

B類

  B類的位址,16位網絡位址,和16位的主機位址組成,位址範圍128.0.0.0 -> 191.255.255.255,B類網絡有16382個,每個網絡可以有六萬多主機

C類

  C類的位址,24位的網絡位址,和8位的主機号,位址範圍 192.0.0.0 -> 223.255.255.0,C類網絡有209萬個,每個網絡隻能有可憐的254個主機

D類

  D類的位址,從圖中就可以看到,不分網絡位址和主機位址,被稱為廣播位址,供特殊協定向標明節點發送消息時用,第一個位元組是固定的1110,位址範圍 224.0.0.0 ->239.255.255.255

E類

  E類的位址,保留将來使用。240.0.0.0 -> 255.255.255.254

特殊位址

  大家在使用本地測試通路經常用到的 127.0.0.1 表示主機本身,是一個回環測試位址。

  在阿裡雲伺服器使用監聽位址 0.0.0.0 會有這樣的設定,他在IPV4表示的是無效的目标位址,但在伺服器端上它表示本機上所有的IPV4網段都能通路該服務

  在A,B,C類位址中,各自保留一個區域作為私有位址

  1. A類:10.0.0.0 -> 10.255.255.255
  2. B類:172.16.0.0 -> 172.31.255.255
  3. C類:192.168.0.0 -> 192.168.255.255

總結

簡單的總結合和回憶了對ip的了解,雖然是基礎知識,但是lz真的是計算機網絡小白,也不知道是否了解準确

參考:https://www.jianshu.com/p/e7989a7a0e96