TCP/IP(四)網絡層

閱讀目錄(Content)

 

一、網絡層概述

          1.1 網絡層簡介

二、網絡層的基礎知識

          2.1 ip地址
          2.2 ip地址的分類
          2.3 mac 地址與ip地址的區別與聯繫

三、ARP協議

四、IP協議

          4.1 ip協議
          4.2 通過ip數據包認識ip協議

五、ICMP協議

          5.1 ICMP差錯報告報文
          5.2 ICMP詢問報文

六、IGMP協議

          6.1 概述
          6.2 多播
          6.3 IGMP協議工作流程

七、總結

         7.1、分析從主機A找到主機B的過程
         7.2、分析從主機A找到主機E的過程
         7.3、分析從主機A到主機E數據的形式

  
 

一、網絡層概述

百度定義:

在這裏插入圖片描述

功能目的:

在這裏插入圖片描述

二、網絡層的基礎知識

2.1、ip地址

在這裏插入圖片描述

不就是一連串數組加.組成的嗎,比如我們常常設置路由器時登錄192.168.1.1。這個就是ip地址。那到底是什麼樣的呢?

ip地址就是32位,也就是4個字節組成,因爲32位太長了,我們不好識別,所以每次將其分爲8位一組,分成4組,然後在根據每組換算成10進制數組,組與組之間用.分隔開來。

舉個例子:11111111,11111111,11111111,11111111就可以用255,255,255,255來表示了,所以每一組都是從0到255之間。現在在來看192.168.1.1這個ip地址,

也能將其換成2進制來表示,只不過那樣太麻煩,讓人不易於看懂,所以就將其用10進制來表示。

ip地址的意義在哪裏呢?

      要上網就需要一個ip地址,這個ip地址不能和別人一樣,獨一無二,因爲在網絡上通信就是通過ip地址來找到你這臺主機的,但是這個ip地址不是固定的,比如你在家撥號上網,

是A這個ip地址,下一次撥號,可能就不是A,變成B了,這要看你所在的網絡給你分配了什麼ip地址。如何通過ip查找到你,這個問題後面來討論。

2.2、ip地址的分類

既然每個人的ip地址都不一樣,那一臺主機怎麼通過ip地址找到另一臺主機的呢,茫茫人海,不可能一個個查找把,所以就有專門的人來管理和分配這個ip地址,看看以前怎麼分的地址(瞭解)

在這裏插入圖片描述

網絡號由你所連的網決定,學校的局域網,公司的局域網,城市的廣域網等,就是相當於先市、在區、在到村這樣的。跟快遞一樣,你ip地址肯定也得這樣分,先找到大的,然後慢慢一層層找下去。

      A類地址:網絡號有8位,第一位固定爲0,127種,主機號有24位,那麼就能給該類地址劃分16777215個ip地址,也就1千多萬個地址,意思就是比如你需要組建一個有1千多萬臺主機的網絡,

             那麼你就要去分配一個A類地址,要求給你一個網絡號,然後其中1千多萬的ip地址就由你自己分配了,最多也就只能分配127個這樣的網絡

      B類:網絡號、主機號16位,就能有65535個網絡號和65535個主機號了。

      C類:網絡號有24位,也就能夠分配1000多萬個網絡,但是主機號只有8位,也就是隻能夠自己分配254臺主機最多

      D類:用於多播,多播後面講

      E類:留着以後用

      這就是我們老早以前所使用的ip地址,就是這樣分的,這樣看起來很合理啊,你看B類中,有那麼多種,肯定夠分了把,但是會暴露出一個問題就是,C類地址只能分配254臺主機,

      現在中小型網絡那麼多,都超過了254臺電腦,如果A公司有1000臺電腦,那他肯定要去分配B類地址,就造成了幾萬個的ip地址浪費了。這顯然不是很合理。

       劃分子網 = <網絡號>+<子網號>+<主機號>

      這是ip地址分類的第二大步,中間加了一個子網號,這樣就加大了對上面的A類和B類地址的使用率。也就減少了A類和B類地址的浪費,但是也有問題就是C類地址不管怎麼劃分,

      他所容納的主機太小了,隨着網路的擴增,人人度使用電腦,那麼A類和B類遲早度會用光,所以就用到了我們現在的IP地址。

      無分類編址 = <網路前綴>+<主機號>

這個一看,跟第一種分類編址一樣呀,其實很大的不同就在於分類編址的網絡號不能變,是固定長度,而無分類編址通過網絡前綴可變化,就能根據你需要多少個主機號來自由給你分配網絡前綴了。

             網絡前綴:也就是用不定長的一連串1來表示ip地址的網絡號。什麼意思呢?

             網絡前綴:255.0.0.0 ip地址:192.168.1.1 那麼該ip地址的前8位就屬於網絡號。

             網絡前綴:255.224.0.0 ip地址:192.255.1.1 因爲255是8個1,224是111 00000 ,所以前11位表示網絡號,也就是這個ip地址是處於255.224.0.0這個網絡中,在這個網絡中,能包含21個1轉換爲10進制這麼多的主機。

      這個網絡前綴我們也稱子網掩碼,所以現在知道ip地址和我們的子網掩碼什麼意思了嗎。

例如:已知ip地址141.14.72.24,所在網絡的子網掩碼是255.255.192.0,試求其網絡地址?
.
 子網掩碼:255.255.192.0 11111111,11111111,11000000,00000000
.
  ip地址:141.14.72.24 10001101,00001110,01001000,00011000
.
  所以根據子網掩碼知道ip地址的前18位爲網絡號,網絡地址就爲:10001101.00001110.01
.
  所以根據子網掩碼知道ip地址的前18位爲網絡號,網絡地址就爲:10001101.00001110.01000000.00000000
.
    轉換爲10進制就是141.14.64.0, 能夠存納14位1也就是16383臺主機。
.
  (別問我怎麼算的,肯定拿二進制轉換器啊,不可能自己手算把,哈哈,二進制轉10進制這麼多怎麼手算呢,記住特殊的,8個1就是255)

2.3、mac地址和ip地址的區別與聯繫

    1)mac地址概述

百度中定義:

在這裏插入圖片描述

在這裏插入圖片描述

    2)mac地址的作用

    談起MAC地址,不得不說一下IP地址。IP地址工作在OSI參考模型的第三層網絡層。兩者之間分工明確,默契合作,完成通信過程。P地址專注於網絡層,將數據包從一個網絡轉發到另外一個網絡;而MAC地址專注於數據鏈路層,將一個數據幀從一個節點傳送到相同鏈路的另一個節點。

在一個穩定的網絡中,IP地址和MAC地址是成對出現的。如果一臺計算機要和網絡中另一外計算機通信,那麼要配置這兩臺計算機的IP地址,MAC地址是網卡出廠時設定的,
  
  這樣配置的IP地址就和MAC地址形成了一種對應關係。在數據通信時,IP地址負責表示計算機的網絡層地址,網絡層設備(如路由器)根據IP地址來進行操作;MAC地址負責表示計算機的數據鏈路層地址,

    數據鏈路層設備(如交換機)根據MAC地址來進行操作。IP和MAC地址映射關係是由這種ARP(Address Resolution Protocol,地址解析協議)協議完成。

|| 例如: IP地址就如同一個職位,而MAC地址則好像是去應聘這個職位的人才,職位既可以讓甲坐,也可以讓乙坐,同樣的道理一個結點的IP地址對於網卡是不做要求,基本上什麼樣的廠家都可以用,
 
也就是說IP地址與MAC地址並不存在着綁定關係。本身有的計算機流動性就比較強,正如同人才可以給不同的單位幹活的道理一樣的,人才的流動性是比較強的。職位和人才的對應關係就有點像是IP地址與MAC地址的對應關係。

比如,如果一個網卡壞了,可以被更換,而無須取得一個新的IP地址。如果一個IP主機從一個網絡移到另一個網絡,可以給它一個新的IP地址,而無須換一個新的網卡。當然MAC地址除了僅僅只有這個功能還是不夠的,
  
  就拿人類社會與網絡進行類比,通過類比,我們就可以發現其中的類似之處,更好地理解MAC地址的作用。無論是局域網,還是廣域網中的計算機之間的通信,最終都表現爲將數據包從某種形式的鏈路上的初始結點出發,
  
  從一個結點傳遞到另一個結點,最終傳送到目的結點。數據包在這些節點之間的移動都是由ARP負責將IP地址映射到MAC地址上來完成的。
其實人類社會和網絡也是類似的,試想在人際關係網絡中,甲要捎個口信給丁,
  
  就會通過乙和丙中轉一下,最後由丙 轉告給丁。在網絡中,這個口信就好比是一個網絡中的一個數據包。數據包在傳送過程中會不斷詢問相鄰節點的MAC地址,這個過程就好比是人類社會的口信傳送過程。
  
  相信通過這兩個例子,我們就可以進一步理解MAC地址的作用。

3)mac地址和ip地址的區別
   
  IP地址和MAC地址相同點是它們都唯一,不同的特點主要有:
  
  一是:對於網絡上的某一設備,如一臺計算機或一臺路由器,其IP地址是基於網絡拓撲設計出的,同一臺設備或計算機上,改動IP地址是很容易的(但必須唯一),而MAC則是生產廠商燒錄好的,

一般不能改動。我們可以根據需要給一臺主機指定任意的IP地址,如我們可以給局域網上的某臺計算機分配IP地址爲192.168.0.112 ,也可以將它改成192.168.0.200。

而任一網絡設備(如網卡,路由器)一旦生產出來以後,其MAC地址不可由本地連接內的配置進行修改。如果一個計算機的網卡壞了,在更換網卡之後,該計算機的MAC地址就變了。
      
  二是:長度不同。IP地址爲32位,MAC地址爲48位。
  
  三是:分配依據不同。IP地址的分配是基於網絡拓撲,MAC地址的分配是基於製造商。
  
  四是:尋址協議層不同。IP地址應用於OSI第三層,即網絡層,而MAC地址應用在OSI第二層,即數據鏈路層。 數據鏈路層協議可以使數據從一個節點傳遞到相同鏈路的另一個節點上(通過MAC地址),

而網絡層協議使數據可以從一個網絡傳遞到另一個網絡上(ARP根據目的IP地址,找到中間節點的MAC地址,通過中間節點傳送,從而最終到達目的網絡)。

    4)兩者關係

    這兩者的關係是什麼呢?在網絡中我們通過主機的ip地址,先找到他的網絡地址,到達了網絡地址後,然後通過該網絡中的老大(路由器)來分析一下這個ip地址是你網路中的哪個主機,

    這時,老大(路由器)就通過該目標ip地址改到對應主機的mac地址,既然知道了mac地址,就能找到該計算機了。就好比什麼呢。路由器是每次分配給你的ip地址不一樣,但是你的mac地址肯定不會變,

    所以就根據ip地址找到你的mac地址。但是怎麼找到的呢?就要通過網絡層中的ARP(地址解析協議)協議了。

    知道了基礎的知識後,現在來講解網絡層的幾個協議:

在這裏插入圖片描述

三、ARP協議

    
    百度介紹:
在這裏插入圖片描述

地址解析協議:通過ip地址來解析主機的mac地址,是怎麼個過程呢,拿局域網來說,一個局域網中有很多主機,主機A想和局域網中的主機B通話,但是隻知道對方的ip地址,所以他就通過發廣播,

給局域網中所有的主機,問這個ip地址是誰,主機B收到了這個信息,通過網絡適配器(網卡)就發現自己是這個ip地址,然後就把自己的mac地址發給源主機,這樣就知道了mac地址,就能夠通信了。

類似的,在跨網絡中就不是直接發廣播了,先通過ip地址找到對應的網絡地址,如何找到的對應的網絡地址呢,通過路由器,每個路由器都有三層。網絡層、鏈路層、物理層,也就是說最高能夠識別網絡層中的東西來,

那麼路由器也就有ARP協議了,每個路由器都能識別出目標ip地址在哪個路由器上,這其中涉及到了很多算法,我們這裏不做更多的解釋,簡單來說,路由器能根據目標ip地址找到下一跳路由器的mac地址,然後一步一步跳下去,

直到找到目標ip地址的網絡地址的路由器,然後通過該路由器來找到目標ip地址的mac地址,這樣就能夠找到目標主機了。這就是ARP協議。

發送方是主機,要把IP數據報發送到本網絡上的另一個主機。這時用 ARP 找到目的主機的硬件地址。
      發送方是主機,要把 IP 數據報發送到另一個網絡上的一個主機。這時用 ARP 找到本網絡上的一個路由器的硬件地址。剩下的工作由這個路由器來完成。
      發送方是路由器,要把 IP 數據報轉發到本網絡上的一個主機。這時用 ARP 找到目的主機的硬件地址。
      發送方是路由器,要把 IP 數據報轉發到另一個網絡上的一個主機。這時用 ARP 找到本網絡上的一個路由器的硬件地址。剩下的工作由這個路由器來完成。

四、IP協議

 

4.1、IP協議概述

 
  百度定義:

在這裏插入圖片描述

其實IP的責任就是把數據從源地址傳送到目的地。它不負責保證傳送可靠性,流控制,包順序和其它對於主機到主機協議來說很普通的服務。

4.2、通過IP數據包格式認識IP協議

IP協議通過看一下IP數據包(報)的格式就知道IP協議是幹嘛的了,就是來規定數據報的格式,以及定義的功能

在這裏插入圖片描述

1)固定部分:20個字節,一行是4個字節,有5行,自己看清楚

1.1)第一行

        版本:佔4位,IP協議的版本,通信雙方的IP協議版本要一致,普遍用IPv4,以後可能會用IPv6.

        首部長度:佔4位,可表示的最大十進制爲15,單位是32位字(4個字節),表示首部最長爲60個字節,也就是說除去固定部分的20個字節,可選字段和填充最多能是40個字節。

        區分服務:佔8位,1個字節。有些要傳輸的數據要立馬傳達到對面,比如視頻,語音這樣的,不能跟郵件慢慢吞吞的達到對方一樣,需要立馬送達,這就是爲什麼需要這個區分服務了

        總長度:佔16位,2個字節。佔首部+數據部分 的總長度是多少。數據幀最長不能超過1500個字節,數據包就不能一次性發太大,如果發的太大就要選擇分片處理了。

1.2)第二行

        標識:佔16位,2個字節,一個計數器,每產生一個數據包,計數器就加1,當數據包被分片時,下面將會說到分片問題,所有分片後的數據包的標識度一樣。這樣相同的標識的數據包片就能夠重新組合到一起

        標誌:佔3位,第一位暫時沒意義,第二位DF:不能分片的意思,爲1時,不能分片,爲0就可以分片 第三位MF 還有分片的意思,爲0代表這是若干數據包中的最後一片

        片偏移:佔13位,在較長的分組在分片後,某片在原分組中的相對位置,幾個例子,1111,1111,1111,1111 這16位,分成4個數據包分片來發,第一個數據包分片的片偏移爲1,第二個爲5,第三個爲9,

        第四個爲13,就是這個意思,片偏移以8個字節爲偏移單位,也就是說,每個分片的長度一定是8字節的整數倍,上面是以位來舉例說明問題,實際上單位是8個字節爲單位。

1.3)第三行

        生存時間:也就是ping命令中顯示的TTL字段,跳數限制,每經過一個路由器,就減1,當跳到0後,就丟棄該數據包。window系統的起始TTL爲32、Linux64、xp:128

        協議:佔8位,數據包中數據部分使用的是什麼協議,方便目的主機的IP層知道講數據部分上交給哪個處理。(也就是下一章要將的TCP還是UDP協議)

        首部檢驗和:佔16位。這個字段只檢驗數據報的首部,但不包括數據部分。這是因爲數據報每經過一個路由器,路由器都要重新計算一下首部檢驗和(一些字段,如生存時間、標誌、片偏移等都可能發生變化)。

不檢驗數據部分可減少計算的工作量。

1.4)第四行

        源地址:佔32爲,也就是源IP地址

1.5)第五行

         目標地址:佔32位,也是IP地址

2)可選部分:爲了使整個數據包爲整數個字節而設置的。

五、ICMP協議

在這裏插入圖片描述

ICMP協議是一種面向無連接的協議,用於傳輸出錯報告控制信息。它是一個非常重要的協議,它對於網絡安全具有極其重要的意義。
  它是TCP/IP協議族的一個子協議,屬於網絡層協議,主要用於在主機與路由器之間傳遞控制信息,包括報告錯誤、交換受限控制和狀態信息等。
  當遇到IP數據無法訪問目標、IP路由器無法按當前的傳輸速率轉發數據包等情況時,會自動發送ICMP消息。ICMP報文在IP幀結構的首部協議類型字段(Protocol 8bit)的值=1。

這個協議比較簡單,它有兩部分組成:ICMP差錯報告報文、ICMP詢問報文 。這個挺有用的,比如我們經常用來測試網絡連接暢通的ping命令等

5.1 ICMP 差錯報文報告

檢測在傳送數據的過程中,發生的錯誤,如果發生了錯誤,會通過該協議返回給源主機一個帶有錯誤原因的數據包

終點不可達:發送數據後,路由器或主機不能完成交付數據報時,就會往源主機發送終點不可達報文

源點抑制:當路由器或主機由於網絡擁塞而丟棄數據報時,返回一個源點抑制報文

超時:

參數問題,在ip數據包中的首部有的字段不正確時,丟棄該報,返回參數問題報文

改變路由(重定向):路由器把改變路由報文發送給主機,讓主機下次直接經過改變後的路由器。

5.2、ICMP詢問報文

   回送請求和回答:主機向特定目標發出詢問,收到此報文必須返回一個ICMP回送回答報文。用於測試目的站是否可達。

   時間戳請求和回答:請某個路由器或主機回答當前的日期和時間,用於進行時鐘的同步和測量時間。

六、IGMP協議

6.1、概述

在這裏插入圖片描述

6.2、多播

IGMP協議用於多播,解釋一下多播是什麼把。

廣播:老師在臺上講課,你們能隨時看到老師的電腦屏幕,因爲採用的廣播,每個人度能接受到老師屏幕上所有的數據包

多播:在一個局域網中,有三個多播組,A、B、C,A在放java視頻,B在放C++視頻,C在放娛樂視頻,如果你想看Java視頻,那麼你就調到A這個多播組中學習java視頻,學習累了,

你就可以換到C這個多播組中看看娛樂節目,這就是多播的意思,相對廣播來說,自己需要什麼就調什麼,而不是跟廣播一樣,被動接受,他播到哪,就只能看到哪,多播能自由控制速度。

單播:50個人想看視頻,就得發送50個數據包。多播的話就發一個,然後通過路由器轉發50分給不同的人。

dan播

多播

6.3、IGMP協議工作流程

在這裏插入圖片描述

七、總結

在這裏插入圖片描述

注意:每個路由器度有一個路由表,並且主機也有記錄ip地址和對應mac地址的功能。並不是每次通信度需要發廣播詢問。

7.1、分析從主機A找到主機B的過程

   1)A先在自己的網絡中發送廣播,通過ARP協議。問所有的主機,誰知道10.0.0.3這個ip地址的主機是誰,同時把自己的主機ip地址和mac地址一起發送,

     主機B發現自己是10.0.03這個ip地址,就把自己的mac地址發回去

   2)主機A發現有人迴應,就知道在自己本網絡中,然後就找到了目標主機,開始通訊

7.2、分析從主機A找到主機E的過程

   1)主機A先發廣播看自己本網絡沒有該主機,沒有,然後就給ip地址爲10.0.0.1這個路由器F1發信號獲得路由器的mac地址,然後給他發信號叫該路由器F1幫我們查找ip地址爲12.0.0.3的主機。

     這個路由器的ip地址就網關,所以每臺計算機上度要有三個東西,ip地址,子網掩碼,網關。

   2)路由器因爲知道所有的網絡在哪裏,通過子網掩碼和ip地址,就能夠算出該ip地址在哪一個網段中,路由器就一跳一跳的經過路由器,知道找到對應網段的路由器F2

   3)找到F2後,F2就以同樣的方式通過ip地址找到對應的mac地址,就這樣找到了。

   省略了路由器如何找的這一步,這個可以自己看書,其中有很多中方式,很多種算法,我們就知道我們給ip地址和子網掩碼給路由器,路由器就知道下一跳給誰,知道找到對應網段

7.3、分析從主機A到主機E數據的形式

在這裏插入圖片描述

傳輸層(還沒講):講各個數據段劃分序號

網絡層:加上ip地址

數據鏈路層:加上mac地址和CRC檢測的FCS

物理層:轉化爲比特流傳輸

集線器:只認識物理層,用來轉發比特流

交換機:能認識數據鏈路層,所以交換機有mac地址表,能夠記錄各種mac地址,下一次就能選擇性的轉發數據了

路由器,能認識網絡層,有路由表,所以能夠通過ip地址找到對應網段。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章