IP地址大科普:内网IP和外网IP到底啥区别?
刚学网络的同学一定听过"你的IP是多少""IP被封了""内网穿透"这些词,但你大概率分不清内网IP和外网IP到底有啥区别,甚至不知道自己电脑的IP到底是哪个。今天我们就用最直白的例子把这些概念一次讲透。
先搞懂本质:IP就是"网络世界的门牌号"
上一篇我们讲了host和port,host就是IP地址或者域名。那IP到底是什么?
想象整个互联网是一个超级大的快递网络,每台联网的设备(电脑、手机、服务器)都是这个网络里的一个"收货地址"。IP地址就是这个收货地址的门牌号,格式是四组数字,每组0~255,中间用点隔开,比如192.168.1.100、223.74.156.78。
没有IP地址,网络数据就不知道该往哪发,就像没有门牌号,快递根本送不到你家。
核心问题:全球几十亿台设备,IP够用吗?
传统的IP地址(IPv4)总共只有约43亿个,听着很多,但全球联网设备早就超过几十亿了,根本不够每台设备分一个。怎么办?工程师想了个办法:不是每台设备都需要一个公网上的"门牌号",只有需要直接和外界通信的设备才需要。
这就引出了内网IP和外网IP的区别。
外网IP:你在"互联网大街"上的门牌号
外网IP(也叫公网IP)是你在整个互联网上的唯一标识,全球唯一,就像你在整条大街上的门牌号。
当你的电脑要访问百度、刷B站的时候,数据要经过运营商的网络到达百度/ B站的服务器,对方服务器要能把数据送回给你,就得知道你在"大街"上的门牌号,这个门牌号就是你的外网IP。
外网IP通常是你家的宽带运营商(电信、联通、移动)分配的,你每次拨号上网可能会变(动态IP),也可能固定不变(静态IP,一般要额外花钱)。
内网IP:你在"小区内部"的门牌号
内网IP(也叫私有IP、局域网IP)是你在自己家/公司内部网络里的标识,只在你的小圈子里有效,出了这个圈子就没人认了。
为什么需要内网IP?因为你家里不止一台设备要上网------你的手机、电脑、平板、智能音箱都要联网,如果每台设备都要一个外网IP,43亿个IP早就不够用了。所以工程师设计了一套方案:整个家庭/公司共用一个外网IP对外通信,内部设备各分一个内网IP互相区分。
常见的内网IP地址段:
192.168.x.x:家庭路由器最常用的,你家里的设备基本都是这个开头10.x.x.x:大公司、学校、云服务商常用172.16.x.x ~ 172.31.x.x:中型网络常用
一个完整的例子:你刷B站时发生了什么?
假设你在家用手机刷B站,你的手机内网IP是192.168.1.5,你家路由器的外网IP是223.74.156.78:
- 你的手机(
192.168.1.5)发出请求:"我要看这个视频" - 请求先到家里的路由器,路由器把你手机的内网IP"翻译"成你家的外网IP(
223.74.156.78),同时记下来"这条数据是192.168.1.5发的" - 请求带着外网IP出发,经过运营商网络,到达B站服务器
- B站服务器把视频数据送回
223.74.156.78 - 路由器收到数据,翻记录发现"哦,这条数据是之前
192.168.1.5要的",于是把数据转发给你的手机
这个"翻译"过程就叫NAT(网络地址转换),相当于小区门口有个快递代收点,所有快递都写小区地址(外网IP),代收点根据收件人信息(内网IP)分发到各家各户。
怎么查看自己的IP?
查内网IP:
- Windows:打开命令行(Win+R输入cmd),输入
ipconfig,找到"IPv4地址"那一行 - Mac:打开终端,输入
ifconfig,或者在"系统设置→Wi-Fi→详细信息"里看 - 手机:在Wi-Fi设置里点已连接的网络,就能看到IP地址
查外网IP:
- 最简单的方式:浏览器打开百度,搜索"IP",百度会直接显示你的外网IP
- 或者访问
ip138.com等网站也能查
你会发现,内网IP和外网IP完全不一样,这是正常的------内网IP是你在家里的"房间号",外网IP是你家在大街上的"门牌号"。
新手常踩的3个坑
- 把内网IP发给别人,别人访问不了 :你本地跑了个项目,终端显示
http://192.168.1.5:3000,你把192.168.1.5发给同学让他访问,他肯定打不开。因为192.168.x.x是你家内部的地址,出了你家的路由器就失效了。要让别人访问,要么用外网IP+端口映射,要么用内网穿透工具(比如ngrok、frp)。 - 同一个小区/公司的人,内网IP可能不一样但外网IP一样:因为整个小区/公司共用一个路由器出口,所有人对外都显示同一个外网IP,这也是为什么有时候你被封号了,同宿舍其他人的账号也跟着受影响------因为从服务器看,你们都是同一个外网IP。
- "我的IP被封了"到底封的是哪个?:网站封的永远是外网IP,因为网站只能看到你从互联网发过来的外网IP,根本不知道你内网IP是多少。
一句话总结
内网IP是"小区内部的房间号",只在你的局域网里有效;外网IP是"小区在大街上的门牌号",全球唯一,用来和互联网上的其他设备通信。你家所有设备共用一个外网IP对外,内部靠内网IP区分,路由器负责在两者之间做翻译。
DNS大科普:为什么输入域名就能找到网站?
前面我们讲了IP地址,你知道每台设备都有一个IP,比如百度的IP是220.181.38.148之类的。但你平时上网谁记得住这一串数字?你只需要输入www.baidu.com就能打开百度,这中间帮你"翻译"的就是DNS。今天我们就把这个互联网幕后功臣讲清楚。
先搞懂本质:DNS就是互联网的"电话簿"
你手机通讯录里存的是"张三",但打电话的时候手机会自动把"张三"翻译成他的手机号再拨出去。你不需要记住张三的手机号,只需要记得他的名字就行。
DNS干的就是这件事:你输入www.baidu.com(名字),DNS帮你翻译成220.181.38.148(IP地址),然后浏览器拿着这个IP去访问百度的服务器。整个翻译过程你完全感知不到,通常在几十毫秒内就完成了。
DNS的全称是Domain Name System,翻译过来就是"域名系统",说白了就是一个全球分布的"域名→IP"的翻译服务。
如果没有DNS会怎样?
想象一下,你每天上网要做的操作变成这样:
手动输入http://222.172.200.68
每个网站都要记一串数字,换一台电脑、换一个网站,你就得重新记。这就像打电话不能存名字,每次都要背对方的手机号一样,根本没法用。DNS的存在就是让你只需要记住一个好理解的域名,剩下的脏活累活它全包了。
DNS翻译的全过程:一次查询要问好几轮
你在浏览器输入www.baidu.com回车之后,系统不会直接去问百度"你的IP是多少",而是像查电话号码一样,一级一级地问下去:
-
先查自己有没有记过(本地缓存) :你的电脑/手机会先看看之前有没有查过
www.baidu.com的IP,如果查过就直接用,不用再去问了。就像你通讯录里已经存了张三的电话,直接拨就行,不用再翻电话簿。 -
问你的"小区查号台"(本地DNS服务器) :如果本地没有缓存,你的电脑会去问运营商(电信/联通/移动)提供的DNS服务器,一般地址是
114.114.114.114或者运营商自动分配的。这个DNS服务器通常也缓存了很多常用域名的IP,大概率直接就能告诉你答案。 -
问"根查号台"(根域名服务器) :如果运营商的DNS也没缓存,它就去问全球13组根域名服务器。根服务器不直接告诉你
www.baidu.com的IP,而是告诉你".com后缀的域名,你去找.com的顶级域名服务器问"。 -
问"
.com查号台"(顶级域名服务器) :运营商的DNS再去问.com的顶级域名服务器,对方说".baidu.com的信息,你去找baidu.com的权威DNS服务器问"。 -
问"百度自己的查号台"(权威域名服务器) :最后问到百度自己的DNS服务器,对方说"
www.baidu.com的IP是220.181.38.148"。 -
返回结果并缓存 :运营商的DNS拿到IP后返回给你的电脑,同时在自己的缓存里记一份,下次别人再问
www.baidu.com就不用从头问了。你的电脑也会缓存一份,下次直接就能用。
整个过程中,你的电脑只问了运营商的DNS一次,后面那些"问根服务器→问顶级服务器→问权威服务器"的步骤都是运营商的DNS帮你代劳的,所以你感知不到这个过程有多复杂。
DNS缓存:为什么改了解析不会立刻生效?
前面说了,DNS的每一层都有缓存,这就导致一个很常见的问题:你修改了域名的解析记录(比如把网站的IP从A换成了B),但用户访问的时候还是指向旧的IP。
这是因为各级缓存还没过期。DNS记录有个"TTL"(生存时间)的概念,就是"这条缓存最多保留多久"。比如TTL设的是3600秒(1小时),那缓存最多保留1小时就会自动失效,下次查询就会重新走一遍完整流程拿到最新的IP。
这也是为什么很多网站迁移服务器后,会提前把TTL调得很短(比如60秒),这样迁移后用户最多1分钟就能访问到新服务器,不用等很久。
常见的公共DNS服务器
运营商默认分配的DNS有时候不太靠谱,可能会解析慢、甚至解析到错误的地址(DNS劫持)。你可以手动把电脑的DNS改成下面这些公共DNS,通常更快更稳:
新手常踩的3个坑
-
网页打不开,但QQ/微信能用:这是非常典型的DNS问题。QQ和微信连接服务器用的是IP地址,不走DNS解析;但浏览器访问网站需要DNS把域名翻译成IP。如果DNS挂了,浏览器就找不到网站的IP,自然打不开网页,但其他不依赖域名的应用不受影响。解决办法就是把DNS换成上面推荐的公共DNS。
-
hosts文件和DNS的关系 :Windows的
C:\Windows\System32\drivers\etc\hosts文件相当于一个"本地私人电话簿",它的优先级比DNS还高。系统查IP的时候会先翻hosts文件,hosts里有就直接用,没有才去问DNS。很多破解软件、去广告工具就是往hosts里写规则,让特定域名指向错误的IP,从而屏蔽广告。 -
DNS污染和DNS劫持:有些不良运营商或者网络攻击者会在DNS解析过程中"偷梁换柱",你明明输入的是正确网址,DNS却返回一个错误的IP,把你导向钓鱼网站或者广告页面。这就是为什么建议用靠谱的公共DNS,不要用运营商默认的。
一句话总结
DNS就是互联网的"电话簿",负责把你输入的好记的域名翻译成机器能认的IP地址。整个查询过程是"先查本地缓存→再问运营商DNS→必要时逐级往上问",每一层都有缓存来加速,所以你平时感觉不到它的存在,但一旦DNS出了问题,你连网页都打不开。