为什么NAT限制P2P,需要打洞才能通信? 5C

如题,现在的NAT映射的端口都有安全限制,只能是通过这个端口请求的IP和端口发来的信息才能通过,否则就会抛弃数据。

这种情况造成了我们在做P2P的时候需要打洞才行,而且对于部分型号 根本无法打洞

NAT为什么要这样设计,这样限制一下有什么意义?

这种设计的安全考虑是什么?

请大家解惑

2个回答

hailowell
纵马饮白虹 我不是问打洞技术,问的是为什么NAT要做限制导致我们现在要打洞?有什么意义,什么样的安全考虑?
6 个月之前 回复

因为P2P技术要求主机之间直接建立连接,而NAT技术隐藏了内部网络的结构。NAT内部网络的各个主机对外仿佛是同一主机的不同进程(使用相同IP,不同的端口号),也就是说,其它主机不能看到NAT背后的具体主机。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
理解p2p nat打洞技术
看完能够理解p2p nat打洞 的基本原理 从各个地方找来的 看完感觉还挺有用
UDP穿透NAT 打洞 P2P
UDP打洞相关的资料,包括原理,说明,以后相关的源码,是学习udp打洞的绝好资料。自己用过,感觉不错。
P2P穿透NAT通信
实现不同内网的主机间通信
TCP实现P2P通信、TCP穿越NAT的方法、TCP打洞
相关的技术详细资料,图文相结合,更有利于大家的学习
P2P之UDP打洞穿透NAT的源代码
UDP打洞NAT代码,是VC6.0的工程,绝对可以编译成功,服务端在公网IP阿里云的window端,两端客户端在本地电脑和虚拟机中,可以进行点对点进行通信,大家可以参考下!
NAT打洞
首先,Client A登录服务器,NAT A为这次的Session分配了一个端口60000,那么Server S收到的Client A的地址是202.187.45.3:60000,这就是Client A的外网地址了。同样,Client B登录Server S,NAT B给此次Session分配的端口是40000,那么Server S收到的B的地址是187.34.1.56:40000。 此...
nat打洞
老板终于让我做打洞了rn我从网上找了个demo看不懂啊rn为什么rnudpClient.Send(公网地址);rnudpClient.Send(内网地址);rn就通了呢???rn谁帮忙说几句
p2p通话(p2p打洞)
我做的一个类似QQ的一个通话软件,用的是eclipse,支持中文,不要强制下线(没有设置心跳包线程),用内网、外网ip均可,,是根据别人写的改写的,。。附带示例程序和exe4j打包的exe程序,个人感觉还行
P2P打洞?
碰到个奇怪的问题,如果ClientA 要往ClientB发消息,2者都与服务器建立了连接,并且ClientB也向ClientA 发送了一个无关的消息,(服务器得到ClientA 和 ClientB的地址端口都是正确的)。上述情形如果不是在局域网 则打洞成功了 ,但是如果ClientA 和 ClientB都在一个局域网内 那么 ClientB 接受不到 ClientA的信息,这会是什么问题 ?rn
NAT打洞(udp打洞和tcp打洞)
记录udp和tcp打洞过程中的重要技术点。
WCF 能够P2P通信 或者打洞吗
百度搜了一下 居然看到好多Wcf p2p的东西rn看了几个 基本上都是如果p2prn则双发架设一个wcf服务端rn然后双方互相动态连接对方的服务端rn但是这样在一个网段内能够实现rnp2p能够实现吗
基本java打洞通信实现p2p
基本java打洞通信实现p2p
C#UDP打洞NAT
C#UDP打洞NAT C#UDP打洞NAT C#UDP打洞NAT
UDP .NAT 打洞困惑
看UDP NAT文章 说 A 发送信息给B 如果直接发 会被拒绝 那就是必须通知服务器 让B发给A打洞信息 。。。。我看了不明白呀 那还不是 B发给A 也不是直接发吗。。。。A为什么不拒绝,。。。。。。。心思不明白 请指教
NAT打洞的实现问题
我做了一个通讯软件(有点儿像QQ),结果发现在内网中无法工作。因为存在NAT,导致ServerSocket接不到连接,DatagramSocket接不到数据包。在网上查了关于UDP和TCP打洞的资料,却发现需要一个中转服务器。我只有一个在Sourceforge上注册的支持PHP的WEB站点和一个小型的Mysql数据库,怎么解决这个内网问题啊?苦恼ing...rn实在不行就放弃了吧。。。。。。
C# NAT 打洞技术
有谁用过C#做过广域网聊天程序,就是关于NAT技术,如何打洞.网上找了下,都是理理论知识,没有实质的(或都就是代码不全).谁能HELP ME!
TCP打洞NAT
超经典的TCP打洞程度源代码。目前网上的全是UDP打洞,很少有TCP方面的。
NAT打洞穿越
实现两台NAT内主机之间的通信,基于UDP传输协议,VC写的
关于NAT和UDP打洞
现在关于NAT的类型有 Full Cone NAT ,Restricted Cone NAT,Port Restricted Cone NAT,Symmetric NAT四种类型,要穿透NAT, UPD打洞是不是适合上述所有类型,还是只能适合部分NAT类型。我看的资料上说,UDP打洞貌似只能在前三种NAT类型起作用,但是对于Symmetric NAT好像不起作用。为什么UDP打洞不能穿透Symmetric NAT这种类型的NAT?
TCP打洞,穿越NAT
较详细的介绍了NAT原理,TCP打洞的原理以及附带TCP打洞的源码,具有较好的参考价值。
关于UDP的NAT打洞
1. 我上网看到CONE方式打洞是通过服务端转发打洞消息到对方客户端,再由对方客户端返回消息到源客户端的洞.以完成双方打洞过程.但我想了另一种方法,但不知可不可行,我的方法是客户端到服务端通过心跳维持一个洞,而P2P时不用另打洞了.如C1向服务端心跳,服务端记录C1的洞.C2也是一样.当C2与C1通讯时,只要向服务端请求C1的打洞信息,就住C1的洞发消息,C1要发消息,也向服务端请求C2的洞的信息.这种方式不知可不可行,请大家给点意见.rnrn2.我是做一个点对点对聊程序,用来学习P2P的.用UDP,客户端用重叠模式接收的.我有一个全局的SOCKET变量,用来保存监听的SOCKET,因为要定时向服务端打洞.所以我必需要用这SOCKET向服务端打洞.因为我UDP监听是通过循环WSARECVFROM阻塞来达到监听的目的,我尝试在另一线程通过该SOCKET向服务端打洞.但每次都在SENDTO时被阻塞.若我不用监听,则可以顺利发送.请问有什么方法可以使该SOCKET可以双工运行?(不过我的发送是用SENDTO而不是WSASENDTO,而SOCKET是用WSASOCKET建立的.请问这样有问题吗?)
p2p 打洞C++源码
P2P打洞的理论和相关实现程序代码,详细介绍了P2P打洞的理论知识,并且给出了相关的实现代码。无论是学习编写聊天程序还是木马都很有帮助
P2P原理之打洞
http://www.cppblog.com/peakflys/archive/2013/01/25/197562.html https://www.usenix.org/legacy/event/usenix05/tech/general/full_papers/ford/ford_html/ IPv4分配的地址有限,满足不了现在的需求,而IPv6又不能直接向下兼容,所以有了NAT,网络地址
P2P打洞原理
一、P2P时,为何需要打洞?两个局域网内的客户端没法直接连接,通过打洞可以实现两个局域网内的客户端间通信。二、基础知识介绍1、两个内网的客户端没法直接建立通信,需要公网上的服务器来协助2、内网客户端和公网服务器通信时,会经过路由器,再到达公网服务器3、公网服务器和内网客户端通信时,也会经过路由器,再达到内网客户端4、路由器具有NAT功能,即网络地址转换功能,实现内网地址、端口和公网地址、端口的转换5
P2P UDP 打洞问题...
我现在出现的问题是:我的服务器在客户端登陆时,可以给客户端发已经登陆的客户列表信息,客户端也有一个每一秒的心跳时钟,但是,我的客户a向服务器请求客户b打洞时,服务器收到信息,并给客户b发送信息,发送没有错误,但客户b收不到.我自己又做一个按钮用来对选中的客户端发送信息,发现发送没有错误,但是,客户端没有一个能收得到的.请问这是什么问题啊?rnrn问题:服务器发送信息到客户端不成功.
p2p打洞问题?
我初略看了看 “P2P 之 UDP穿透NAT的原理与实现” 这篇文章,rn不过对打洞还不是很明白,对于cone NAT在互相发送UDP打洞包的时候,是否要明确发送到对方公网的IP的那个端口上,或者是发送到对方公网IP的任意端口?rnrn而对于Symmetric NAT又该怎么处理呢?难道没有办法解决这种NAT么?
关于P2P的打洞问题
Client A与Client B都可以与Server S通信了。如果Client A此时想直接发送信息给Client B,那么他可以从Server S那儿获得B的公网地址187.34.1.56:40000,是不是Client A向这个地址发送信息Client B就能收到了呢?答案是不行,因为如果这样发送信息,NAT B会将这个信息丢弃(因为这样的信息是不请自来的,为了安全,大多数NAT都会执行丢弃动作)。现在我们需要的是在NAT B上打一个方向为202.187.45.3(即Client A的外网地址)的洞,那么Client A发送到187.34.1.56:40000的信息,Client B就能收到了。这个打洞命令由谁来发呢,呵呵,当然是Server S。rn 总结一下这个过程:如果Client A想向Client B发送信息,那么Client A发送命令给Server S,请求Server S命令Client B向Client A方向打洞。呵呵,是不是很绕口,不过没关系,想一想就很清楚了,何况还有源代码呢(侯老师说过:在源代码面前没有秘密 8)),然后Client A就可以通过Client B的外网地址与Client B通信了。rn////////////////////////////rn以上是我在一段资料中看到的,如果A想与B通信,会被B的NAT执行丢弃,然后Server会命令Client B向Client A方向打洞,那么Client B向A发送的打洞信息就不会被网管执行丢弃吗?
P2P之TCP打洞(翻译)
防火墙和网络地址转换(NAT)设备变得越来越流行了,它们给使用P2P 协议建立连<br>接造成了明显的问题。适当的进行配置,这些中间箱阻止从局域网以外发起的TCP 连接请<br>求。这篇文章提出一种新颖的机制用于在两台中间箱后面的主机之间创建直接的TCP 连接,<br>且需要尽可能少的第三方的帮助。我们在通常的环境下使用通常的硬件实现了这些解决方案<br>中的两个。我们可以在两台全部在典型的NAT 设备后面的主机之间创建直接的TCP 连接,<br>这种NAT 设备是为小型网络设计的。一旦这个连接建立了,应用程序就可以使用标准的TCP<br>实现而不用任何外部的帮助就可以在彼此之间进行通信了。
P2P打洞服务器
服务端采用IOCP网络模型,客户端采用多线程。实现了超时重发、差错检测、明文的MD5加密、确认包的实现。希望大家共同进步!
关于P2P打洞的原理。
情况:多个客户端、一个服务器。rnrn1.客户端登陆,服务器登记用户的IP和PORT。登陆成功后客户有个定时器向服务器发送UDP信息,来保持在线。rnrn2.现在是当两个客户端要互相发信时,客户A根据客户端B的IP和PORT(服务器端取的)向客户B发送把洞命令,维持连线。rnrn问:rn1.在测试中发现:[color=#FF0000]用服务器端取的IP和PORT就可以实现互相正常通信了,请问客户A根据客户端B的打洞还有必要吗?[/color]rnrn2.还有就是创建一个scoket后,一个scoket就占一个端口?rnrn3.按上面方方法:客户A连服务器所用的端口,也可以用来客户端A和客户端B及其它客户端相连?rnrn对这方面不清楚,请各位指教下。
TCP打洞的P2P服务器
在构建TCP打洞过程中,通过P2P服务器要进行连接的双方都主动进行过connect后,还是无法连接上,一般会是什么原因啊?
求助P2P打洞问题?
有两个不同的局域网。比如A网和B网,当这两个网内分别有一台机器互相打洞,比如A1和B1,那么这两台机器就可以互相通信了,rn这样问题如下:rn 现在这两个网的其它的机器是否可以直接访问这两台机器?比如B2访问A1,或者A2访问B1,但是A2和B2没有互相打洞,而是A1和B1互相打洞。
UDP打洞P2P技术
P2P技术,UDP打洞,穿越NAT,服务器与客户端程序源码。学习P2P技术,UDP打洞的非常好的资料。 《[WINDOWS网络与通信程序设计].王艳平》第十章源码
p2p打洞 实现聊天
p2p打洞 实现聊天
P2P打洞服务器与客户端
本文讲解了P2P打洞的原理、P2P服务器的实现、P2P客户端的实现,源码链接
关于P2P打洞
处于不同NAT之后的客户端通信     我们假设 Client A 和 Client B 都拥有自己的私有IP地址,并且都处在不同的NAT之后,端对端的程序运行于 CLIENT A,CLIENT B,S之间,并且它们都开放了UDP端口1234。 CLIENT A和CLIENT B首先分别与S建立通信会话,这时NAT A把它自己的UDP端口62000分配给CLIENT A与S的会话,NAT B
P2P打洞java源代码
首先判断是否可以直连,可以直连,表明内网环境,直接通讯。否则需要一个中间人的角色:Server。所以打洞的过程如图所示:       主要流程是这样的:(1)如果A想与B通信;(2)A首先连接C,C得到A的外网NAT A的地址和端口;(3)B也要连接C,C得到B的外网NAT B的地址和端口;(4)A告诉C说我要和B通讯;(5)C通过NAT B发信息给B,告诉B A的外网NAT A的地址和端口;(6...
p2p打洞 与 UPNP
我的理解是UPNP实现的是打洞效果,不知道这样理解对不对。还有UPNP能提高打洞的成功率吗?打洞通了的话能提高传输速度吗?UPNP在路由器上的映射表是怎么回事?在多级的NAT后边,UPNP是不是也不会成功?rnrnrn还有这个问题:http://topic.csdn.net/u/20080429/11/c880895a-dec6-44b8-9e9e-a83fb20db05e.htmlrnrn凡是进来的兄弟都有分。有这方面资料的兄弟能不能传份给我?jinghao666@126.com。rnrn我会陆续加分,直到问题全部解决。-_-#
memcache p2p打洞技术
    refurl: http://web.49jie.com/?paged=5
C++实现P2P打洞
C++实现P2P打洞,UDP
相关热词 c++和c#哪个就业率高 c# 批量动态创建控件 c# 模块和程序集的区别 c# gmap 截图 c# 验证码图片生成类 c# 再次尝试 连接失败 c#开发编写规范 c# 压缩图片好麻烦 c#计算数组中的平均值 c#获取路由参数