社区
网络编程
帖子详情
穿透防火墙的技术
Topecar
2012-09-21 10:27:39
我用C/C++进行通信开发,需要穿透防火墙,有什么好的方法穿透防火墙吗?最好有源代码,(TCP、HTTP都可以),万分感谢
...全文
234
3
打赏
收藏
穿透防火墙的技术
我用C/C++进行通信开发,需要穿透防火墙,有什么好的方法穿透防火墙吗?最好有源代码,(TCP、HTTP都可以),万分感谢
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Topecar
2012-09-25
打赏
举报
回复
谢谢,能给出一段代码吗?
vcf_reader
2012-09-21
打赏
举报
回复
NAT穿透
fujialin2011
2012-09-21
打赏
举报
回复
1、 S启动两个网络侦听,一个叫【主连接】侦听,一个叫【协助打洞】的侦听。
2、 A和B分别与S的【主连接】保持联系。
3、 当A需要和B建立直接的TCP连接时,首先连接S的【协助打洞】端口,并发送协助连接申请。同时在该端口号上启动侦听。注意由于要在相同的网络终端上绑定到不同的套接字上,所以必须为这些套接字设置 SO_REUSEADDR 属性(即允许重用),否则侦听会失败。
4、 S的【协助打洞】连接收到A的申请后通过【主连接】通知B,并将A经过NAT-A转换后的公网IP地址和端口等信息告诉B。
5、 B收到S的连接通知后首先与S的【协助打洞】端口连接,随便发送一些数据后立即断开,这样做的目的是让S能知道B经过NAT-B转换后的公网IP和端口号。
6、 B尝试与A的经过NAT-A转换后的公网IP地址和端口进行connect,根据不同的路由器会有不同的结果,有些路由器在这个操作就能建立连接,大多数路由器对于不请自到的SYN请求包直接丢弃而导致connect失败,但NAT-A会纪录此次连接的源地址和端口号,为接下来真正的连接做好了准备,这就是所谓的打洞,即B向A打了一个洞,下次A就能直接连接到B刚才使用的端口号了。
7、 客户端B打洞的同时在相同的端口上启动侦听。B在一切准备就绪以后通过与S的【主连接】回复消息“我已经准备好”,S在收到以后将B经过NAT-B转换后的公网IP和端口号告诉给A。
8、 A收到S回复的B的公网IP和端口号等信息以后,开始连接到B公网IP和端口号,由于在步骤6中B曾经尝试连接过A的公网IP地址和端口,NAT-A纪录了此次连接的信息,所以当A主动连接B时,NAT-B会认为是合法的SYN数据,并允许通过,从而直接的TCP连接建立起来了。
穿透
防火墙
的数据传输
技术
穿透
防火墙
的数据传输
技术
,提供相互学习。
P2P
技术
穿透
防火墙
及代码的简单实现
P2P
技术
穿透
防火墙
及代码的简单实现,学习P2P
穿透
原理的基础知识
NAT与
防火墙
穿透
技术
研究
NAT与
防火墙
穿透
技术
研究 NAT
防火墙
穿透
技术
防火墙
穿透
技术
一种新的
穿透
防火墙
的数据传输
技术
.htm
一种新的
穿透
防火墙
的数据传输
技术
.htm
一种新的
穿透
防火墙
的数据传输
技术
定义.pdf
一种新的
穿透
防火墙
的数据传输
技术
定义.pdf
网络编程
18,356
社区成员
64,214
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章