一、原理图
1、背景信息:
(1)我们模拟的情形是位于网络A下的内网主机UserA 想要和位于网络B下的内网主机UserB进行点对点通信,刚开始的时候UserA和UserB都不知道对方的公网和内网IP地址及端口号,所以必须要再公网上搭建一个服务器C,服务器C主要的任务就是维护一张用户名到(主机的公网IP+端口号)的映射表,这样用户就可以从服务器C上获取UserB的公网IP和地址
(2)UserA在局域网内发的IP包源地址是192.168.1.100:3000,该IP包经过路由器A后会被路由器A修改成能够在公网传输的公网IP地址和公网端口号:125.71.229.217:4001。UserB向公网发送报文路由器B也会对它做同样处理。
2、NAT穿越:
STEP1: 假设UserA想要给UserB发送消息,那么UserA就会让服务器C通知UserB先进行打洞操作。
STEP2: UserB收到打洞通知后,就发送IP包(目地址:125.71.229.217:4001,源地址:202.108.22.5:6002)给路由器A。路由器A收到该IP包后会查看源地址(202.108.22.5:60