机器是怎么区分你同时开着的几十个网页、几个下载和一场视频会议的?答案不是域名,也不是应用名,而是四个数字凑成的组合。这个组合在代理IP 链路上的表现,和直连时并不一样,很多看似诡异的现象最后都能追到这一层。
四个值定一条连接
第一对是本机侧。源地址是本机的网络地址,源端口是发起连接时临时分配的一个端口号。这两个值由操作系统决定,每次新建连接都可能不一样,连接关闭之后端口会被回收,过一段时间再分配出去。
第二对是对端侧。目标地址是你要访问的服务器地址,目标端口对应具体服务。这两个值由访问对象决定,相对固定,也是服务端判断”这是哪个服务”的依据。
四个值缺一不可。只要其中任何一个不同,就是另一条连接;反过来,四个值完全相同,系统就会认定是同一条连接。这就是为什么端口回收过快、地址被复用时,会出现张冠李戴式的怪问题——不是数据错了,而是标识撞了。
| 四个值 | 由谁决定 | 直连时看到什么 | 走代理IP 时看到什么 |
|---|---|---|---|
| 源地址 | 本机网卡与路由 | 就是本机地址 | 本机侧仍是本机,服务端看到的是出口地址 |
| 源端口 | 系统临时分配 | 一次分配,全程不变 | 两段各分配一次,互不相同 |
| 目标地址 | 要访问的对象 | 目标服务器地址 | 本机侧看到的是转发层,不是真实目标 |
| 目标端口 | 服务本身 | 服务端口 | 本机侧是转发层监听端口,出侧才是服务端口 |

代理IP 把一条连接拆成了两半
直连的时候,四元组从头到尾只有一份,本机和服务端看到的是同一条连接。走代理IP 之后就不一样了:本机到转发层是一条连接,转发层到目标站点是另一条连接,两段各有各的四元组,中间由转发层做拼接与映射。
这个结构解释了好几个常见现象。目标站点看到的源地址是代理IP 的出口地址,而不是你的本机地址;本机这一侧的源端口由系统分配,转发层那一侧又会重新分配一次,两边的端口号没有任何关系;两段连接的生命周期也未必同步,一边断开了另一边可能还挂着,直到保活探测超时才收掉。
为什么值得把这一层搞清楚
排查问题时,先分清你看到的是哪半段。日志里的地址、连接数、端口占用,很可能属于不同半段,混在一起看就会得出完全错误的结论。代理IP 环境下尤其如此——同一个问题,站在本机看和站在目标站点看,看到的是两套数字,两边对不上是常态,对不上不代表出了故障。
理解四元组还有一个很实际的用处:它解释了为什么某些应用”换个出口就正常”。连接标识变了,旧的问题连接不会跟着过去,新的连接从头建立,现象自然就消失了。但这也意味着根因并没有被解决,只是一次刷新掩盖了它,过一段时间还会在别处冒出来。真正稳妥的做法,是根据四元组去定位那半段到底是谁在掉链子。
总结:一条连接靠源地址、源端口、目标地址、目标端口这四个值唯一确定,任何一个不同就是另一条连接。代理IP 链路把它拆成两半,两段各有各的四元组,中间靠转发层映射。看日志、查连接、判异常之前先分清是哪半段,很多看似莫名其妙的表现,答案就在这一层。
