天天看點

第四章 網絡層

      序言

        沒儲存,電腦沒動放着去吃飯,結果win7就休眠了,啟動雖然網頁度還在,可以我的博文沒儲存啊,心痛,隻能在重頭來了,隻能說博文應該改進改進,如果直接關了,應該幫使用者自動儲存草稿的。重新寫的。反正今天下午的任務在這裡擺着。加油

                                      ----WZY

一、回顧

      TCP/IP協定棧:實體層、鍊路層、網絡層、傳輸層、應用層(會話層+表示層+應用層)

      實體層:通過比特流線上路中傳輸來完成我們傳輸資料的目的,傳輸的方式很多種,傳輸的媒體也很多中,光纖等

      鍊路層:資料幀,在資料包(報)上加mac位址形成資料幀,其中的CRC檢測原理用來檢測資料的完整性,這一層用到的協定有PPP(點到點協定)、例如家中的撥号上網, CSMA/CD協定(廣播協定),在區域網路中用的很多。其中會發生一系列的問題,和解決問題的辦法。

      網絡層:資料包(報),加上源ip位址和目标ip位址了。這一層的協定有四種,ARP(位址解析協定)、RARP(逆位址解析協定)、ICMP(網際控制封包協定)、IGMP(網際組管理協定)。這四種協定隻是和IP協定配套使用,。在一章還能學到的是資料包的結構是怎麼樣的。什麼是ip位址,為什麼需要ip位址,怎麼配置設定和區分ip位址的,這這一節我們度會講解到。

      傳輸層:這裡會講解到端口。常見的80端口,我們學習javaWeb時,使用Tomcat中,看到的是8080端口,浏覽器使用的是80端口,這一節就會講到端口是幹嘛用的。

      應用層:待續。

二、網絡層

   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查找到你,這個問題後面來讨論。

      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位址

      無分類編址 = <網路字首>+<主機号> 這個就是我們現在用的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位址是處于192.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.01000000.00000000 轉換為10進制就是141.14.64.0, 能夠存納14位1也就是16383台主機。(别問我怎麼算的,肯定拿二進制轉換器啊,不可能自己手算把,哈哈,二進制轉10進制這麼多怎麼手算呢,記住特殊的,8個1就是255)

      ip位址和MAC位址的差別?

        mac位址:實體位址

        ip位址:網絡中的位址

          這兩者的關系是什麼呢?在網絡中我們通過主機的ip位址,先找到他的網絡位址,到達了網絡位址後,然後通過該網絡中的老大(路由器)來分析一下這個ip位址是你網路中的哪個主機,這時,老大(路由器)就通過該目标ip位址改到對應主機的mac位址,既然知道了mac位址,就能找到該計算機了。就好比什麼呢。路由器是每次配置設定給你的ip位址不一樣,但是你的mac位址肯定不會變,是以就根據ip位址找到你的mac位址。但是怎麼找到的呢?就要通過網絡層中的ARP(位址解析協定)協定了。

        

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

           

      RARP:逆位址解析協定(現在度不單獨講這個了,是以我在圖中畫在紅色圓圈内部,因為RARP已經被DHCP協定給包含了,DHCP協定在後面會講解到),是以我們下面講的就4個協定。

二、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協定

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

                 

            固定部分:20個位元組,一行是4個位元組,有5行,自己看清楚

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

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

          區分服務:占8位,1個位元組。有些要傳輸的資料要立馬傳達到對面,比如視訊,語音這樣的,不能跟郵件慢慢吞吞的達到對方一樣,需要立馬送達,這就是為什麼需要這個區分服務了

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

          辨別:占16位,2個位元組,一個計數器,每産生一個資料包,計數器就加1,當資料包被分片時,下面将會說到分片問題,所有分片後的資料包的辨別度一樣。這樣相同的辨別的資料包片就能夠重新組合到一起

          标志:占3位,第一位暫時沒意義,第二位DF:不能分片的意思,為1時,不能分片,為0就可以分片 第三位MF 還有分片的意思,為0代表這是若幹資料包中的最後一片

          片偏移:占13位,在較長的分組在分片後,某片在原分組中的相對位置,幾個例子,1111,1111,1111,1111 這16位,分成4個資料包分片來發,第一個資料包分片的片偏移為1,第二個為5,第三個為9,第四個為13,就是這個意思,片偏移以8個位元組為偏移機關,也就是說,每個分片的長度一定是8位元組的整數倍,上面是以位來舉例說明問題,實際上機關是8個位元組為機關。

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

          協定:占8位,資料包中資料部分使用的是什麼協定,友善目的主機的IP層知道講資料部分上交給哪個處理。(也就是下一章要将的TCP還是UDP協定)

          首部檢驗和:占16位。這個字段隻檢驗資料報的首部,但不包括資料部分。這是因為資料報每經過一個路由器,路由器都要重新計算一下首部檢驗和(一些字段,如生存時間、标志、片偏移等都可能發生變化)。不檢驗資料部分可減少計算的工作量。

          源位址:占32為,也就是源IP位址

          目标位址:占32位,也是IP位址

          可選部分:為了使整個資料包為整數個位元組而設定的。

四、ICMP協定

      這個比較簡單,就兩部分ICMP差錯報告封包、ICMP詢問封包 這個挺使用的,比如我們經常用來測試網絡連接配接暢通的ping指令等

        ICMP差錯報告封包:檢測在傳送資料的過程中,發生的錯誤,如果發生了錯誤,會通過該協定傳回給源主機一個帶有錯誤原因的資料包

            終點不可達:發送資料後,路由器或主機不能完成傳遞資料報時,就會往源主機發送終點不可達封包

            源點抑制:當路由器或主機由于網絡擁塞而丢棄資料報時,傳回一個源點抑制封包

            逾時:

            參數問題,在ip資料包中的首部有的字段不正确時,丢棄該報,傳回參數問題封包

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

        ICMP詢問封包:

            回送請求和回答:主機向特定目标發出詢問,收到此封包必須傳回一個ICMP回送回答封包。用于測試目的站是否可達。

             

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

五、IGMP協定

      用于多點傳播,解釋一下多點傳播是什麼把。

        廣播:老師在台上講課,你們能随時看到老師的電腦螢幕,因為采用的廣播,每個人度能接受到老師螢幕上所有的資料包

        多點傳播:在一個區域網路中,有三個多點傳播組,A、B、C,A在放java視訊,B在放C++視訊,C在放娛樂視訊,如果你想看Java視訊,那麼你就調到A這個多點傳播組中學習java視訊,學習累了,你就可以換到C這個多點傳播組中看看娛樂節目,這就是多點傳播的意思,相對廣播來說,自己需要什麼就調什麼,而不是跟廣播一樣,被動接受,他播到哪,就隻能看到哪,多點傳播能自由控制速度。

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

六、總結

          

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

     問題一:     分析從主機A找到主機B的過程?

          1、A先在自己的網絡中發送廣播,通過ARP協定。問所有的主機,誰知道10.0.0.3這個ip位址的主機是誰,同時把自己的主機ip位址和mac位址一起發送,主機B發現自己是10.0.03這個ip位址,就把自己的mac位址發回去

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

     問題二:分析從主機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位址和子網路遮罩給路由器,路由器就知道下一跳給誰,知道找到對應網段

     問題三:分析從主機A到主機E資料的形式。

        傳輸層(還沒講):講各個資料段劃分序号

        網絡層:加上ip位址

        資料鍊路層:加上mac位址和CRC檢測的FCS

        實體層:轉化為比特流傳輸

        集線器:隻認識實體層,用來轉發比特流

        交換機:能認識資料鍊路層,是以交換機有mac位址表,能夠記錄各種mac位址,下一次就能選擇性的轉發資料了

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