浏览器如何在80端口上与Web服务器建立连接?详细资料?

时间:2016-02-14 02:51:28

标签: networking tcp ip

(这个问题的灵感来自对此主题的回应:How WebSocket server handles multiple incoming connection requests?

我的理解是这样的:

假设客户端IP = 1.1.1.1,服务器IP = 9.9.9.9

  1. 浏览器选择随机本地可用端口,例如5555,并启动与服务器端口80的连接。因此,在客户端上,socketfd_client应代表(1.1.1.1:5555, 9.9.9.9:80, TCP)之类的IP连接。

  2. 服务器在其端口80上调用accept()并识别来自客户端的连接请求。然后,服务器选择一个随机的本地可用端口,例如8888,以满足该连接请求。因此,在服务器上,socketfd_server应代表(1.1.1.1:5555, 9.9.9.9:8888, TCP)之类的IP连接。

  3. 我的问题是:

    如果我的上述理解是正确的,socektfd_clientsocketfd_server有不同的服务器端口。客户端有80,而服务器有8888.如何进行通信?我认为客户端应该改为使用服务器端口8888,但是何时以及如何使用?

1 个答案:

答案 0 :(得分:4)

  

浏览器选择随机本地可用端口,例如5555

没有。 操作系统执行此操作:具体而言,是网络堆栈的TCP部分。

  

并启动与服务器端口80的连接。因此,在客户端,socketfd_client应代表IP连接,如(1.1.1.1:5555,9.9.9.9:80,TCP)。

正确。

  

服务器在其端口80上调用accept()并识别来自客户端的连接请求。

正确。

  

然后服务器选择一个随机的本地可用端口,比如8888

没有

  

完成该连接请求。

没有

  

所以在服务器上,socketfd_server应代表一个IP连接,如(1.1.1.1:5555,9.9.9.9:8888,TCP)。

没有。两端的连接由{1.1.1.1:5555, 9.9.9.9:80}表示。服务器端没有新端口。

  

我的问题是:

     

如果我的上述理解是正确的

不是。

  

socektfd_client和socketfd_server有不同的服务器端口。

没有

  

客户端有80,而服务器有8888.如何进行通信?我认为客户端应该改为使用服务器端口8888,但是何时以及如何使用?

从不。