博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UDP打洞原理
阅读量:3948 次
发布时间:2019-05-24

本文共 682 字,大约阅读时间需要 2 分钟。

分享一下我老师大神的人工智能教程!零基础,通俗易懂!

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

               

本文博客链接:,作者:jdh,转载请注明.

许多P2P软件比如SKYPE,QQ,电驴之类需要不同内网的两台机子进行通信,而路由器的NAT机制决定了内网访问外网容易,而外网访问内网困难,那如何才能做到这一点呢?有办法------打洞!

具体实现方法需要一台服务器,现在假设两台内网PC,A和B想用端口40000通信,网关分别为NATA,NATB.服务器为S,配置如下:

A:              192.168.0.34               40000

NATA:       58.240.157.121           60020

B:              192.168.0.227             40000

NATB:       58.240.157.222           50030

S:              58.240.157.240           40000

打洞过程:

1.A访问S,打一个洞,洞的指向为A<->S

2.B访问S,打一个洞,洞的指向为B<->S

3.S访问A,告诉它:B想访问你

4.A访问B,洞的指向为A<->B,这个包B的路由器NATB收到后不会转发给B,而是丢弃,因为它认为这是来历不明的包:(

5.B访问A,洞的指向为B<->A,此时A与B可以进行双向通信,打洞成功

打洞的目的是为了告诉NAT,我要访问的IP是我"朋友",你不能阻拦它发过来的信息,比如第4步A通过发送这个包,告诉了NATA:B是我朋友;第5步B发送包给A,告诉了NATB:A是我朋友.最后NATA认识了B,而NATB认识了A,A与B终于实现了双向通信.

           

给我老师的人工智能教程打call!

这里写图片描述
你可能感兴趣的文章
如何增加电量显示格数,并提示剩余电量?
查看>>
Key Launcher上底下的shortcut如何修改默认值以及如果修改Key Launcher上widget的默认显示顺序
查看>>
Java支持播放哪些multi media格式
查看>>
Audio播放完毕后设置时间无法正确获取
查看>>
打开了一个size不为零的文件,读取到的值却为零的一种分析和解决方法
查看>>
Aplix VM安装Java应用在main menu上不能显示自己的图标,而是显示一朵小花的解决方法
查看>>
Aplix VM安装第一个Java应用在main menu上看不到图标的解决方法
查看>>
java 在cosmos下修改设置,提示“setting are not modifiable”的解释
查看>>
JAD中常见字段的介绍。
查看>>
对于SIM menu update by OTA的解释
查看>>
如何去掉OTA provisioning的PIN码验证
查看>>
如何实现首次开机自动power on 蓝牙?
查看>>
Makefile文件中蓝牙相关的宏介绍
查看>>
如何屏蔽掉乱码的push消息
查看>>
登录一些安全网站,比如twitter/facebook,提示安全链接失败,或提示下载文件。
查看>>
如何去除launcher 上默认的 google search bar.
查看>>
Android如何绘制View
查看>>
23种设计模式的索引
查看>>
Can't make emergency call without SIM card
查看>>
不插SIM卡,不能拨打紧急电话
查看>>