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上打个洞把两个主机连接起来。
但如果是两个局域网的主机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)
相关问答
-
2018-09-13 10:53:18
-
2018-09-17 09:51:08
-
2015-04-16 17:07:39
-
22020-07-24 17:05:19
-
22020-04-08 17:45:46
-
2018-12-20 09:19:25
-
2018-11-07 09:25:05
-
2018-11-07 09:38:34
-
2018-09-07 14:12:42
-
2018-06-04 17:41:20
-
82017-11-29 21:40:36
-
2018-05-29 09:44:44
-
2018-05-29 09:41:17
-
2020-02-29 18:27:48
-
2018-10-24 09:29:34
-
2017-07-31 14:19:52
-
2019-12-18 11:11:58
-
2020-07-21 14:39:06
-
2018-01-16 18:39:40
无更多相似问答 去提问
点击登录
-- 积分
-- E币
提问
—
收益
—
被采纳
—
我要提问
切换马甲
上一页
下一页
悬赏问答
-
5Hi3516CV610 如何使用SD卡升级固件
-
5cat /dev/logmpp 报错 <3>[ vi] [func]:vi_send_frame_node [line]:99 [info]:vi pic queue is full!
-
50如何获取vpss chn的图像修改后发送至vo
-
5FPGA通过Bt1120传YUV422数据过来,vi接收不到数据——3516dv500
-
50SS928 运行PQtools 拼接 推到设备里有一半画面会异常
-
53536AV100的sample_vdec输出到CVBS显示
-
10海思板子mpp怎么在vi阶段改变视频数据尺寸
-
10HI3559AV100 多摄像头同步模式
-
9海思ss928单路摄像头vio中加入opencv处理并显示
-
10EB-RV1126-BC-191板子运行自己编码的程序
举报反馈
举报类型
- 内容涉黄/赌/毒
- 内容侵权/抄袭
- 政治相关
- 涉嫌广告
- 侮辱谩骂
- 其他
详细说明
提醒
你的问题还没有最佳答案,是否结题,结题后将扣除20%的悬赏金
取消
确认
提醒
你的问题还没有最佳答案,是否结题,结题后将根据回答情况扣除相应悬赏金(1回答=1E币)
取消
确认