请教路由器的NAT类型和内网穿透

a1234567750 2009-11-12 11:32:11
加精
1、NAT分为4中类型,全通、限制、端口限制、对称。我想知道普通的TP-LINK家用路由器的什么类型的,在路由器中是否可以看到?

2、当内网PC访问公网服务器时,NAT将本地IP和端口映射为公网IP和端口 ,NAT设备会保存这个映射多久,是否可设?

3、在测试中看到的,内网ip和端口映射出去会变成公网地址为 公网ip和内网端口
如 192.168.0.240:5060 ->59.32.12.43:5060
我的问题是内网PC经过NAT映射出去的端口一定和内网端口一样吗?只是IP被替换成公网IP了?

请各位做过内网穿透的高手给予小弟一些帮助,在此谢过。




...全文
2360 51 打赏 收藏 转发到动态 举报
写回复
用AI写文章
51 条回复
切换为时间正序
请发表友善的回复…
发表回复
laorer 2009-12-16
  • 打赏
  • 举报
回复
我想知道如何得到这个外部的IP与端口,IP好说,用http之类的都可以得到,端口呢?我用 jsp的 request.getRemotePort得到的是 -1
^
TRUE 2009-12-04
  • 打赏
  • 举报
回复
mark
qq614190370 2009-11-24
  • 打赏
  • 举报
回复
MARK
makui 2009-11-24
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 a1234567750 的回复:]
第三个问题,那我为什么我看到的内网访问服务器的映射(不是路由器手动设的端口映射),都是内网端口会映射成相同的外网端口啊??


[/Quote]

这个问题我觉得很好推翻,也话是路由器实现的一种算法吧,但这个很好举出反例:如果你的局域网内有多台电脑要用相同的端口呢,最多也只有一个能够一致,另一个肯定不会一致了。
a1234567750 2009-11-18
  • 打赏
  • 举报
回复
以保证超时后,对方端口可能变掉,本地用户列表未刷新带来的错误。

a1234567750 2009-11-18
  • 打赏
  • 举报
回复
知道超时,就知道多久象向服务器请求一次指定用户信息比较适合
a1234567750 2009-11-17
  • 打赏
  • 举报
回复
[Quote=引用 43 楼 lvyinghong 的回复:]

大多下载软件都是会使用upnp的,bitcomet  迅雷等。 QQ 那些简单的聊天都是服务器转发的了。
如果语音聊天到话,我也觉的QQ服务器上不会为你维护什么NAT映射表,每次连接直接 QQ的服务器双方做一下 UDP hole punching 就行了,他要知道你外网ip和端口做什么,你真正要连过来的时候是哪个就用哪个,他不必要记录。  所以不知道楼主要了解这个超时时间做什么,我觉的没有必要。

[/Quote]

你说的没错。
我为什么要知道这个超时,你也提到了UDP hole punching,我们假设NAT设备为端口限制型,A、B为同一内网的PC,C为另一内网的PC。

A、B用内网的相同端口访问外网,A:192.168.1.2:5060
B:192.168.1.3:5060
为了打洞而用的服务器公网ip为 59.32.12.32:2008
假设打洞的前两步已经做好了,服务器已经有了来自不同地域的PC注册的用户名、IP、端口。
服务器记录A的外网IP:59.23.45.56:5060
B的外网IP:59.23.45.56:30000
那么这个时候AB与C通过P2P hole 已经可以通信了,而由于A长时间为与C通信(也长时间没经过本地NAT),NAT的映射端口5060就会释放掉,然而B这时候再向C通信,B的外网IP很可能由于映射表保存周期到了而变为59.23.45.56:5060,此时对于端口限制型的NAT是会不能穿越的,C将无法收到信息,当然全通型NAT是可以穿透的,不会有此问题。

所以要知道NAT设备保存映射的周期啊。。。。





lvyinghong 2009-11-17
  • 打赏
  • 举报
回复
已经可以通信了,而由于A长时间为与C通信(也长时间没经过本地NAT),NAT的映射端口5060就会释放掉,
---------
A不是用的5060 端口和 C通讯? 哪里说他用哪个呢?
如果A在用5060 ,那么5060就不会被释放。



然而B这时候再向C通信,B的外网IP很可能由于映射表保存周期到了而变为59.23.45.56:5060
---------------------
就像你说到那样 B的59.23.45.56:30000 被释放了,就是说这期间B 没用过这个端口和任何一方包括服务器进行通讯。 那么下一步他要用 59.23.45.56:5060 和C的 某一端口 连接,肯定要重新做一次 udp 打洞的。


就算你知道 这个 “NAT设备保存映射的周期” 不知道你有什么作用 ???
难道你想用这个超时再服务器端推测B改变端口后用的是哪一个端口?
这根本没有必要,B改变之后自然会通知服务器。

反正B 和C 同时知道对方到外网端口就可以进行通讯,这个都是服务器分别告知B和C的,如果某一方到端口又改变了导致连不上,还是得又通过服务器才行。




========================
不说了,等个有实际经验到人来给楼主说说具体都是怎么做到吧。现在我说了也是白说






lvyinghong 2009-11-16
  • 打赏
  • 举报
回复
[Quote=引用 22 楼 a1234567750 的回复:]
引用 18 楼 xu_2007 的回复:
引用 3 楼 lvyinghong 的回复:
大多都支持upnp端口映射功能到,可以自己指定对应端口映射到,这种不会过期。


tp-link家用型的基本上upnp都是关闭状态的,所以即使要使用这个方法也要先打开它!


你说这种是手动设置端口映射了,而P2P的话,一般都是由固定公网ip的来做记录和管理NAT映射后的ip表,从而实现内网访问其他内网,所以还是知道映射的保存的周期啊。

还有 为什么我的路由器,内网映射到外网的端口是一样的,如:

如 192.168.0.240:5060 ->59.32.12.43:5060

而立刻用局域网另一台PC192.168.0.241:5060访问外网->59.32.12.43:55603.

貌似映射是这样的原则:内网的端口一般被NAT映射成外网端口,而这个外网端口若是已经被内网其他IP和端口映射过了不久,就会随机生成了。。这是实验的结果,不知道有没有理解错


[/Quote]



大多下载软件都是会使用upnp的,bitcomet 迅雷等。 QQ 那些简单的聊天都是服务器转发的了。
如果语音聊天到话,我也觉的QQ服务器上不会为你维护什么NAT映射表,每次连接直接 QQ的服务器双方做一下 UDP hole punching 就行了,他要知道你外网ip和端口做什么,你真正要连过来的时候是哪个就用哪个,他不必要记录。 所以不知道楼主要了解这个超时时间做什么,我觉的没有必要。
a1234567750 2009-11-16
  • 打赏
  • 举报
回复
[Quote=引用 41 楼 nanhaochen 的回复:]
引用 1 楼 superlym2005 的回复:
1、可以用这个监测你的Nat类型。http://sourceforge.net/projects/stun/

2、是有超时的,好像是15分钟

3、端口是不一定一样的,是交换机做的映射,它自己来维护这个映射

如果内网IP映射是周期性映射的,哪内网的QQ跟外网的QQ聊天时,如果一个QQ用户登录QQ两个小时,前后和外网QQ聊天,如果可以显示ip版,哪对方的QQip应该变化了吧,还是。。。。不知道内网QQ之间聊天时如何穿透的呢?
[/Quote]


你的理解不对吧,外网IP不是周期性的,ADSL的话,每次拨号才会重新分配,我说的是NAT映射后的IP和端口,在NAT设备上保存在时间是周期性,实质上映射后的外网IP是一段时间内(没重新拨号之前)都是一样的,不过端口可能不同(由于局域网内多台的主机同时向外部网络访问),NAT有一个机制来分配端口的。

不过在我看到的,一般内网端口就会映射成对应外网端口。然后NAT保留这个映射一段时间,在此时间内,内网仍有其他PC用此内网端口向外部访问,那么由于之前NAT的端口被其他映射占用,就会随机分配了。

如 192.168.0.240:5060 ->59.32.12.43:5060

而立刻用局域网另一台PC192.168.0.241:5060访问外网->59.32.12.43:55603.


nanhaochen 2009-11-14
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 superlym2005 的回复:]
1、可以用这个监测你的Nat类型。http://sourceforge.net/projects/stun/

2、是有超时的,好像是15分钟

3、端口是不一定一样的,是交换机做的映射,它自己来维护这个映射
[/Quote]
如果内网IP映射是周期性映射的,哪内网的QQ跟外网的QQ聊天时,如果一个QQ用户登录QQ两个小时,前后和外网QQ聊天,如果可以显示ip版,哪对方的QQip应该变化了吧,还是。。。。不知道内网QQ之间聊天时如何穿透的呢?
rclic 2009-11-14
  • 打赏
  • 举报
回复
ding ding ding....
xwsn007 2009-11-14
  • 打赏
  • 举报
回复
MARK & SUPPORT
glibfox 2009-11-13
  • 打赏
  • 举报
回复
学习了
ju897d 2009-11-13
  • 打赏
  • 举报
回复
占个位,我也在问。
cchaha 2009-11-13
  • 打赏
  • 举报
回复
不错
Noak_ark 2009-11-13
  • 打赏
  • 举报
回复
学习了

sunmun 2009-11-13
  • 打赏
  • 举报
回复
学习网络知识啊!
danny 2009-11-13
  • 打赏
  • 举报
回复
1.TP-LINK所有的路由都是全通的,我打电话问过TP-Link的.

2.目前没有见过可设的. 最好不要超过两分钟.

3.肯定不光IP换转换了.. 你可以测一下,内网的两台机器,bind同一端口,向一个server发数据,一样的话怎么区分啊
liuxiaohui1987 2009-11-13
  • 打赏
  • 举报
回复
我顶一下!
加载更多回复(30)

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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