學習過ip中的人都知道,ip的作用就是在網絡通信中標識唯一一臺主機。那麼實際中,你購買了一個賬號,運行商給你分配一個ip,通過路由器爲什麼就可以供多人(多臺電腦)同時使用呢?這個時候不就和前面矛盾了嗎?
1.讓兩臺電腦之間通信:網線
想讓兩臺電腦之間通信,最簡單的方式就是用一根網線連接雙方即可。進行如下的配置:
- 如果兩臺電腦之間通過網線連接是可以直接通信的,但是需要提前設置好ip地址以及網絡掩碼
- 並且ip地址需要控制在同一網段內,例如 一臺爲
192.168.1.1
另一臺爲192.168.1.2
則可以進行通信- 使用ping命令測試是否連通,然後就可以基於windows網路共享等實現一些基礎網絡操作
2.如何讓三臺電腦之間通信:集線器
一般一臺電腦只有一個網線接口,如果我想讓三臺電腦互相通信呢,怎麼辦,那麼單獨通過網線就實現不了了?這個時候可以使用集線器(hub)。
如上,三臺或者多臺設備通過集線器連接起來,就是大家把網口的另一端都連接在集線器上即可。
- 當有多態電腦需要組成一個網時,那麼可以通過集線器(Hub)將其鏈接在一起,配置同一網段Ip.
- 一般情況下集線器的接口較少
- 集線器有個缺點,它以廣播的方式進行發送任何數據,即如果集線器接收到來自A電腦的數據本來是想轉發給B電腦,如果此時它還連接着另外兩臺電腦C、D,那麼它會把這個數據給每個電腦都發送一份,因此會導致網絡擁堵
- 使用ping命令測試是否連通,然後就可以基於windows網路共享等實現一些基礎網絡操作
3.如何讓三臺電腦之間通信(改進版):交換機
如上,通過交換機(switch)連接多臺設備,目前交換機已經基本替代了集線器。
- 克服了集線器以廣播發送數據的缺點,當需要廣播的時候發送廣播,當需要單播的時候又能夠以單播的方式進行發送。初始化添加網路時,會廣播形式發送arp獲取每個設備的mac地址,這樣再跟某個設備通信時會使用ip+mac的形式,非請求mac不會發送數據。
- 它已經替代了之前的集線器
- 企業中就是用交換機來完成多態電腦設備的鏈接成網絡的
4.如何讓三臺網絡電腦之間通信:路由器
如上通過交換機可以實現少量的電腦設備之間進行通信,但是如果是多臺電腦,且不再同一個地方,同一個網段,如何進行通信呢,顯然上面交換機已經不能滿足需求,那麼這裏就要用到了路由器router。路由器的核心就是鏈接多個不同網段的局域網成爲一個大的局域網。
如下圖,如果我們想讓同一個路由器連接的設備之間進行通信,是怎麼實現的呢?比如讓路由器左邊的局域網段的192.168.1.1(PC0)和路由器右邊的局域網段192.168.2.1(PC3)進行通信,那麼底層數據流轉的呢?
原理說明:
- 因爲PC0和PC3不在同一個網段,所以PC0首先把數據發送給默認網關(路由器Router0),這個時候目的Ip:192.168.2.1,目的mac:路由器左邊的虛擬網卡的mac地址。注意如果是首次聯網通信的話,PC0是不知道路由器左邊虛擬網卡的mac地址的,這個時候PC0就會先發送arp,得到其mac地址。
- 這個時候路由器根據目的IP網段解析,將數據發送給路由給右邊的虛擬網卡(即192.168.2網段的網關),路由器網關再根據目的ip進行解析,將數據發送給PC3。注意這個時候目的mac變成了192.168.2.1的mac地址。
- 注意在網絡傳輸中ip地址不變,但是目的mac是不斷變化的。這就好比你寄個東西從北京到上海,目的ip是上海不變的,但是中間可能會先送到mac山東,在從山東送到南京mac,在從南京送到上海mac。
5.網絡間設備通信與流轉過程
如上,在網路鏈路中進行通信,實際底層數據流轉如下:
- 在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地址。
- 當得到ip地址之後,瀏覽器以tcp的方式3次握手鍊接服務器,中間以上面路由的方式進行層層傳遞,當然這裏實際其實牽扯到路由路徑的選擇。
- 以tcp的方式發送http協議的請求數據發送給服務器
- 服務器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是指網絡地址轉換器
- 用寬帶鏈接上網時,會把網線(光纖)---->調製解調製(簡稱貓)------->電腦等設備直接連接上網
-
電腦會得到來自電信服務商的一個公網ip地址(切記只有公網ip地址才能上網)
-
爲了能夠讓多臺設備都可以上網,需要將數據進行“分流”網線(光纖)---->調製解調製(簡稱貓)------->路由器------>電腦等設備
- 此時路由器的一端有一個公網ip地址,剩下的幾個端口(或無線)可以接入電腦等設備,並且路由器給它們分配私有ip(例如 192.168.1.2)。
- 當一個電腦(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