IP到IP间通讯
电脑的IP地址
你的电脑实际上有两个重要的IP地址:
私网IP地址
公网IP地址
你电脑的【私网IP地址】完全有可能和远方另一个电脑的私网IP相同。但你电脑的【公网IP地址】在互联网上是唯一的,不会与他人重复。
1. 私网IP地址:为什么可以重复?
这背后的技术叫做 网络地址转换。
什么是私网IP? 这是在你本地网络(比如你家、你公司)内部使用的地址。常见的格式有
192.168.x.x
、10.x.x.x
、172.16.x.x - 172.31.x.x
。为什么用它? 正是因为公网IP地址不够用。运营商不可能给每个手机、每台电脑、每个智能电视都分配一个独立的公网IP。
工作机制:
你的家庭路由器会创建一个本地网络,并给你的电脑、手机等设备分配一个私网IP(比如
192.168.1.105
)。当你的电脑想访问微信服务器时,数据包先发送到路由器。
路由器会进行NAT操作:它把数据包的源地址从你的私网IP(
192.168.1.105
)替换成路由器自己的公网IP,并记录下这个连接(比如是从内网的105端口发往微信的)。微信服务器收到数据包后,认为它是从那个公网IP发来的,于是将回复发送回这个公网IP。
路由器收到回复后,根据之前记录的连接信息,再将目标地址替换回你的电脑的私网IP(
192.168.1.105
),并把数据包交给你的电脑。
这个过程就像一个大公司的总机电话:
公司只有一个总机号码(公网IP)。
每个员工有一个分机号(私网IP)。
外面的人(微信服务器)打电话进来,只知道总机号,不知道分机号。总机接线员(NAT路由器)负责把电话转接到正确的分机(你的电脑)。
正因为如此,成千上万个家庭和公司都可以在自己的内部网络里重复使用 192.168.1.105
这个地址,只要它们不出现在公网上即可。这就是为什么你的电脑私网IP可能和远方某人的完全相同。
2. 公网IP地址:如何分配以确保唯一?
公网IP地址是互联网上的“门牌号”,必须是全球唯一的。它的分配体系是一个层级分明的结构:
1. 全球分配:最高机构是 IANA,它将大块的IP地址分配给全球五大洲的区域互联网注册机构。中国属于 APNIC。
2. 国家分配:CNNIC 作为中国的国家互联网注册机构,会向APNIC申请大块的IP地址,然后负责在国内进行分配。
3. 运营商分配:CNNIC会将更小的IP地址段分配给各大运营商,如中国电信、中国移动、中国联通。
4. 用户分配:
家庭宽带/移动网络:运营商会给你家的路由器动态分配一个公网IP。这个IP可能每次断线重连都会变化(这就是所谓的“动态IP”)。你家里所有的设备都共享这一个公网IP。
大型企业/数据中心:它们会向运营商申请一段静态的、固定的公网IP地址,用于部署自己的服务器(比如腾讯的微信服务器)。
通过这套严格的层级分配体系,保证了任何一个在公网上活跃的IP地址都是唯一的。
路由器的IP地址
在绝大多数家庭和小型办公网络环境下,一个路由器就对应一个公网IP地址。
这是整个网络架构中非常关键的一个设计。我们可以把你的路由器看作是你家网络对外的 “总代理人” 或 “官方代表”。
详细解释:路由器作为“总代理人”
从运营商获取IP:当你家的光猫/路由器连接上运营商的网络后,运营商会通过DHCP协议给它分配一个公网IP地址。这个地址是你在整个互联网上的“家庭住址”。
内部管理:同时,路由器会在你家内部创建一个私有网络,并给连接到它的每一个设备(你的电脑、手机、平板、智能电视等)分配一个私网IP地址(比如
192.168.1.2
,192.168.1.3
...)。代表所有设备:当你的电脑(私网IP
192.168.1.2
)想要访问百度,或者你的手机(私网IP192.168.1.3
)想要给北京的朋友发微信时:数据包先到达路由器。
路由器运用 NAT 技术,把所有这些来自不同设备的、带着不同私网IP的数据包,统一“翻译”成来自它自己(路由器)的那个公网IP地址,然后发往互联网。
外部的服务器(如百度、微信)只会看到是这个公网IP在向它们发起请求,并把这个公网IP当作你所有设备的共同身份。
一个绝佳的比喻:公司总机
公网IP = 公司的总机电话号码。
路由器 = 公司的总机接线员。
私网IP = 每个员工的分机号。
外面的人(互联网服务)想联系你们公司,只知道总机号(公网IP)。电话打到总机,接线员(路由器)根据内部规则,把电话转接到对应的分机(你的电脑/手机)。同样,任何员工想打外线,都必须先通过总机转接出去,对外界来说,所有电话都来自那个总机号码。
重要补充和例外情况
虽然“一个路由器一个公网IP”是普遍情况,但在一些更复杂的网络环境中,情况会有所不同:
大型企业/机构:
它们可能会向运营商申请一段公网IP地址,而不仅仅是一个。
他们的核心路由器或防火墙会使用这一整段IP。内部的重要服务器(如网站、邮件服务器)可能会各自拥有一个独立的公网IP,直接暴露在互联网上。而普通员工的电脑则仍然通过NAT,共享另一个或多个公网IP上网。
运营商级NAT:
这是IPv4地址枯竭问题下的一个更极端的解决方案。在一些地区的移动网络或某些宽带服务中,运营商自己也会进行一层NAT。
这意味着,你家的路由器获取到的可能也不是一个“纯粹”的公网IP,而是运营商内部使用的一个大型私网IP地址。然后运营商的网关再拥有一个公网IP,代表成百上千个这样的家庭用户。
这种情况可以理解为“套娃式NAT”:你的设备 -> 你的路由器(第一次NAT)-> 运营商网关(第二次NAT)-> 互联网。
这种方式会影响一些需要公网IP的应用,如远程访问、P2P下载、 hosting游戏服务器等。
不同路由器也具有相同的公网IP
在CGNAT(运营商级NAT)模式下,您家路由器的“公网IP”确实可能和另一个地区用户路由器的“公网IP”完全相同。
这是因为,在CGNAT环境下,您家路由器获取到的那个地址,并不是一个真正的、全球唯一的“公网IP”,而是一个在运营商内部使用的 “共享型私网IP”。
用一个新的比喻来彻底理解这个概念。
新的比喻:大学校园网络
想象一下中国移动就像一个巨大的大学。
校园公共地址(真正公网IP):这个大学在城里有一个唯一的邮政地址,比如 “北京市海淀区学院路100号”。这个地址对校外世界来说是唯一的,相当于运营商的真正公网IP。
宿舍楼(CGNAT设备):大学里有好多栋宿舍楼(比如1号楼、2号楼),每栋楼就像一个CGNAT设备。
宿舍房间号(共享型私网IP):每一栋宿舍楼里,都有很多一模一样的房间号,比如 “101房间”。
1号楼101房间 和 2号楼101房间 的房间号是相同的。
这个 “101房间” 就相当于分配给您家路由器的那个共享型私网IP(比如
100.64.1.10
)。它只在大学(运营商)内部有意义。
您和您的家人(家庭网络设备):住在101房间里的您和您的家人,就相当于连接在您家路由器上的电脑、手机等设备,拥有
192.168.1.x
这样的家庭私网IP。
通信过程(套娃式NAT):
当您(192.168.1.105
)想访问百度时:
第一重翻译(家庭NAT):您的路由器把您的地址翻译成 “1号楼101房间” (
100.64.1.10
)。第二重翻译(CGNAT):宿舍楼管理员(CGNAT设备)收到来自“1号楼101房间”的请求,它再进行一次翻译,把寄件人地址改为大学的唯一公共地址 “北京市海淀区学院路100号” (真正的公网IP),并记录下这个连接是来自“1号楼101房间”的。
百度回复:百度把回复信寄到 “北京市海淀区学院路100号”。
逆向翻译:大学门卫(CGNAT设备)根据记录,知道这封信是给“1号楼101房间”的,于是把信送到1号楼。1号楼的楼管(您的路由器)再根据它的记录,把信最终交给您(
192.168.1.105
)。
结论:
在这个过程中,“1号楼101房间” 和 “2号楼101房间” 的“地址”是完全相同的。同样地,在广东和北京的两个不同家庭路由器,完全可能从它们各自的运营商那里,获取到同一个 “共享型私网IP” 地址(例如 100.64.1.10
)。
技术细节:共享地址段
为了让这种架构正常工作,互联网标准组织特意保留了一段IP地址范围,专门用于CGNAT,那就是:
100.64.0.0
到 100.127.255.255
这个地址段被称为 “共享地址空间” 。它不是公网IP,也不是您家内部使用的私网IP(如 192.168.x.x
),而是运营商在其网络内部用于CGNAT的“中间层”地址。
所以,当您在路由器上看到WAN口获取到的IP地址在 100.64.x.x
这个范围内时,您就知道自己正处在“套娃式NAT”之下。您的路由器IP,肯定和其他成千上万的用户路由器IP是重复的。
总结
场景 | 您路由器的WAN口IP | 是否可能与他人重复? |
---|---|---|
传统家庭宽带 | 真正的公网IPv4地址 | 否。在互联网上是唯一的。 |
CGNAT(套娃式NAT) | 共享地址空间的IP (如 100.64.x.x ) | 是。必然在运营商网络内部与大量其他用户重复。 |
所以,您的直觉再次是正确的。在CGNAT这种日益普及的模式下,“一个路由器一个IP”的规则虽然形式上依然成立,但这个IP的含义已经变了,它变成了一个在运营商内部可以大量复用的“共享IP”,从而实现了更深层次的地址复用。