P2p学习

NAT

私网内设备访问外网时, 路由器对其源ip:port转为唯一公网ip:随机端口

类型 核心特点
全锥型(Full Cone) 1. 内网设备主动访问外网后,会开放一个固定公网端口;2. 任何外网设备,只要知道这个公网端口,都能主动连接内网设备。
地址受限锥型(Address-Restricted Cone) 1. 仅允许 “内网设备主动访问过的外网 IP” 发起反向连接;2. 不限制外网设备的端口,只验证 IP 是否匹配。
端口受限锥型(Port-Restricted Cone) 1. 比地址受限更严格,仅允许 “内网设备主动访问过的外网 IP + 对应端口” 发起反向连接;2. IP 或端口有一个不匹配,连接就会被拒绝。
对称型(Symmetric) 1. 内网设备访问不同外网目标时,会分配不同的公网端口;2. 外网设备无法主动发起任何反向连接,仅支持内网主动发起的单向通信。
  1. 对称型对不同的目标地址访问都会分配不同的端口.
  2. 除了全锥型都会过滤掉 非活跃会话==且==非主动发起 的请求来源.
  • NAT的存在使得内网设备几乎只能主动访问外部网络, 对外部来说, 内网部分不仅不透明还有可能被NAT过度保护.

内网穿透

内网设备向公共服务器建立连接, 其他设备通过请求公共服务器来间接与内网通信

p2p

利用机制

  • 即使是对称型NAT, 请求一个地址之后的临时port, 被另外地址的请求访问, 会视为原先的目标地址的回应, 会"放行",
  1. 双方向中间服务器请求, 留下各自的ip:port, 中间服务器分别响应其另外一方的信息.
  2. 双方收到消息之后立刻高频率发送对应的请求, 争取在其之前的port失效之前"续"上有效性.
  3. 至此双方都有了对方承认的数据通道, 之后以1/2port失效期的间隔发送空数据的心跳包, 保持通道有效性.
Licensed under CC BY-NC-SA 4.0.