内网访问外网的一个小问题

黑娃 2011-08-31 06:31:45
动态端口映射可以让内网机器通过NAT访问外网服务器,并接收到服务器返回的数据。这个过程看起来只存在一条线,是内网主动像外网发起的,而外网回送的数据也通过这条线回到内网。但是这条线什么时候失效呢,就算是内网客户机关闭了发送程序,NAT也不知道吧,那么它是维持这条线到一定时间吗?如果是udp,情况也一样吗?
...全文
139 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
疯狂鸭子 2011-09-29
  • 打赏
  • 举报
回复
哈哈,建议你看看UDP打洞技术~
xengine-qyt 2011-09-02
  • 打赏
  • 举报
回复
楼主 你有几个概念错了,内网的机器不通过映射也可以与外网链接

网络编程基础 可以写上几本书。。。在内网中有 非对称和对称之说 不知道你值的哪个?

如果想让外网访问内网中的机器,我们知道 路由器是通过端口来识别机器和应用程序的

一般家用路由器都支持UPNP,他是可以设定过期时间的,为0就不会过期!
羽飞 2011-09-02
  • 打赏
  • 举报
回复
我以前在网上看的,说是不同路由器情况不同,还要根据协议来分,TCP和UDP也不同
UDP向外网发送时,向多个目的发送数据时,有的维持一个映射,有的对每个都做一个单独的映射
辰岡墨竹 2011-08-31
  • 打赏
  • 举报
回复
NAT有很多种,有的是会一直维持连接,有的每次都会建立新的关系。
维基百科介绍了几种NAT:http://zh.wikipedia.org/zh/%E7%BD%91%E7%BB%9C%E5%9C%B0%E5%9D%80%E8%BD%AC%E6%8D%A2
飞天御剑流 2011-08-31
  • 打赏
  • 举报
回复
[Quote=引用楼主 falcomavin 的回复:]
动态端口映射可以让内网机器通过NAT访问外网服务器,并接收到服务器返回的数据。这个过程看起来只存在一条线,是内网主动像外网发起的,而外网回送的数据也通过这条线回到内网。但是这条线什么时候失效呢,就算是内网客户机关闭了发送程序,NAT也不知道吧,那么它是维持这条线到一定时间吗?如果是udp,情况也一样吗?
[/Quote]

你说的这个过程不叫端口映射,而是网络地址转换:NAT,端口映射指的是将内网服务“发布”到外网的机制,而非从内网到外网的访问。NAT所建立的你所谓的“线”是逻辑上的,虚拟的,它将访问外部的数据包的源IP和端口替换为NAT公网接口的公网IP和端口,并将连接关系记录下来,如果支持UPNP,则包内IP和端口也会进行转换,如果经过一定时间无法连接到内网的源或者外网目标,该连接关系记录会被删除。
贪食蛇男 2011-08-31
  • 打赏
  • 举报
回复
咳,咳,我来客串一下,虽然文不对题:

VC调试(TC或BC用TD调试)时按Alt+8、Alt+6和Alt+5,打开汇编窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应内存和寄存器变化,这样过一遍不就啥都明白了吗。
(Linux或Unix下可以在用GDB调试时,看每句C对应的汇编并单步执行观察相应内存和寄存器变化。)
想要从本质上理解C指针,必须学习汇编以及C和汇编的对应关系。
从汇编的角度理解和学习C语言的指针,原本看似复杂的东西就会变得非常简单!
指针即地址。“地址又是啥?”“只能从汇编语言和计算机组成原理的角度去解释了。”

提醒:
“学习用汇编语言写程序”

“VC调试(TC或BC用TD调试)时按Alt+8、Alt+6和Alt+5,打开汇编窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应内存和寄存器变化,这样过一遍不就啥都明白了吗。
(Linux或Unix下可以在用GDB调试时,看每句C对应的汇编并单步执行观察相应内存和寄存器变化。)
想要从本质上理解C指针,必须学习C和汇编的对应关系。”
不是一回事!

5,531

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 模式及实现
社区管理员
  • 模式及实现社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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