qn1533613062

qn1533613062

2个粉丝

36

问答

0

专栏

4

资料

qn1533613062  发布于  2018-09-29 17:33:04
采纳率 0%
36个问答
1209

udp打洞

   
        为了内部网络安全以及节省IP资源,内网与外网之间通常使用NAT隔离。如果没有经过认证的外网主机想与内网主机通信,这时NAT会将外网发过来的数据丢弃。所谓的认证其实就是需要内网主机主动去访问外网,这时NAT将分配一个外网地址和端口给该内网主机(内网主动访问外网时NAT认为是安全的),此时外网才可以与该内网主机通信,通信使用的地址和端口就是NAT分配的外网地址和端口,然后经过该地址端口再转发到内网主机或转发出去。(NAT会记住这个IP和端口跟内网那台主机映射)
        但如果是两个局域网的主机A,B通信,就无法直接进行数据传输了,因为A给B时,B所在内网的NAT会认为这是不安全的访问,直接把消息丢掉,同样的B给A发消息也被A的NAT丢弃。这时需要一个第三者(外网服务器)来充当介绍人。
        AB分别先与外网服务器通信建立连接,这时服务器可以和AB通信并且知道AB使用什么IP地址和端口(这是主动往外发送的,NAT会为内网主机分配一个外网IP和端口并绑定到该内网主机上);然后服务器把A的信息给B,把B的信息给A,这时AB都知道对方的IP和端口了,但是还不能通信,因为双方之前没有互相发过消息,NAT还是认为这是陌生人不能进来。为了建立信任,这时A(A或B)主动发一个消息给对方,虽然会被B丢弃(B没有给A主动发过消息,B的NAT认为A是陌生人),但是A给B主动发过消息,NAT会认为B是熟人会让B的数据进来,这时B可以发消息给A,但A还不能给B发消息;为了让B认为A是熟人不会伤害B,A再给服务器发一个消息告诉服务器说“我要跟B通信,你命令他发个消息给我”。接着介绍人出来告诉B叫他主动发个消息给A,地址是19.168......。B收到服务器命令于是主动发一个消息给A,因为是主动的,NAT会为B分配一个外网IP和端口,而且这时因为A已经认为B是安全的,所以B的数据不会被丢弃,且B这时也认为A是熟人了。就这样,两个陌生人变成了好基友,想跟对方说什么就说什么。这就是UDP打洞,把两个不能直接通信的不通内网的主机分别在内网的NAT上打个洞把两个主机连接起来。
我来回答
回答0个
时间排序
认可量排序
易百纳技术社区暂无数据
或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
+ 添加网盘链接/附件

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

易百纳技术社区