ftp或http协议可以渗透NAT实现P2P功能吗? 在线等……

qiezic 2005-04-26 10:59:38
客户之间是在没有公网地址的情况下(没有直接经过NAT映射的)。
但是有经过NAT上网,在NAT上有一个转发端口只不过是没有经过NAT直接映射的,就象你在QQ上看到的对方IP和端口。
...全文
347 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
qiezic 2005-04-30
  • 打赏
  • 举报
回复
up
qiezic 2005-04-29
  • 打赏
  • 举报
回复
To : cnming(cnming)
哎,你把UDP的打洞概念错认为TCP了。
qiezic 2005-04-29
  • 打赏
  • 举报
回复
如果直接连接NAT背后的主机是不可能的,不信你试试去。
TCP不存在打洞的概念,UDP到是存在的这个概念。
cnming 2005-04-29
  • 打赏
  • 举报
回复
一:经过路由直接映射
二:在外网内联(VPN、VNN)的基础上 VNN我不大清楚

这两种肯定可以TCP相连

我说的TCP直连是指利用NAT的特性进行TCP打洞进行连接的

例如QQ,目前版本的QQ就可以支持TCP连接
cnming 2005-04-28
  • 打赏
  • 举报
回复
>>To cnming(cnming):
>> 首先谢谢你的分析,不过我看你的分析好象是Udp打洞过程!!!

如果是UDP打洞还要发送TCP的握手协议吗?
qiezic 2005-04-28
  • 打赏
  • 举报
回复
我是说在排除
一:经过路由直接映射
二:在外网内联(VPN、VNN)的基础上
两种情况外是不可能用TCP协议连接NAT背后的主机的,不知是否有误还请多指教!
cnming 2005-04-28
  • 打赏
  • 举报
回复
就以UDP的P2P直连来说,也不是所有的NAT都能支持阿


文章中有一段话
注意:以上过程只适合于Cone NAT的情况,如果是Symmetric NAT,那么当Client B向Client A打洞的端口已经重新分配了,Client B将无法知道这个端口(如果Symmetric NAT的端口是顺序分配的,那么我们或许可以猜测这个端口号,可是由于可能导致失败的因素太多,我们不推荐这种猜测端口的方法)。


按你的意思,是否说“所以我觉的用UDP协议连接NAT背后的主机是不可能的。”?
cnming 2005-04-28
  • 打赏
  • 举报
回复
可是这就是通过NAT的TCP直连啊

只是TCP通过NAT直连肯定比UDP直连来得麻烦和苛刻

所以,P2P通讯首选UDP
qiezic 2005-04-28
  • 打赏
  • 举报
回复
先不说你的观点,首先你的承认在不同NAT背后的主机是不可以用TCP协议连接的。当然的排除两中情况:
一:经过路由直接映射
二:在外网内联(VPN、VNN)的基础上

所以我觉的用TCP协议连接NAT背后的主机是不可能的。
cnming 2005-04-27
  • 打赏
  • 举报
回复
除非双方的NAT都是Simple firewalls 或者都像cone NAT那样处理TCP通信,否则两个客户端还是无法建立这个TCP直连,因为它们无法预知对方的NAT会分配给新的会话的端口号是多少。
cnming 2005-04-27
  • 打赏
  • 举报
回复
Client A发送一个TCP SYN 包给 Client B,我们把这个SYN包叫做 SYN A,包含的信息如下:
SrcAddress:10.0.0.1 Tcp port :1234
DestAddress:138.76.29.7 Tcp port:310000

同时,Client B发送一个TCP SYN包给Client A,我们把这个包叫做 SYN B,包含的信息如下:
SrcAddress:10.1.1.3 Tcp port :1234
DestAddress:155.99.25.11 Tcp port:620000

SYN A首先通过NAT A(必须在SYN B到达NAT A之前),NAT A看到这个包并将其地址信息进行转换为:
SrcAddress:155.99.25.11 Tcp port :620000
DestAddress:138.76.29.7 Tcp port:310000
我们把这个经过 NAT A转换的包叫做 SYN A’

同样,SYN B首先通过NAT B(也必须在SYN A到达NAT B之前),NAT B看到这个包并进行地址转换为:
SrcAddress:138.76.29.7 Tcp port:310000
DestAddress:155.99.25.11 Tcp port :620000
我们把这个经过NAT B转换的包叫做 SYN B’

这时,NAT A和NAT B都在自己的TCP连接表中存储了含有上面两个公网IP地址和端口信息,因此,只要看到包含这两个信息的SYN包,都会让其通过。

就在这个瞬间,SYN A’到达了NAT B,NAT B检查了一下SYN A’,发现它的地址信息和自己TCP连接表中的信息相符,便让SYN A’通过了,并将SYN A’的地址信息转换为:我们称这个包为 SYN A’’
SrcAddress:155.99.25.11 Tcp port :620000
DestAddress:10.1.1.3 Tcp port:1234
以使这个包能够到达内部网中Client B上

也就在这个瞬间,SYN B’到达了NAT A,NAT A检查了一下SYN B’,发现它的地址信息和自己TCP连接表中的信息相符,便让SYN B’通过了,并将SYN B’的地址信息转换为:我们称这个包为 SYN B’’
SrcAddress:138.76.29.7 Tcp port :310000
DestAddress:10.0.0.1 Tcp port:1234
以使这个包能够到达内部网中Client A上

这时,Client A收到了SYN B’’,Client B收到了SYN A’’,并返回给对方ACK,经过三次握手,这个P2P的TCP连接就建立了。
cnming 2005-04-27
  • 打赏
  • 举报
回复
VPN是居于硬件上的,走TCP

TCP可以实现渗透,真的假的?
当然是真的,但是比较麻烦


qiezic 2005-04-27
  • 打赏
  • 举报
回复
up
qiezic 2005-04-27
  • 打赏
  • 举报
回复
up
qiezic 2005-04-27
  • 打赏
  • 举报
回复
To cnming(cnming):
首先谢谢你的分析,不过我看你的分析好象是Udp打洞过程!!!

高手们有看法,尽请留下……

qiezic 2005-04-26
  • 打赏
  • 举报
回复
谢谢楼上,不大明白你的意思。

我想知道在客户之间(都在NAT背后没有经过直接映射就是不能架网站的那种)能使用ftp、http通信吗?
大雨仔 2005-04-26
  • 打赏
  • 举报
回复
不行,当你看到那个口的时候,说明已经被占用了
qiezic 2005-04-26
  • 打赏
  • 举报
回复
郁闷啊
qiezic 2005-04-26
  • 打赏
  • 举报
回复
TCP可以实现渗透,真的假的?
至于VPN用什么协议我不大懂,但是VNN是用ip/ipx协议的,也不是用TCP的,楼上前辈们能跟我讲讲用TCP渗透的原理吗?谢谢
nga96 2005-04-26
  • 打赏
  • 举报
回复
UP
加载更多回复(3)

111,120

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧