美文网首页
关于打洞

关于打洞

作者: IsGirl | 来源:发表于2018-10-25 17:52 被阅读0次

1基本概念

a 内网ip

局域网,网线都是连接在同一个 交换机上面的,也就是说它们的IP地址是由交换机或者路由器进行分配的。而且每一个IP也是有所不同的,并且这些连接在同一个路由器上的电脑都可以通过internet连接共享的,也就是说网吧里面的电脑是可以访问网吧内另外一部电脑的。

b 公网ip

全世界唯一的IP地址,仅分配给一个网络设备。而内网IP是由路由器分配给每一部内部使用的IP地址,而内网的所有用户都是通过同一个外网IP地址进行上网的。

区别是内网的IP地址每个人的都不一样,Internet上的用户也无法直接访问到内网用户。简单来说呢,外网IP就是标示了您在整个互联网上的地址,就相当于小区的地址,而内网IP呢,就是标识着您在局域网里面的地址,也就是小区内的几栋几楼几号房子。
简单来说你的公网ip是需要你花钱从各大运营商大佬哪里去购买的,内网就是你买到大佬给你的外网后自己搞了一个交换机和路由器又分给后面的小喽喽使用的。

有了上面的概念后我们就可以了解一下打洞

2打洞

a 为什么要打洞

假设现在有内网客户端A和内网客户端B,有公网服务端S。
如果A和B想要进行UDP通信,则必须穿透双方的NAT路由。假设为NAT-A和NAT-B。
A发送数据包到公网S,B发送数据包到公网S,则S分别得到了A和B的公网IP,
S也和A B 分别建立了会话,由S发到NAT-A的数据包会被NAT-A直接转发给A,
由S发到NAT-B的数据包会被NAT-B直接转发给B,除了S发出的数据包之外的则会被丢弃。
所以:现在A B 都能分别和S进行全双工通讯了,但是A B之间还不能直接通讯。这个时候就需要打洞。

b 打洞原理(用上面的例子解释)

A向B的公网IP发送一个数据包,则NAT-A能接收来自NAT-B的数据包
并转发给A了(即B现在能访问A了);再由S命令B向A的公网IP发送一个数据包,则 NAT-B能接收来自NAT-A的数据包并转发给B了(即A现在能访问B了)

附录:tcp和udp打洞区别

TCP和UDP在打洞上却有点不同。这是因为伯克利socket(标准socket规范)的
API造成的。
UDP的socket允许多个socket绑定到同一个本地端口,而TCP的socket则不允许。
这是这样一个意思:A B要连接到S,肯定首先A B双方都会在本地创建一个socket,
去连接S上的socket。创建一个socket必然会绑定一个本地端口(就算应用程序里面没写
端口,实际上也是绑定了的,至少java确实如此),假设为8888,这样A和B才分别建立了到
S的通信信道。接下来就需要打洞了,打洞则需要A和B分别发送数据包到对方的公网IP。但是
问题就在这里:因为NAT设备是根据端口号来确定session,如果是UDP的socket,A B可以
分别再创建socket,然后将socket绑定到8888,这样打洞就成功了。但是如果是TCP的
socket,则不能再创建socket并绑定到8888了,这样打洞就无法成功。

结束
说明:该文章摘自各位大佬的博客,自己做笔记使用,如果哪位大佬发现错误请本着互惠惠利,共同发展的原则指出错误,带领本菜鸟走向小康生活。走过路过,喜欢点赞,谢谢~

以下是各大佬博客地址
https://blog.csdn.net/samuelltk/article/details/9169809?utm_source=blogxgwz0
https://zhidao.baidu.com/question/87120047.html

相关文章

  • 关于打洞

    1基本概念 a 内网ip 局域网,网线都是连接在同一个 交换机上面的,也就是说它们的IP地址是由交换机或者路由器进...

  • Linux下用GRE隧道直接联通两个私网

    概述 这篇文档其实主要讲的是行内关于“打洞”的事情。 什么叫“打洞” 通过在两个私网之间打一条隧道(tunnel)...

  • UDP打洞的由来?TCP打洞为什么不常见?

    为什么网上讲到的P2P打洞基本上都是基于UDP协议的打洞?难道TCP不可能打洞?还是TCP打洞难于实现?假设现在有...

  • NAT打洞

    对称型NAT相互之间也可能打洞成功 使用端口预测还有生日攻击算法:https://github.com/jflyu...

  • NTA打洞

    只有一方处于NAT设备后 此种情况是所有P2P场景中最简单的,它使用一种被称为“反向链接技术”来解决这个问题。大致...

  • TCP打洞和UDP打洞的区别

    原文地址: http://f543711700.iteye.com/blog/978887 为什么网上讲到的P2P...

  • 切片法求解立方体打洞问题 - 单个面打洞

    切片法求解立方体打洞问题 - 单个面打洞。 切片法求解立方体打洞问题:5×5×5 的立方体由棱长为1的小立方体组成...

  • 在北戴河打洞

    昨天下午我和爸爸妈妈在北戴河的海边,我和爸爸在沙滩边挖隧道。 我和爸爸挖好了隧道,我和爸爸拍了个照。 我特别高兴。...

  • ssh隧道打洞

    作为一名程序猿可能会碰到本地处理生产数据的问题,一般生产都会有从库可以进行进行查询操作,如果配有跳板机则是不能直接...

  • 开墙打洞

    昨天早上去公司的路上,远远看见一群穿着制服的人在街道上用彩条布拉了一条警戒线,我以为出啥事故了。 走近一看,轰鸣的...

网友评论

      本文标题:关于打洞

      本文链接:https://www.haomeiwen.com/subject/dhuctqtx.html