这是一个微不足道的问题,但我真的找不到一个好的答案。NAT后面的Web服务器,我需要为请求端口启用端口转发吗?
当我主持端口80上侦听很显然,我需要启用端口转发到web服务器的80端口在我的路由器在NAT后面的网络服务器。但是,80只是服务器的接受端口,对于实际的请求,它将使用不同的临时随机端口。
我的问题是,我还需要启用现在正被用于请求或不是这个随机端口的端口转发?如果不是,它是如何工作的,我的意思是它怎么神奇地通过NAT呢?
让我引用一本书: “服务器(程序)运行在特定的计算机上,并且具有绑定到特定端口的套接字,服务器侦听套接字以便客户端发出连接请求(见)。如果一切顺利 正常,服务器接受连接,一旦接受,服务器获取绑定到不同的端口一个新的套接字 ,它需要一个新的socket(因此不同的端口号),以便它可以 继续在服务连接的客户端时收听原始套接字的连接请求。“
我只是想知道,如果这个“新的连接”适用于客户端是在互联网上,如果端口转发时,才会启用路由器后面的服务器的监听端口。
请参阅我的编辑,我不认为我问过这个问题吧。 – waiferv
写给作者(Buyya的“面向对象程序设计与Java”,对吗?)他错了,当然需要一个新的套接字,但不是一个新的端口,它并不是一个新的TCP端口。在我看来,作者试图“转述”http://docs.oracle.com/javase/tutorial/networking/sockets/definition.html,这是注意不要降低端口的不准确性。看看书中的图表和我提供的链接,看看我的意思,没有新的TCP端口! – gae123
我仍然不明白的是,如果没有新的端口,那么一个客户端与服务器的所有通信都会阻止监听端口,所以没有其他客户端可以连接。或者是真的如你在给我发送的链接中说的那样,一个端口可以用于多套接字连接?我总是学习一个端口=套接字,否则资源很忙。是Java特定的,我可以在一个端口上打开多个套接字,还是它通常被设计为在网络中如此?你能指出我的资源澄清这一点吗? – waiferv