計算機網絡基礎2

上一篇文章,咱們順着計算機網絡的發展,一直談到了爲什麼計算機網絡應該有路由和IP地址,接下來咱們接着上一篇繼續往下講segmentfault

路由&&IP

上一篇,咱們談到了交換機沒有辦法解決廣播風暴的問題,因此咱們在MAC地址的基礎上增長了一個邏輯地址,即IP地址.引入了IP地址以後,全部的通訊都要靠IP地址而且,多個廣播域之間使用路由器鏈接,這個網絡變成下面的樣子.網絡

圖片描述

這樣子.一個大的廣播域被路由器分割成多個小的廣播域.如今兩臺主機之間的通訊根據通訊雙方是否在同一個網段中分紅了兩種狀況.spa

主機在同一個網段中

通訊主機在同一個網段中,也就意味着通訊不通過路由器就能夠完成,通訊形式跟在交換機中通訊差很少,可是因爲接收方只知道接收方IP地址.沒有MAC地址,發送發沒有辦法把數據發送給接收方.因此整個通訊過程增長了一個步驟.計算機網絡

  • 主機A經過接收方B的IP地址發現接收方跟本身在同一個網段內,可是它只知道接收方的IP地址,不知道MAC地址,因此沒有辦法發送數據.code

  • 因而主機A發起了一個廣播詢問IP地址爲XX的主機的MAC地址是多少htm

  • 其餘主機收到這個廣播以後,跟本身的IP地址比對,發現本身的IP地址正是XX,因而就把本身的MAC地址發送給A.blog

  • A知道了接收方的MAC地址以後,就能夠根據MAC地址向對方主機發送數據.接口

上面的通訊過程,A知道接收方的地址,可是不知道對方的MAC地址,因而發起了一個廣播來詢問.這種經過目標的IP地址來得到對方的MAC地址的過程稱爲地址解析協議(ARP).圖片

主機在不一樣網段中

通訊主機在不一樣的網段中,這就意味着兩臺主機通訊得通過路由器. 如此,通訊過程就變成了下面這樣:ip

  • 主機A經過接收方X的ip地址發現,接收方跟本身不在同一個網段中.因而直接把數據報文發送給路由器的端口R1

  • 可是,A只知道路由器接口R1的ip地址,不知道MAC地址(這個時候A跟R1的通訊仍是在同一個網段中).因此主機A經過ARP協議獲取到了R1的MAC地址,而後把數據報文發送給路由器的接口R1

  • 路由器收到數據報文以後,獲得接收方的IP地址.判斷出接收方IP地址所在的網段,分析出能夠經過R2接口能夠到達這個網段,因而經過接口R2發送數據

  • 接口R2知道接收方X的IP地址,可是同網段內通訊要靠MAC地址,因此R2經過ARP協議獲取到了X的MAC地址, 而後把數據發送給X.

根據上面的過程,咱們明白IP地址在整個通訊中作了兩件事:

  1. 用來判斷通訊雙方是否在同一個網段中

  2. 根據IP地址肯定對方的MAC地址,而後才能發送數據.

如今回顧一下上面的通訊過程,仍然存在着三個疑點:

  1. 路由器中R1跟R2的MAC地址同樣麼?

  2. 路由器怎麼知道怎麼經過接收方的地址判斷出接收方在哪一個網段上

  3. 爲何主機A判斷主機B跟本身不在同一個網段上,就會把數據發送給路由.

  4. 主機A爲何經過IP地址就能夠肯定接收方跟本身是否在同一個網段上

一個一個來回答這些問題:

路由器中R1跟R2的MAC地址同樣麼?

這個問題的本質是問路由器是否有多個MAC地址.咱們這裏以家用路由器爲例,通常路由器會有兩個MAC地址.家裏用的無線路由器通常會分有LAN(局域網)和WAN(廣域網)兩種接口.這兩種接口分別各自對應一個MAC地址.

並且,你會發現你家無線路由器會有多個LAN接口,可是WAN接口就一個,其中

  • WAN接口接的網線是從運行商那裏接過來的網線,這個網線通向了整個互聯網世界~

  • 多個LAN接口是用於鏈接你家多臺電腦設備的.

因此,你發現,若是WAN口沒有接網線,你家多臺電腦也能夠經過鏈接LAN互相通訊.

路由器怎麼知道怎麼經過接收方的地址判斷出接收方在哪一個網段上

跟交換機/網橋相似,路由器內部也維護了一張表,稱爲路由表,歸納的講,這張表就記錄了,這張表記錄了哪一個網段應該通向哪一個接口.因此當路由器獲得接收方的地址以後,經過接收方的ip地址比對路由表,就能夠肯定這些數據包應該發往哪裏.

爲何主機A判斷主機B跟本身不在同一個網段上,就會把數據發送給路由.

這裏要引出一個網關的概念,注意,網關並非一種網絡設備,而是一個概念.可是因爲歷史緣由, 不少時候會把網關稱爲路由器.除了網關,還有一個默認網關的東西,咱們這個問題的答案就是默認網關,當A發現B跟主機不在同一個網絡上,因此他沒有辦法把數據直接發送給B,因而查找一下本身系統裏面配置了一個默認網關地址,而後就直接把數據發送給了這個地址.

經過上面的描述能夠知道:主機A配置的默認網關地址就是路由器的地址,當發現接收方不在同一個網絡裏,主機A不知道要把數據發送到哪裏,就把數據發送給了路由器.由於主機A裏面配置的默認網關地址就是路由器的IP地址.

數據發送給路由器以後,路由器經過路由表查找接收方IP所在的網段,若是正好路由表裏面也沒有記錄這個IP所在 網段的信息,路由器也會查找本身的默認官網,而後把數據發送給這個網關.

上面的描述,咱們能夠得出一個結論,一臺主機的默認網關確定和這臺主機在同一個網段中,由於主機必需要可以發送數據給默認網關.

最後一個問題

主機A爲何經過IP地址就能夠肯定接收方跟本身是否在同一個網段上

這個問題,須要展開IP地址的講解,關於IP地址的內容比較多,獨立出一個話題來說.

IP地址

你確定很熟悉IP地址,可是不必定系統的瞭解過.你會常常看到相似192.168.1.1的字樣就是IP地址.可是其實這只是簡寫,每一個被.分割的每一個部分實際上是一個字節(8bit)的二進制數.爲了人類能夠比較容易的讀懂IP地址,因此通常寫的時候都是使用人類友好的十進制.192.168.1.1的真正面目應該是 : 11000000.10101000.00000001.00000001因此你明白了IP地址中不可能出現大於255的數值,由於8bit能表示的最大的值就是255.

一個IPv4地址被分爲網絡地址和本地地址:

  • 網絡地址用來表示不一樣網絡的

  • 本地地址用來表示同一個網絡中的主機.

那麼如何劃分一個IP的網絡部分和主機部分呢,這就要引入一個新的東西:子網掩碼,你能夠常常看到的:255.255.255.0就是一個子網掩碼.

把一個IP地址與子網掩碼按照二進制的數值進行與運算就能夠得出網絡地址.

好比:IP地址爲:192.168.1.1的主機A,子網掩碼爲:255.255.255.0,那麼11000000.10101000.00000001.00000001 & 11111111 11111111 11111111 00000000 = 192.168.1.0,即網絡地址爲192.168.1.0,那麼只要有另外一個主機B的IP地址爲192.168.1.X(0<X<255)那麼這AB這兩臺主機就在同一個網絡,互相通訊不用通過路由器.有時候,你也會看到這樣子的寫法192.168.1.1/24像這種寫法就是192.168.1.1/255.255.255.0的簡寫,後面使用24表示的就是前面24位爲網絡位,即子網掩碼爲255.255.255.0

可是啊,IP地址不止這麼簡單,雖然IPv4地址一共有:2^32個,可是也不是全部地址均可以隨隨便便用的,你想一想你一臺主機搞個1.1.1.1的地址,別人也搞個1.1.1.1的地址,那就有問題了,因此有一個機構ICANN專門來管理IP地址的分配使用.這個機構把IP地址進行了分類,也就是你可能聽過的A類,B類,C類地址,這裏對這種劃分作一個詳細的分析.

A類地址:

  • 網絡位爲8位,即A類地址的子網掩碼爲255.0.0.0

  • 如今單獨對網絡位的8位再進行劃分,首位爲0,後續的7位能夠從0 000 0001 ~ 0 111 1111變化,即A類地址位於1~127

  • 可是以127開頭的地址劃分爲內部迴環地址,不能使用,因此A類地址一共有 2^7-1 = 126個.

  • 每一個網絡能夠容乃的主機位 2^24個,可是主機位全0的位網絡地址,主機位爲1的爲廣播地址.因此真正能夠容乃的主機爲2^24-2

通俗的解釋一下上面的意思 :

  • 主機A的地址爲:58.1.2.3/8,前面58位於1~127之間,因此這是一個A類地址.

  • 跟主機A位於同一個網絡中的IP地址有 : 58.0.0.1 ~ 58.255.255.254,一共有 2^24-2個

  • 上面的範圍不包括:58.0.0.0跟58.255.255.255兩個地址,由於58.0.0.0是網絡地址,58.255.255.255是廣播地址.

  • A地址若是向58.255.255.255發送數據,那麼IP地址介於 : 58.0.0.1 ~ 58.255.255.254的主機均可以收到這個數據

B類地址

B類地址的劃分方式跟A類地址同樣,只是在數據上有差別 :

  • 網絡位爲16位,即默認子網掩碼爲255.255.0.0

  • 對網絡位的前8位再進行劃分,規定前面的2位必須爲10,即10 00 0000 ~ 10 11 1111,即B類地址位於128~191之間

  • 每一個網絡能夠容乃的主機數位 2^16-2個

C類地址

  • 網絡位爲24位,即默認子網掩碼爲255.255.255.0

  • 對網絡位的前8位再進行劃分,規定前面的2位必須爲10,即110 0 0000 ~ 100 1 1111,即B類地址位於192~223之間

  • 每一個網絡能夠容乃的主機數位 2^8-2個

來一道計算機網絡考試中必考的題目 : 主機IP爲192.168.1.1/24,請問該網絡的網絡地址是多少,能夠容納多少主機?若是你清楚了上面的過程,能夠很容易的得出網絡地址爲192.168.1.0,能夠容納的主機數位:2^8-2.

子網劃分

咱們發現A類網,一個網絡中就有2^24-2個網絡,這些網絡地址處於同一個廣播域中,顯然這是不合理的,並且,不多有機構可以有那麼多主機來充分使用這些IP地址,因此.一般狀況下,咱們須要對這個大的網絡進行子網劃分.

所謂子網劃分就是把一個大的網絡劃分紅多個小的網絡,每一個網絡之間使用路由器來分割.咱們使用一個例子來講明.

有一個C類地址:200.1.2.0/24.當前狀況下,這個網絡有 2^8-2 = 62個IP地址.如今但願把這個網絡劃分紅兩個網絡.

劃分子網的主要作法是:從200.1.2.0中的主機位拿出來若干位當作網絡位.具體拿幾位根據主機數而定.這裏假設拿出2位充當網絡位

圖片描述

那麼就有00,01,10,11四種可能,可是儘可能不去使用00,11的地址,因此如今咱們還能夠劃分紅2個子網.

  • 第1個子網IP地址的最後8位:0100 0001 ~ 1011 1110

  • 第2個子網IP地址的最後8位 :1000 0001 ~ 0111 1110

這樣子:

  • 第一個子網的IP地址爲:200.1.2.65/26 ~ 200.1.2.126/26

  • 第二個子網的IP地址爲:200.1.2.129/26 ~ 200.1.0.190/26.

私有IP

考慮一下對於一個公司而言,不少時候須要本身內部進行通訊,可是又不想鏈接到互聯網,由於可能形成機密泄露.因此ICANN在分配地址的時候就劃分出了一些私有地址,其中規定:

  • A類地址中 10.0.0.0/8~10.255.255.255/8的地址爲私有地址

  • B類地址中 172.16.0.0/16 ~ 172.31.0.0/16爲私有地址

  • C類地址中 192.168.0.0/24 ~ 192.168.255.0/24位私有地址

什麼是私有地址?就是任何人均可以本身組建一個局域網使用這些IP地址,可是不可以 把這些IP拿到公網(即互聯網)中使用.並且,路由器碰到這些IP也不會轉發.因此你會很常常看到192.168.X.X的IP地址,就是由於當前你是處於某一個局域網中.可是你可能就疑惑了雖然你的電腦的IP地址爲192.168.X.X,可是你仍然能夠上網.這是由於有一個協議:地址轉換協議(NAT).

這個協議大概的做用就是,把私有地址映射到共有網絡,典型例子爲多臺私有地址主機鏈接到一臺具備公有IP的路由器(這個路由器應當具備NAT功能), 全部須要跟外網通訊的主機都經過這臺路由器,這臺路由器會把私有地址轉換成公有地址,這樣子局域網的主機就能夠訪問互聯網.

可是,這個協議很尷尬 ,由於他的出現破壞了如今互聯網環境, 可是因爲如今IPv4地址短缺,這個方法又能夠有效的緩解Ipv4地址短缺的現狀.因此預計在IPv6時代,這個協議就會被時代淘汰掉.

尾巴

到這裏,按理咱們應該開始講七層模型,可是後續的章節不會繼續寫了,由於計算機網絡是一門很深的學科,不是在網上找幾篇文章就能領悟的,計算機網絡做爲計算機必修的學科,理應值得花一些時間買上一本好書認真看看.

然而,我爲何寫這兩篇博客,由於我發現書中的內容不少事時候沒有跟生活聯繫起來,或多或少咱們在用電腦的時候都瞭解過一點路由器,IP地址,網關之類的,可是我在生活中碰到的問題,老是沒有辦法經過書中的知識來解決,總有一種知識跟真實狀況鏈接不上的無奈感.這兩篇就是但願你看完這些以後,懂得了你家網絡出現問題究竟是哪裏出現問題?你家電腦網絡配置的每一項是用來幹嗎的?當你瞭解了上面的那些以後,你再去翻閱計算機網絡的書籍,就會感受熟悉不少.

相關文章
相關標籤/搜索