(运营商提供的设备有外网IP)
我的电脑 公司的路由器 电信的光猫 电信的路由器 其他的外网IP 应用程序
假设我的电脑要用应用程序(我的电脑和应用程序是两个不同的局域网)的话,就要用NAT机制进行转换,我的电脑的IP和电信的路由器的IP进行NAT的转化,之后要和其他局域网通信的话就可以用电信路由器的外网IP
这里不用担心到时候电信的路由器分不清那个是我的颠佬ip,因为在IP地址的后面会有一个端口号
例如:
我的电脑 向应用程序发送请求
源IP:192.168.22.56(我的电脑)
目的IP:1.2.3.4(应用程序)
这个数据报经过电信路由器的时候就会触发NAT机制,进行地址转化
电信路由器会用自己的自己的外网IP代替我自己电脑的IP,从而进行和应用程序的通信
源IP:10.20.30.40(电信的路由器)
目的IP:
当这个数据到达应用程序后,应用程序不知道是192.168.22.56发送的,只知道是1.2.3.4发送的
应用程序会发出响应
源IP: 1.2.3.4(应用程序) 源端口号:80(应用程序)
目的IP:10.20.30.40(电信的路由器) 目的端口号:1234(字节集应用程序在进行通信是,系统自动分配的)
对于NAT设备,会在触发NAT的时候,维护一个映射表
形如:
替换前 替换后
192.168.22.56:1234 10.20.30.40:1234
NAT设备通过查表就知道了要把目的IP换回来
源IP: 1.2.3.4(应用程序) 源端口号:80(应用程序)
目的IP: 192.168.22.56(我自己的电脑) 目的端口号:1234(字节集应用程序在进行通信是,系统自动分配的)
这时候就可以完成通信了
注意:真实的情况是会有多个NAT机制的转化