Web服务器如何处理相同端口和连接的连接。 IP地址?

时间:2016-01-18 01:04:58

标签: apache sockets networking tcp webserver

我打开IE浏览器&在我的计算机中输入Chrome并键入localhost:80,然后我会获得索引页。

在这里,我认为我的机器的IP对于两个连接(IE浏览器和Chrome)都是相同的,端口也是如此(80)。    注意:源端口将不同(因为目标是相同的:localhost IP),这是我的第二个问题。

  1. 那么webserver(让我们说apache)如何处理这个端口80连接而不会失败?是端口转发吗?在操作系统级别,即使我尝试使用addr重用,端口重用参数,它们完全相同,我们不能使用相同的IP和多个连接。端口。

  2. 现在,您可能已经提出了一个解决方案:虽然源端口和IP相同,但目标端口在包中是不同的:<protocol>, <src addr>, <src port>, <dest addr>, <dest port>。 答:我在图像上看到了49483~50004个端口。客户端如何知道哪个目标端口(49483~50004)受Web服务器绑定?如果它在0到65355之间是随机的,则Web服务器总是绑定所有端口,这非常消耗资源。网络服务器如何避免这种情况?

  3. Look at this image: command prompt-> netstat

    如果这个问题与低级别的资源有关,那么我可以理解嵌入式TCP / IP / UDP,Phy MAC通信和包结构。

2 个答案:

答案 0 :(得分:1)

你把这一切都放在了前面。

  • 服务器上的所有端口号都是相同的:80。因此客户端只需要知道80端口。
  • 客户端的所有端口号都不同:49483-50004等。因此连接中没有歧义,因为您提到的4元组是唯一的。

答案 1 :(得分:0)

默认情况下,所有http请求都会调用端口80中的服务器,因为服务器默认侦听该端口。因此,您只提供IP或主机名,Web浏览器添加默认端口(80)。如果您的Web服务器正在另一个端口侦听(通常Tomcat默认在8080中侦听),您可以提供自定义端口,例如您在http://www.youamazingweb.com:8080中调用它。

一个很好的例子是将IP视为家庭,端口是客户进入以消耗服务器中托管的某些资源的门。