关于我们
产品中心
新闻动态
客户留言
产品视频
服务承诺
人力资源
联系我们
 
LED行业资讯        您当前的位置:首页 > 客户留言  

Linux高级网络编程篇-TCP穿透NAT(TCP打洞)实现

时间:2018-09-03 20:38:28  来源:本站  作者:
公司

  现在AB是无法直接和对方发送信息的,AB都不知道对方在互联网上真正的IP和端口, AB所在的局域网的路由器只允许内部向外主动发送的信息通过。对于B直接发送给A的路由器的消息,路由会认为其不被信任而直接丢弃。

  要实现 AB直接的通讯,就必须进行以下3步:A首先连接互联网上的服务器S并发送一条消息(对于UDP这种无连接的协议其实直接初始会话发送消息即可),这样S就获取了A在互联网上的实际终端(发送消息的IP和端口号)。接着 B也进行同样的步骤,S就知道了AB在互联网上的终端(这就是打洞)。接着S分别告诉A和B对方客户端在互联网上的实际终端,也即S告诉A客户B的会话终端,S告诉B客户A的会话终端。这样,在AB都知道了对方的实际终端之后,就可以直接通过实际终端发送消息了(因为先前双方都向外发送过消息,路由上已经有允许数据进出的消息通道)。

  6:client1尝试去连接client2,前几次可能会失败,因为穿透还没成功,如果连接10次都失败,就证明穿透失败了(可能是硬件不支持),如果成功,则每秒向client2发送一次hello, world

Copyright © www.g22.com Inc. All rights reserved 版权所有:辉煌平台 沪ICP备07029879号
友情链接: