網絡通信原理:爲什麼一個IP賬號通過路由器可供多人同時使用?

        學習過ip中的人都知道,ip的作用就是在網絡通信中標識唯一一臺主機。那麼實際中,你購買了一個賬號,運行商給你分配一個ip,通過路由器爲什麼就可以供多人(多臺電腦)同時使用呢?這個時候不就和前面矛盾了嗎?

1.讓兩臺電腦之間通信:網線

想讓兩臺電腦之間通信,最簡單的方式就是用一根網線連接雙方即可。進行如下的配置:

  1. 如果兩臺電腦之間通過網線連接是可以直接通信的,但是需要提前設置好ip地址以及網絡掩碼
  2. 並且ip地址需要控制在同一網段內,例如 一臺爲192.168.1.1另一臺爲192.168.1.2則可以進行通信
  3. 使用ping命令測試是否連通,然後就可以基於windows網路共享等實現一些基礎網絡操作

2.如何讓三臺電腦之間通信:集線器

一般一臺電腦只有一個網線接口,如果我想讓三臺電腦互相通信呢,怎麼辦,那麼單獨通過網線就實現不了了?這個時候可以使用集線器(hub)。

如上,三臺或者多臺設備通過集線器連接起來,就是大家把網口的另一端都連接在集線器上即可。

  1. 當有多態電腦需要組成一個網時,那麼可以通過集線器(Hub)將其鏈接在一起,配置同一網段Ip.
  2. 一般情況下集線器的接口較少
  3. 集線器有個缺點,它以廣播的方式進行發送任何數據,即如果集線器接收到來自A電腦的數據本來是想轉發給B電腦,如果此時它還連接着另外兩臺電腦C、D,那麼它會把這個數據給每個電腦都發送一份,因此會導致網絡擁堵
  4. 使用ping命令測試是否連通,然後就可以基於windows網路共享等實現一些基礎網絡操作

3.如何讓三臺電腦之間通信(改進版):交換機

如上,通過交換機(switch)連接多臺設備,目前交換機已經基本替代了集線器。

  1. 克服了集線器以廣播發送數據的缺點,當需要廣播的時候發送廣播,當需要單播的時候又能夠以單播的方式進行發送。初始化添加網路時,會廣播形式發送arp獲取每個設備的mac地址,這樣再跟某個設備通信時會使用ip+mac的形式,非請求mac不會發送數據。
  2. 它已經替代了之前的集線器
  3. 企業中就是用交換機來完成多態電腦設備的鏈接成網絡的

4.如何讓三臺網絡電腦之間通信:路由器

      如上通過交換機可以實現少量的電腦設備之間進行通信,但是如果是多臺電腦,且不再同一個地方,同一個網段,如何進行通信呢,顯然上面交換機已經不能滿足需求,那麼這裏就要用到了路由器router。路由器的核心就是鏈接多個不同網段的局域網成爲一個大的局域網。

如下圖,如果我們想讓同一個路由器連接的設備之間進行通信,是怎麼實現的呢?比如讓路由器左邊的局域網段的192.168.1.1(PC0)和路由器右邊的局域網段192.168.2.1(PC3)進行通信,那麼底層數據流轉的呢?

原理說明:

  1. 因爲PC0和PC3不在同一個網段,所以PC0首先把數據發送給默認網關(路由器Router0),這個時候目的Ip:192.168.2.1,目的mac:路由器左邊的虛擬網卡的mac地址。注意如果是首次聯網通信的話,PC0是不知道路由器左邊虛擬網卡的mac地址的,這個時候PC0就會先發送arp,得到其mac地址。
  2. 這個時候路由器根據目的IP網段解析,將數據發送給路由給右邊的虛擬網卡(即192.168.2網段的網關),路由器網關再根據目的ip進行解析,將數據發送給PC3。注意這個時候目的mac變成了192.168.2.1的mac地址。
  3. 注意在網絡傳輸中ip地址不變,但是目的mac是不斷變化的。這就好比你寄個東西從北京到上海,目的ip是上海不變的,但是中間可能會先送到mac山東,在從山東送到南京mac,在從南京送到上海mac。

5.網絡間設備通信與流轉過程

如上,在網路鏈路中進行通信,實際底層數據流轉如下:

  1. 在PC0的瀏覽器中輸入一個網址比如www.baidu.com時,需要將它先解析出ip地址來,具體如何解析,去哪裏解析,這個時候要看你電腦配置DNS服務器,所以PC0先將網址發送給對應的DNS服務器進行解析
    其實在我們電腦C:\Windows\System32\drivers\etc目錄下有個Hosts文件,其主要作用是定義IP地址和主機名的映射關係,是一個映射IP地址和主機名的規定。當用戶在瀏覽器中輸入一個需要登錄的網址時,系統會首先自動從Hosts文件中尋找對應的IP地址,一旦找到,瀏覽器會立即打開對應網頁,如果沒有找到,則瀏覽器會將網址提交DNS服務器進行IP地址解析。這也是提高快速打開網頁的方法,所以可以將常見ip和網址映射寫入到hosts文件裏!
    如下,注意我麼使用的是聯通的寬帶,默認的DNS服務器地址和默認的網關地址一樣,當然這裏我們也可以自定義DNS服務器地址,比如8.8.8.8是一個是Google提供的免費DNS服務器的IP地址,也可以配置多個DNS地址。

         

  1.   當得到ip地址之後,瀏覽器以tcp的方式3次握手鍊接服務器,中間以上面路由的方式進行層層傳遞,當然這裏實際其實牽扯到路由路徑的選擇。
  2. 以tcp的方式發送http協議的請求數據發送給服務器
  3. 服務器tcp的方式迴應http協議的應答數據給瀏覽器

尖叫提示1:

  • MAC地址:在設備與設備之間數據通信時用來標記收發雙方(網卡的序列號)
  • IP地址:在邏輯上標記一臺電腦,用來指引數據包的收發方向(相當於電腦的序列號)
  • 網絡掩碼:用來區分ip地址的網絡號和主機號
  • 默認網關:當需要發送的數據包的目的ip不在本網段內時,就會發送給默認的一臺電腦,成爲網關
  • 集線器:已過時,用來連接多態電腦,缺點:每次收發數據都進行廣播,網絡會變的擁堵
  • 交換機:集線器的升級版,有學習功能知道需要發送給哪臺設備,根據需要進行單播、廣播
  • 路由器:連接多個不同的網段,讓他們之間可以進行收發數據,每次收到數據後,ip不變,但是MAC地址會變化
  • DNS:用來解析出IP(類似電話簿)
  • http服務器:提供瀏覽器能夠訪問到的數據

      注意如上,比如我從北京請求登錄美國網站,首先我在瀏覽器輸入網址,比如https://github.com。這個時候通過DNS解析到了github對應的IP。那麼爲什麼我有了github的ip以後路由器就會自動把我的請求發送給“美國”對應的路由器與服務器呢?

       因爲以IPV4來說,NIC給全球每個國家,每個城市的分配得到的公網IP段是確定的,所以比如我訪問github,使用ping命令,查看該網站的ip是13.229.188.59的歸屬地是新加坡(可能因爲github將全亞洲的所有請求都發送到了新加坡的github服務器處理,具體是根據亞洲的ip網段判斷)。

       所以同理路由器就可以根據每個國家,每個城市的的公網IP段將目的ip的請求發送給對應國家與城市的路由器去處理,最終請求到達一個具體的設備。

6.路由器如何實現共享同一個ip上網原理:NAT

 

尖叫提示:所謂的NAT是指網絡地址轉換器

  1. 用寬帶鏈接上網時,會把網線(光纖)---->調製解調製(簡稱貓)------->電腦等設備直接連接上網
  2. 電腦會得到來自電信服務商的一個公網ip地址(切記只有公網ip地址才能上網)

  3. 爲了能夠讓多臺設備都可以上網,需要將數據進行“分流”網線(光纖)---->調製解調製(簡稱貓)------->路由器------>電腦等設備

  4. 此時路由器的一端有一個公網ip地址,剩下的幾個端口(或無線)可以接入電腦等設備,並且路由器給它們分配私有ip(例如 192.168.1.2)。
  5. 當一個電腦(192.168.1.2)上網時,先通過DNS協議解析出某個域名對應的ip,然後
    • 發送數據時,在經過路由器時轉換爲公網ip以及路由器自己分配的臨時端口

               192.168.1.2:6789----->192.168.1.1 路由器 116.226.52.212:6539------->貓---->萬維網

    • 接收數據時,在經過路由器時轉換爲路由器之前記錄的ip以及port

            萬維網------->貓----->116.226.52.212:6539 路由器 192.168.1.1 ---->192.168.1.2:6789

 

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