背景
- 誰都知道 IP 地址是幹嘛的,但是它出現的前因後果你真的知道嗎?
- 我覺得很有必要重新複習下計算機網路基礎知識,實在太太太重要了
- 本篇文章素材均來自:https://www.bilibili.com/video/BV1DD4y127r4;這個 UP 感覺還是很不錯
- by the way:有時候學習一個知識點,官網的確是最準確的, 但一定不是通俗易懂的,藉助大神做的一些動態圖和類比場景,能更快吸收一個知識點
- 最佳學習方式:看一遍官方,看一遍別人做的學習視訊,再看一遍手動記錄乾貨,形成自己的知識體系
為什麼會出現 IP 地址
假設只有一臺電腦
- 所有資料就會儲存在這臺電腦的硬碟上,和其他電腦本身不存在任何干系
- 但一臺電腦能做的事情是非常少的,很可能會出現多臺電腦協同工作
假設有兩臺電腦
- 兩臺電腦協同工作,那肯定會出現資料互動的需求,那就需要用中間介質(比如 U 盤)來交換
- 這種方式既不是資料實時傳輸,也非常耗時耗力
線纜(網線)的出現
兩臺電腦之間可以通過網線來實時傳輸資料
但假設有很多臺電腦,那每兩臺電腦間都需要一條網線來連線,隨著裝置數量上升,需要的介面數量和線材數量也會越來越多,這是十分不合理的
交換機的出現
- 電腦和電腦之間的連線不再是點對點連線了
- 而是全部都接入交換機,由交換機去分發來自不同裝置的資料
交換機的型別
- 很多個介面的常規網路交換機
- 伺服器
- 家裡的路由器
交換機詳細介紹等後面的文章吧
非點對點連線的問題
- 點對點連線時,兩臺電腦互動資料的是通過對應介面的,所以資料一定會傳送到目標主機上
- 但是接入交換機之後,就不清楚資料傳送給哪個目標主機了
- 類比:網購發貨,沒有填清楚收件人的地址,所以無法精準送貨
數字虛擬地址
- 為了解決上述非點對點連線的問題,誕生了數字虛擬地址
- 電腦傳送資料的時候,帶上這個數字虛擬地址,就能知道目標主機是誰了
- 栗子:182.168.0.1 主機要傳送資料給 192.168.0.3 主機,就在資料的抬頭(包頭)上加上 192.168.0.1,這樣資料到達交換機後就能準確傳送給對應目標主機了
說明
- 此處採用的交換機是三層交換機,具有 DHCP 分配 IP 的功能
- MAC 地址為物理層面裝置識別
- 資料傳輸依賴 TCP/UDP
IP 地址來了
- 其實數字虛擬地址就是 IP 地址
- 類比:網購發貨的時候,傳送的物品就是資料,收件人地址可以理解為 IP 地址
區域網
每個電腦都擁有自己的 IP 以後,加上連線的交換機,就能組成一個小的可以用來交換資料的網路,這就是區域網
新加入一個區域網
需要把兩個區域網的交換機連線起來,組成一個更大的區域網
隨著時間的推移,可能需要連線的區域網也會越來越大,那麼區域網之間又會通過一個新的交換機來連線
廣域網
- 上面有說到,隨著區域網越來越多,這個網路也會變得越來越大,使用者只需要連線一個互動機可能就能訪問世界上絕大多數的裝置,這就是廣域網
- 廣域網就是一個裝置數量超級龐大的區域網
- 想要把世界各地的裝置連線起來並不容易
- 需要在多個重要城市架設骨幹伺服器,還要在不同區域佈置分支伺服器,然後讓大家接入
- 這需要大量的資金成本、後期維護
- 做這種吃力不討好活的就是 ISP(網際網路服務提供商),在中國有聯通、電信、移動
- 正需要資金成本和維護成本,所以你的手機流量和家用寬頻都是計費的
IPV 4
- 由 32 位二進位制數構成
- 理論上,可以提供 2^32 約 42.28 億 個地址
轉成十進位制
為了方便記憶和輸入,每 8 個二進位制數劃分為一組,然後轉換為十進位制數,變成常用的 4 個 0-255 數字
IP 地址的分類
一些地址有特殊的用途,所以被保留下來不允許被大眾使用,最後可能真正可用的 IP 地址只有 36.74 億個
全球 IPV4 地址不夠用
現在全球有75億個人,假設只有四分之一的人用網際網路,那麼也有 18 億人
但每個人的裝置數量可能有多個,比如手機+IPAD+電腦,如果都想要獨立的 IP 地址,那麼 IPV4 很明顯不夠用
IPV4 已經枯竭
- 2011 年底,打包分配的 IPV4 地址已經枯竭了
- 2020 年底,亞太網際網路資訊中心將釋出不出來一個新的地址
- 除非有人返還舊的地址
NAT 網路地址轉換
為了解決 IPV4 地址枯竭的問題,引入了 NAT 地址轉換
上圖
- 五臺電腦接入一個路由器
- 路由器接入廣域網的 IP 是 6.6.6.6
- 對於家用來說,路由器由於是接入廣域網並執行 NAT 的,所以路由器就是閘道器
傳輸場景,引入 NAT
- 假設電腦 A 需要訪問外部的 8.8.8.8 裝置
- 那麼就會將資料包傳送給路由器
- 路由器發現這個資料包是要傳送給 8.8.8.8 的,就會將 IP 對映成自己的 IP 6.6.6.6,並記錄成對映表
- 最後,8.8.8.8 裝置接收到的資料包的 IP 是 6.6.6.6
- 這樣五臺電腦傳送出去的資料包,都能通過路由器轉換為 6.6.6.6,以這個 IP 去傳輸資料
- 就能實現五臺裝置共用一個 IP
接收方也可以作為閘道器
這樣它下面就會連線了很多臺裝置,那它們也可以共用 8.8.8.8 這個 IP
存在問題
- 左側五臺裝置都是通過 6.6.6.6 來傳送資料包的,但是右側接收方並不知道傳送過來的資料包應該給哪臺裝置接收
- 而 8.8.8.8 的下行資料傳送到 6.6.6.6 之後,也不知道給五臺裝置中的哪一臺來接收
埠對映
為了解決上面存在的問題,引入了埠對映
具體表現方式
- 其實就是在 IP 後面加埠 6.6.6.6:8080
- 閘道器就會以不同的埠去和外網互動,然後把這些埠對映給區域網內的各個裝置
- 傳輸資料包的時候,除了 IP 地址需要對映為閘道器 IP 之外,還需要將埠對映為閘道器的埠
- 這樣就能實現共用一個 IP 還能精準傳送資料了(解決上面存在的問題),以實現 PAT 多對一對映了
其實就是因為 NAT 和埠對映的存在,才讓 IPV4 即使在不夠用的情況下還能堅持這麼久
公有 IP 和私有 IP
- 前面有說到 A、B、C、D、E 五臺裝置共同連線一個路由器,那麼這五個裝置就是寄宿在 6.6.6.6 閘道器下的私有 IP
- 閘道器所擁有的的可以直接用來在廣域網上互動資料的 6.6.6.6 就是公網IP
類比的栗子
- 比如你居住在一個名叫月亮灣的小區,具體地址是15號樓二單元101
- 假設全球只有一個小區叫這個名,那麼只要別人提起月亮灣就知道是哪個月亮灣了,這種能直接通過地址訪問,可以拿到大的層面上直接使用的地址就是公網 IP
- 而小區內部其實就是區域網,你只要在小區內說是15號樓二單元101的,別人就知道你在哪
- 假設隔壁小區也有15號樓二單元101,隔壁的隔壁小區也有15號樓二單元101,寄快遞的時候只寫15號樓二單元101不寫月亮灣,那麼快遞肯定不知道寄去哪裡
- 像這種只能在小區內(區域網內)使用的 IP 就是私有 IP,它只有連同一個區域網的其他裝置才會知道
IPV 6
能支援 3.4 * 10^ 38 個 IPV6 地址,這應該是多少億億億個了吧...給每個生物分配一個都夠用了
數字0-9,大寫字母A-F
ipv4 和 ipv6 是兩個完全不同的兩個協議
- 它們之間不能直接互通,必須要藉助其他的裝置去做轉換和對映
- 導致在短時間內,IPV6 替換 IPV4 是很困難的
會持續更新知識點