为什么我们家里的 IP 都是 192.168 开头的
是的,還是我小白,什么技術博主,老情感博主了。
來講個故事。
資深老舔狗小張今天很興奮,說什么也要請大家喝奶茶。
因為他說他感覺要跟喜歡的女生小呂修成正果了。
一問為什么。
他耳朵都紅了,說 "我覺得小呂在暗示我了,她說她喜歡看阿凡達,正好我長得就像阿凡達"。
聽了讓人皺眉。
他繼續說:"她說她喜歡射手座,正好我就是"
我撓撓頭:"行,別說了,懂了。她住上海,你也住上海,你兩算是同居了"
他愣了一會,看了看我:"別說這種舔狗話,但你說的其實有點道理,上次她讓我幫她修電腦,我發現她家的 ip 是 192.168.xx.xx,巧了,我家的也是,我懷疑我們住的很近"。
很感動。
我甚至沒敢告訴他,我家里的 IP 也是 192.168 開頭的,我猜你家的也是,就現在正在看這篇文章的你。
但問題就來了,為什么大家的 IP 都是 192.168.xx.xx?
我們今天來聊下這個話題。
IP 地址是什么
我們知道,網絡通訊的本質就是收發數據包。如果說收發數據包就跟收發快遞一樣。那 IP 地址就類似于快遞上填的收件地址和發件地址一樣,有了它,路由器就可以開始充當快遞員的角色,在這個紛繁復雜的網絡世界里找到該由誰來接收這個數據包。
由于我們現在主流的還是 IPV4 地址,所以默認以 IPV4 為例進行講解。
這個 IP 大概長這樣。
在控制臺里執行 ifconfig就能看到。inet 邊上的192.168.31.170就是 IP 地址。
$ifconfig en0:flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST>mtu1500 options=400<CHANNEL_IO> ether88:36:3d:33:a0:15 inet6fe70::1009:aabf:ecc6:2d10%en0prefixlen64securedscopeid0x6 inet192.168.31.170netmask0xffffff00broadcast192.168.31.255 nd6options=201<PERFORMNUD,DAD> media:autoselect status:active
說白了,它就是個特殊點的編號,用于在互聯網中唯一定位到某臺機子。
為了表示這個編號,IP 地址一共分為 4 個字節,一個字節 8 位,共 32 位,能用來表示最多2 ^32,也就是42 億個地址。
貌似。。。有點少?
2021 年全球就有 78 億,今年更是突破了 80 億,也就是說人均一個 IP 都做不到。
為此好多年前,就在說 IPV4 地址不夠用,要耗盡了,于是才會有后來的 IPV6 地址。
IPv6 用了更多的字節數,因此能表示更多的地址。大概長這樣。
是不是很陌生,感覺沒怎么見過。
這就對了。
大家有沒有發現,用了這么多年,大部分人其實還在用 IPV4 地址,不是說要耗盡了嗎?
為什么大家還一直在用 IPV4?
先別急,我們再聊個前置知識點,IP 地址的分類。
IP 地址的分類
為了更好的管理這 42 億個 IP 地址的用途。我們應該也在教科書上看過這樣一張 IP 分類的圖。
大概的意思是 32 位地址里,開頭為 0 的,那就是 A 類地址。開頭為 10 的,就是 B 類,開頭為 110 的,就是 C 類。在這之后,把剩下的字節數拆成兩段,一段表示網絡號,另一短表示主機號。
網絡號和主機號的關系,就像是某個停車場編號和停車位號的關系。一個城市里有很多停車場,而停車場里又有很多個停車位。每個停車位可以停一輛車,這里的一輛車,其實就是一臺電腦(主機)。
大型停車場少,但是能停的車巨多,對應 A 類地址的網絡號少,但是主機號多。
小型停車場到處都是,但是一般能停的車就少,對應 C 類地址的網絡號多,但主機號少。
大佬們一開始這么劃分網絡,其實也是為了方便管理,比如 A 類地址,是給大型組織機構用的,主機地址的位數高達 1600w+,C 類地址是給小公司用的,主機號只有 200+。
這個差距就有點懸殊了,放在今天就不太合理了,我開個網吧可能都不止 200 臺機子對吧,用 C 類嫌主機號少,用 A 類又嫌主機號太多。因此現在這套分類機制其實已經很少用了。
取而代之的是方案是,將所謂的 ABC 分類直接取消,只保留網絡號和主機號,并且網絡號的位數也不像以前限制的那么死,用一個斜杠告訴用戶多少位是網絡號,其余的都是主機號。比如172.20.61.69/20,那網絡號的位數就是 20 位,主機號的位數是 32-20=12 位,能放 4096 臺機子,很靈活,很夠用。
這就是,所謂的 CIDR,(Classless Inter-Domain Routing,無類別域間路由)。
IP 地址不夠用了嗎?
但不管你怎么去分類,在 32 位下的限制下,你就算玩得再花,只要將 A 類 + B 類 + C 類 + X 類加起來,IP 的個數也最多還是 42 億個。還是不夠用。
那既然加法不行,那我們就用乘法。
啥意思?
42 億這個數字對大家來說太大了,為了方便理解,我們改成 6 個 IP。
假設將 6 拆成 4+2,再讓 4 乘以 2,那結果 8 肯定大于 6。
一開始,我們理解的網絡世界只有一層,每人一個 IP,那就只有 6 個人能上網。
現在我們將網絡分成兩層。像下面這樣。
每 2 個人構成一個 " 小網絡 ",對外共用一個 IP,而內部每個人的 IP 都不一樣,4 個小網絡共同構成一個 " 大網絡 "。比如小明的電腦是 1 號網絡下的 6 號機子,小紅的電腦是 2 號網絡下的 6 號機子。這樣也能做到唯一標識某臺機子的效果。
像上面這樣,每個 2 人構成的小網絡,就叫做局域網,也就是所謂的內網,用的 IP(上面的 5,6)也叫私有 IP 或內網 IP,而上面提到的 "大網絡",則是廣域網,用的 IP 則被稱為公有 IP 或公網 IP。
通過這種方式,原本只能讓 6 人上網,現在卻能讓 8 人同時上網。這還是 IP 只有 6 個的情況下,如果讓數字變回 42 億,那就能支持遠大于 42 億的機子上網了。
按照這樣的思路,回到上面的 ABC 類 IP 地址,大佬們也將它們分成了私有和公有兩部分。
在 rfc1918 文檔中定義了私有地址的范圍。它們不會出現在廣域網中,只會出現在局域網內。
*A類地址:10.0.0.0--10.255.255.255 *B類地址:172.16.0.0--172.31.255.255 *C類地址:192.168.0.0--192.168.255.255
這時候,你再看看 C 類里的私有地址范圍,眼熟不?
192.168.xx.xx 就是這網段內的其中一個 IP 地址。這個范圍里大概有 6w + 個主機號,什么家庭條件能用得完?
于是,就變成了一條街或者一個小區,又或者小區內的幾幢樓共用一個公網 IP,而內部就用 192.168.xx.xx 這樣的內網 IP。所以只要你在家,大概率會發現你的 IP 地址是 C 類的 192.168.xx.xx。
但其實只要你想,A 類和 B 類的私有地址也是可以用在局域網里的。
你到了公司里執行下 ifconfig 命令,你很可能會發現你的局域網 IP 就不是 192.168 開頭的了,而是 172 或者 10 開頭的。
這是因為在公司內網里,需要的 IP 數量會更大,172 和 10 開頭的 IP 能表示的主機更多,比如 10 開頭的能表示 1600w + 個。
就不說別的,光 A 類地址,只拿了個 10 開頭的網絡號出來當內網 IP 就能表示 1600w + 個主機號,其余的 100 + 個 A 類網絡號都拿來當公網地址。按上面提到算法去進行個相乘,公網 IP 數 * 內網 IP 數 = (100+ * 1600w) * 1600w,你也別管我算的對不對,反正就是能提供給好多設備使用,更別說還有 B 類和 C 類的還沒算呢。
而且上面只考慮了一層局域網,其實局域網內還能再分成多層,局域網內再嵌套局域網。就像下面這樣,這樣能用的 IP 數量就更多了。
所以說,IP 地址雖然不多,但其實完全夠用,這也是我們一直以來遲遲不切換成 IPv6 的原因。夠用,能跑,為什么要換?
聊到這里,其實就回答了文章標題的問題,為什么大家的 IP 都是 192.168 開頭的,是因為 IPv4 地址有限,為了有效利用這些有限的地址,我們可以將網絡分為局域網和廣域網,將 IP 分為了私有 IP 和公網 IP,一個局域網里的 N 多臺機器都可以共用一個廣域網 IP,從而達到了 "做乘法" 的效果,大大增加了 "可用 IP 數量",小區里幾幢樓可以共用一個公網 IP,且因為設備數量不多,一般選用 C 類的私有地址,也就是 192.168 開頭的地址。
但問題就來了,怎么知道我的公網 IP 地址是什么?
查詢自己的公網 IP 地址
在家里的電腦上,通過 ifconfig,你能拿到自己的內網 IP 地址,比如我的就是 192.168.31.170。
$ifconfig en0:flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST>mtu1500 options=400<CHANNEL_IO> ether88:36:3d:33:a0:15 inet6fe70::1009:aabf:ecc6:2d10%en0prefixlen64securedscopeid0x6 inet192.168.31.170netmask0xffffff00broadcast192.168.31.255 nd6options=201<PERFORMNUD,DAD> media:autoselect status:active
但如果你想知道你的公網 IP 地址的話,該怎么做呢?
有個簡單的方法。你直接在 baidu 上搜索 " 我的 IP 地址 ",就能看到你的公網 IP 地址。
別去 ping 這個地址,這個圖被我 p 過。
如果你用的是某里云的機子。你也會發現你的機子既有私有 IP 地址,也有一個公有 IP 地址。
某里云可以同時分配公有和私有 IP
也是 p 的圖。
當你去 ping 上面的私有地址 172.21.56.59 時,你會發現它根本 ping 不通。
$ping172.21.56.59 PING172.21.56.59(172.21.56.59):56databytes Requesttimeoutforicmp_seq0 Requesttimeoutforicmp_seq1 Requesttimeoutforicmp_seq2 ^C ---172.21.56.59pingstatistics--- 4packetstransmitted,0packetsreceived,100.0%packetloss
而公網地址 46.101.121.11 卻可以 ping 通。也就是說,在你家的局域網里,你只能通過公網 IP 地址去訪問這臺云服務器。
$ping46.101.121.11 PING46.101.121.11(46.101.121.11):56databytes 64bytesfrom46.101.121.11:icmp_seq=0ttl=48time=273.481ms 64bytesfrom46.101.121.11:icmp_seq=1ttl=48time=268.018ms 64bytesfrom46.101.121.11:icmp_seq=2ttl=48time=266.606ms ^C ---46.101.121.11pingstatistics--- 3packetstransmitted,3packetsreceived,0.0%packetloss
這時候,用過他們家服務器的人可能會有個疑問。
只要申請一臺云服務,某里云就能給你一個公網 IP 地址,怎么做到的?
這。。。這么富的嗎?
其實,某里云跟管 IP 的機構,租用了的一批 IP 地址,在你需要的時候,就能付費租給你,不用了也能回收分配給其他人。
而且公網 IP 地址下面,其實也可以掛多臺云服務器,用上文提到的方式,讓多臺云服務器共用一個 IP。
因此不太需要擔心 IP 耗盡的問題。
總結
?IP 地址就像快遞里填的送件和收件地址,是一串編號,用于在紛繁復雜的網絡世界中標識你的位置。
?IPv4 有 32 位,最多能表示 42 億個 IP 地址。為了更好的管理它們,教科書上出現過 ABC 這樣的分類方式,并且在 ABC 類里還分為私有地址和公有地址。但目前流行使用 CIDR 的方式進行分類。
?為了表示更多主機,我們可以將網絡分為廣域網和局域網,廣域網用公有地址,局域網使用私有地址。將公有地址乘上私有地址,就能表示遠大于 42 億臺的機子。
?家庭網絡較小,往往小區內幾幢樓構成一個局域網,這幾幢樓共用一個公有 IP 地址。局域網內選擇了 C 類的私有地址,也就是 192.168.xx 開頭的 ip,所以你會發現我們家里的 IP 基本上都是 192.168 開頭的。
?在 baidu 上搜索 " 我的 IP 地址 ",就能看到你的公網 IP 地址。
差不多了,給大家留個問題吧
上面提到,網絡分為廣域網和局域網,IP 分為公有和私有。一個局域網內所有機子對外使用一個公有 IP,對內則使用私有 IP。
那么問題來了,公網里不使用私有 IP,一個局域網里的私有 IP 想訪問局域網外的公有 IP,必然要做個 IP 轉換,這是在哪里做的轉換呢?
最后
我在寫文章的時候,遇到個小彩蛋。
當我在 baidu 搜索的網頁里,用 F12 打開瀏覽器的控制臺時。
看到了下面這么一段話。發現是個招聘推廣文,想想也是,會開控制臺看的基本上都是跟程序員沾邊的人,這波是精準引流了。
招聘宣傳語確實寫的很好。
看完我 emo 了,當年我畢業的時候,也想著自己有一天能靠著寫代碼改變世界。
多年以后,我發現,能改變自己,就已經很了不起了。
本文來自微信公眾號:小白 debug (ID:xiaobaidebug),作者:小白
總結
以上是生活随笔為你收集整理的为什么我们家里的 IP 都是 192.168 开头的的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: hsv 明度的范围_通过HSV转换的方式
- 下一篇: 多人在线创作游戏《Roblox》有望在今