為什麼我們家裡的IP都是192.168開頭的?

張哥說技術發表於2023-01-12

是的,還是我小白,什麼技術博主,老情感博主了。
來講個故事。
資深老舔狗小張今天很興奮,說什麼也要請大家喝奶茶。
因為他說他感覺要跟喜歡的女生小呂修成正果了。
一問為什麼。
他耳朵都紅了,說"我覺得小呂在暗示我了,她說她喜歡看阿凡達,正好我長得就像阿凡達"。

為什麼我們家裡的IP都是192.168開頭的?

聽了讓人皺眉。
他繼續說:"她說她喜歡射手座,正好我就是"
我撓撓頭:"行,別說了,懂了。她住上海,你也住上海,你兩算是同居了"
他愣了一會,看了看我:"別說這種舔狗話,但你說的其實有點道理,上次她讓我幫她修電腦,我發現她家的ip是192.168.xx.xx,巧了,我家的也是,我懷疑我們住的很近"。

為什麼我們家裡的IP都是192.168開頭的?

很感動。

我甚至沒敢告訴他,我家裡的IP也是192.168開頭的,我猜你家的也是,就現在正在看這篇文章的你。

但問題就來了,為什麼大家的IP都是192.168.xx.xx?

我們今天來聊下這個話題。

IP地址是什麼

我們知道,網路通訊的本質就是收發資料包。如果說收發資料包就跟收發快遞一樣。那IP地址就類似於快遞上填的收件地址和發件地址一樣,有了它,路由器就可以開始充當快遞員的角色,在這個紛繁複雜的網路世界裡找到該由誰來接收這個資料包。

為什麼我們家裡的IP都是192.168開頭的?

由於我們現在主流的還是IPV4地址,所以預設以IPV4為例進行講解。

這個IP大概長這樣。

為什麼我們家裡的IP都是192.168開頭的?

在控制檯裡執行ifconfig 就能看到。inet 邊上的 192.168.31.170 就是IP地址。

$ ifconfig  
en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500  
    options=400<CHANNEL_IO>  
    ether 88:36:3d:33:a0:15  
    inet6 fe70::1009:aabf:ecc6:2d10%en0 prefixlen 64 secured scopeid 0x6  
    inet 192.168.31.170 netmask 0xffffff00 broadcast 192.168.31.255  
    nd6 options=201<PERFORMNUD,DAD>  
    media: autoselect  
    status: active  

說白了,它就是個特殊點的編號,用於在網際網路中唯一定位到某臺機子。

為了表示這個編號,IP地址一共分為4個位元組,一個位元組8位,共32位,能用來表示最多 2 ^32,也就是 42億個地址。

貌似。。。有點少?

2021年全球就有78億,今年更是突破了80億,也就是說人均一個IP都做不到。

為什麼我們家裡的IP都是192.168開頭的?

為此好多年前,就在說IPV4地址不夠用,要耗盡了,於是才會有後來的IPV6地址。

IPv6用了更多的位元組數,因此能表示更多的地址。大概長這樣。

為什麼我們家裡的IP都是192.168開頭的?

是不是很陌生,感覺沒怎麼見過。

這就對了。

大家有沒有發現,用了這麼多年,大部分人其實還在用IPV4地址,不是說要耗盡了嗎?

為什麼大家還一直在用IPV4?

先別急,我們再聊個前置知識點,IP地址的分類

IP地址的分類

為了更好的管理這42億個IP地址的用途。我們應該也在教科書上看過這樣一張IP分類的圖。

為什麼我們家裡的IP都是192.168開頭的?

大概的意思是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臺機子,很靈活,很夠用。

為什麼我們家裡的IP都是192.168開頭的?

這就是,所謂的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個人能上網。

為什麼我們家裡的IP都是192.168開頭的?

現在我們將網路分成兩層。像下面這樣。

為什麼我們家裡的IP都是192.168開頭的?

每2個人構成一個"小網路",對外共用一個IP,而內部每個人的IP都不一樣,4個小網路共同構成一個"大網路"。比如小明的電腦是1號網路下的6號機子,小紅的電腦是2號網路下的6號機子。這樣也能做到唯一標識某臺機子的效果。

像上面這樣,每個2人構成的小網路,就叫做區域網,也就是所謂的內網,用的IP(上面的5,6)也叫私有IP內網IP,而上面提到的"大網路",則是廣域網,用的IP則被稱為公有IP公網IP

透過這種方式,原本只能讓6人上網,現在卻能讓8人同時上網。這還是IP只有6個的情況下,如果讓數字變回42億,那就能支援遠大於42億的機子上網了。

為什麼我們家裡的IP都是192.168開頭的?

按照這樣的思路,回到上面的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

為什麼我們家裡的IP都是192.168開頭的?

但其實只要你想,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都是192.168開頭的?

所以說,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> mtu 1500  
    options=400<CHANNEL_IO>  
    ether 88:36:3d:33:a0:15  
    inet6 fe70::1009:aabf:ecc6:2d10%en0 prefixlen 64 secured scopeid 0x6  
    inet 192.168.31.170 netmask 0xffffff00 broadcast 192.168.31.255  
    nd6 options=201<PERFORMNUD,DAD>  
    media: autoselect  
    status: active  

但如果你想知道你的公網IP地址的話,該怎麼做呢?

有個簡單的方法。你直接在baidu上搜尋"我的IP地址",就能看到你的公網IP地址。

為什麼我們家裡的IP都是192.168開頭的?

別去ping這個地址,這個圖被我p過。

如果你用的是某裡雲的機子。你也會發現你的機子既有私有IP地址,也有一個公有IP地址。

為什麼我們家裡的IP都是192.168開頭的?

也是p的圖。

當你去ping上面的私有地址172.21.56.59時,你會發現它根本ping不通

$ ping 172.21.56.59  
PING 172.21.56.59 (172.21.56.59): 56 data bytes  
Request timeout for icmp_seq 0  
Request timeout for icmp_seq 1  
Request timeout for icmp_seq 2  
^C  
--- 172.21.56.59 ping statistics ---  
4 packets transmitted, 0 packets received, 100.0% packet loss  

而公網地址46.101.121.11卻可以ping通。也就是說,在你家的區域網裡,你只能透過公網IP地址去訪問這臺雲伺服器。

$ ping 46.101.121.11  
PING 46.101.121.11 (46.101.121.11): 56 data bytes  
64 bytes from 46.101.121.11: icmp_seq=0 ttl=48 time=273.481 ms  
64 bytes from 46.101.121.11: icmp_seq=1 ttl=48 time=268.018 ms  
64 bytes from 46.101.121.11: icmp_seq=2 ttl=48 time=266.606 ms  
^C  
--- 46.101.121.11 ping statistics ---  
3 packets transmitted, 3 packets received, 0.0% packet loss  

這時候,用過他們家伺服器的人可能會有個疑問。

只要申請一臺雲服務,某裡雲就能給你一個公網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轉換,這是在哪裡做的轉換呢?

為什麼我們家裡的IP都是192.168開頭的?

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70024923/viewspace-2931877/,如需轉載,請註明出處,否則將追究法律責任。

相關文章