背景
- 誰都知道 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 是很困難的
會持續更新知識點
