是的,還是我白,什么技術(shù)主,老情感博了。來講個故。資深老舔狗張今天很興奮說什么也要請家喝奶茶。因他說他感覺要喜歡的女生小修成正果了。問為什么。他朵都紅了,說 "我覺得小呂在暗示我了,她她喜歡看阿凡,正好我長得像阿凡達"。聽了讓人皺眉。繼續(xù)說:"她說她喜歡射手座正好我就是"我撓撓頭:"行,別說了,懂了她住上海,你住上海,你兩是同居了"他愣了一會,看了我:"別說這種舔狗話,但你的其實有點道,上次她讓我她修電腦,我現(xiàn)她家的 ip 是 192.168.xx.xx,巧了,我家的也是,我疑我們住的很"。很感動。我甚至沒敢告訴,我家里的 IP 也是 192.168 開頭的,我猜你的也是,就現(xiàn)正在看這篇文的你。但問題來了,為什么家的 IP 都是 192.168.xx.xx?我們今天來聊下這個話題IP 地址是什么我們知道,絡(luò)通訊的本質(zhì)是收發(fā)數(shù)據(jù)包如果說收發(fā)數(shù)包就跟收發(fā)快一樣。那 IP 地址就類似于快遞上填的收地址和發(fā)件地一樣,有了它路由器就可以始充當快遞員角色,在這個繁復(fù)雜的網(wǎng)絡(luò)界里找到該由來接收這個數(shù)包。收發(fā)數(shù)據(jù)像收發(fā)快遞由我們現(xiàn)在主流還是 IPV4 地址,所以默認以 IPV4 為例進行講解。這個 IP 大概長這樣。IPv4 地址在控制臺里執(zhí)行 ifconfig?就能看到。inet 邊上的?192.168.31.170?就是 IP 地址。$?ifconfig??en0:?flags=8863
?mtu?1500??????options=400??????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??????media:?autoselect??????status:?active說白了,它就是個特點的編號,用在互聯(lián)網(wǎng)中唯定位到某臺機。為了表示這編號,IP 地址一共分為 4 個字節(jié),一個字節(jié) 8 位,共 32 位,能用來表示最?2 ^32,也就是?42 億個地址。貌。。。有點少2021 年全球就有 78 億,今年更是破了 80 億,也就是說人一個 IP 都做不到。當前球人口數(shù)為此多年前,就在 IPV4 地址不夠用,要盡了,于是才有后來的 IPV6 地址。IPv6 用了更多的字節(jié)數(shù),此能表示更多地址。大概長樣。IPv6 地址是不是很生,感覺沒怎見過。這就對。大家有沒有現(xiàn),用了這么年,大部分人實還在用 IPV4 地址,不是說要耗盡了?為什么大家一直在用 IPV4?先別急,我們再聊個前知識點,IP 地址的分類。IP 地址的分類為了更好的管這 42 億個 IP 地址的用途。我們應(yīng)也在教科書上過這樣一張 IP 分類的圖。IP 地址的分類大概的意思 32 位地址里,開頭為 0 的,那就是 A 類地址。開頭為 10 的,就是 B 類,開頭為 110 的,就是 C 類。在這之后,把剩下的節(jié)數(shù)拆成兩段一段表示網(wǎng)絡(luò),另一段表示機號。網(wǎng)絡(luò)號主機號的關(guān)系就像是某個停場編號和停車號的關(guān)系。一城市里有很多車場,而停車里又有很多個車位。每個停位可以停一輛,這里的一輛,其實就是一電腦(主機)大型停車場少但是能停的車多,對應(yīng) A 類地址的網(wǎng)絡(luò)少,但是主機多。小型停車到處都是,但一般能停的車少,對應(yīng) C 類地址的網(wǎng)絡(luò)多,但主機號。大佬們一開這么劃分網(wǎng)絡(luò)其實也是為了便管理,比如 A 類地址,是給大型組織機用的,主機地的位數(shù)高達 1600w+,C 類地址是給小公司用的,主號只有 200+。這個差距就有點懸殊了,在今天就不太理了,我開個吧可能都不止 200 臺機子對吧,用 C 類嫌主機號少用 A 類又嫌主機號太多。此現(xiàn)在這套分機制其實已經(jīng)少用了。取而之的是方案是將所謂的 ABC 分類直接取消,只保留網(wǎng)號和主機號,且網(wǎng)絡(luò)號的位也不像以前限的那么死,用個斜杠告訴用多少位是網(wǎng)絡(luò),其余的都是機號。比如?172.20.61.69/20,那網(wǎng)絡(luò)號的數(shù)就是 20 位,主機號的數(shù)是 32-20=12 位,能放 4096 臺機子,很靈活,很夠用。1668126898773這就是,所謂的 CIDR,(Classless Inter-Domain Routing,無類別域間由)。IP 地址不夠用了嗎但不管你怎么分類,在 32 位下的限制下,你就算玩得花,只要將 A 類 + B 類 + C 類 + X 類加起來,IP 的個數(shù)也最多還 42 億個。還是不夠用。既然加法不行那我們就用乘。啥意思?42 億這個數(shù)字對大家來說太大,為了方便理,我們改成 6 個 IP。假設(shè)將 6 拆成 4+2,再讓 4 乘以 2,那結(jié)果 8 肯定大于 6。一開始,我們解的網(wǎng)絡(luò)世界有一層,每人個 IP,那就只有 6 個人能上網(wǎng)。相加能讓 6 人上網(wǎng)現(xiàn)在我們將絡(luò)分成兩層。下面這樣。相能讓 8 人上網(wǎng)每 2 個人構(gòu)成一個 " 小網(wǎng)絡(luò) ",對外共用一個 IP,而內(nèi)部每個人的 IP 都不一樣,4 個小網(wǎng)絡(luò)共同構(gòu)一個 " 大網(wǎng)絡(luò) "。比如小明的電腦是 1 號網(wǎng)絡(luò)下的 6 號機子,小紅的電腦是 2 號網(wǎng)絡(luò)下的 6 號機子。這樣也能做到唯標識某臺機子效果。像上面樣,每個 2 人構(gòu)成的小網(wǎng),就叫做局域,也就是所謂內(nèi)網(wǎng),用的 IP(上面的 5,6)也叫私有 IP 或內(nèi)網(wǎng) IP,而上面提到的 "大網(wǎng)絡(luò)",則是廣域網(wǎng),用的 IP 則被稱為公有 IP 或公網(wǎng) IP。通過這種方式,原本能讓 6 人上網(wǎng),現(xiàn)在卻能 8 人同時上網(wǎng)。這還是 IP 只有 6 個的情況下,果讓數(shù)字變回 42 億,那就能支持遠大于 42 億的機子上網(wǎng)了。公有私有 IP 的概念按照這樣思路,回到上的 ABC 類 IP 地址,大佬們也將它分成了私有和有兩部分。在 rfc1918 文檔中定義了私有地址的范。它們不會出在廣域網(wǎng)中,會出現(xiàn)在局域內(nèi)。*?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 就是這網(wǎng)段內(nèi)的其中個 IP 地址。這個范圍里概有 6w + 個主機號,什么家庭條件能得完?于是,變成了一條街者一個小區(qū),或者小區(qū)內(nèi)的幢樓共用一個網(wǎng) IP,而內(nèi)部就用 192.168.xx.xx 這樣的內(nèi)網(wǎng) IP。所以只要你在家大概率會發(fā)現(xiàn)的 IP 地址是 C 類的 192.168.xx.xx。幾幢樓共用一公網(wǎng) IP但其實只要你想,A 類和 B 類的私有地址也可以用在局域里的。你到了司里執(zhí)行下 ifconfig 命令,你很可能會發(fā)現(xiàn)你的域網(wǎng) IP 就不是 192.168 開頭的了,而是 172 或者 10 開頭的。這是因為在公司內(nèi)里,需要的 IP 數(shù)量會更大,172 和 10 開頭的 IP 能表示的主機更多,比 10 開頭的能表示 1600w + 個。就不說別的, A 類地址,只拿了個 10 開頭的網(wǎng)絡(luò)號出來當內(nèi)網(wǎng) IP 就能表示 1600w + 個主機號,其余的 100 + 個 A 類網(wǎng)絡(luò)號都拿來公網(wǎng)地址。按面提到算法去行個相乘,公 IP 數(shù) * 內(nèi)網(wǎng) IP 數(shù) = (100+ * 1600w) * 1600w,你也別管我算的不對,反正就能提供給好多備使用,更別還有 B 類和 C 類的還沒算呢。而且上只考慮了一層域網(wǎng),其實局網(wǎng)內(nèi)還能再分多層,局域網(wǎng)再嵌套局域網(wǎng)就像下面這樣這樣能用的 IP 數(shù)量就更多了。局域網(wǎng)內(nèi)有局域網(wǎng)所以,IP 地址雖然不多,但其完全夠用,這是我們一直以遲遲不切換成 IPv6 的原因。夠用,能,為什么要換聊到這里,其就回答了文章題的問題,為么大家的 IP 都是 192.168 開頭的,是因為 IPv4 地址有限,為了有效用這些有限的址,我們可以網(wǎng)絡(luò)分為局域和廣域網(wǎng),將 IP 分為了私有 IP 和公網(wǎng) IP,一個局域網(wǎng)里的 N 多臺機器都可以共用一個廣網(wǎng) IP,從而達到了 "做乘法" 的效果,大大增加了 "可用 IP 數(shù)量",小區(qū)里幾幢樓可以共用個公網(wǎng) IP,且因為設(shè)備數(shù)不多,一般選 C 類的私有地址,也就是 192.168 開頭的地址。但問題就來了怎么知道我的網(wǎng) IP 地址是什么?查詢己的公網(wǎng) IP 地址在家里的電腦上,通過 ifconfig,你能拿到自己的內(nèi)網(wǎng) IP 地址,比如我的就是 192.168.31.170。$?ifconfig??en0:?flags=8863?mtu?1500??????options=400??????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??????media:?autoselect??????status:?active但如果你想知道你的網(wǎng) IP 地址的話,該怎么呢?有個簡單方法。你直接 baidu 上搜索 " 我的 IP 地址 ",就能看到你的公網(wǎng) IP 地址。別去 ping 這個地址,這個圖我 p 過。如果你用的是某云的機子。你會發(fā)現(xiàn)你的機既有私有 IP 地址,也有一個公有 IP 地址。某里云以同時分配公和私有 IP也是 p 的圖。當你去 ping 上面的私有地址 172.21.56.59 時,你會發(fā)現(xiàn)它根本 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而公網(wǎng)地址 46.101.121.11 卻可以 ping 通。也就是說,在你家局域網(wǎng)里,你能通過公網(wǎng) IP 地址去訪問這臺云服務(wù)器$?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這時候,用過他們家服器的人可能會個疑問。只要請一臺云服務(wù)某里云就能給一個公網(wǎng) IP 地址,怎么做到的?這。。這么富的嗎?實,某里云跟 IP 的機構(gòu),租用了的一 IP 地址,在你需要的時,就能付費租你,不用了也回收分配給其人。而且公網(wǎng) IP 地址下面,其實也可以多臺云服務(wù)器用上文提到的式,讓多臺云務(wù)器共用一個 IP。因此不太需要擔(dān)心 IP 耗盡的問題??偨Y(jié)?IP 地址就像快遞里的送件和收件址,是一串編,用于在紛繁雜的網(wǎng)絡(luò)世界標識你的位置?IPv4 有 32 位,最多能表示 42 億個 IP 地址。為了更的管理它們,科書上出現(xiàn)過 ABC 這樣的分類方式,并在 ABC 類里還分為私有址和公有地址但目前流行使 CIDR 的方式進行分類??為了表示多主機,我們以將網(wǎng)絡(luò)分為域網(wǎng)和局域網(wǎng)廣域網(wǎng)用公有址,局域網(wǎng)使私有地址。將有地址乘上私地址,就能表遠大于 42 億臺的機子。?家庭網(wǎng)絡(luò)較,往往小區(qū)內(nèi)幢樓構(gòu)成一個域網(wǎng),這幾幢共用一個公有 IP 地址。局域網(wǎng)內(nèi)選擇了 C 類的私有地址,也就是 192.168.xx 開頭的 ip,所以你會發(fā)現(xiàn)我們家里 IP 基本上都是 192.168 開頭的。??在 baidu 上搜索 " 我的 IP 地址 ",就能看到你的網(wǎng) IP 地址。差不多了,大家留個問題上面提到,網(wǎng)分為廣域網(wǎng)和域網(wǎng),IP 分為公有和私有一個局域網(wǎng)內(nèi)有機子對外使一個公有 IP,對內(nèi)則使用有 IP。那么問題來了,公里不使用私有 IP,一個局域網(wǎng)里的私有 IP 想訪問局域網(wǎng)外的公有 IP,必然要做個 IP 轉(zhuǎn)換,這是在哪里做轉(zhuǎn)換呢?私有 IP 和公有 IP 在哪進行轉(zhuǎn)換最后我在文章的時候,到個小彩蛋。我在 baidu 搜索的網(wǎng)頁里,用 F12 打開瀏覽器的控制臺時???了下面這么一話。發(fā)現(xiàn)是個聘推廣文,想也是,會開控臺看的基本上是跟程序員沾的人,這波是準引流了。招宣傳語確實寫很好。看完我 emo 了,當年我畢業(yè)的時,也想著自己一天能靠著寫碼改變世界。年以后,我發(fā),能改變自己就已經(jīng)很了不了。本文來自信公眾號:小 debug (ID:xiaobaidebug),作者:小?