Networking 浏览器如何在80端口上与web服务器建立连接?细节?

Networking 浏览器如何在80端口上与web服务器建立连接?细节?,networking,tcp,ip,Networking,Tcp,Ip,(这个问题的灵感来源于对这条线索的回应:) 我的理解是这样的: 假设客户端IP=1.1.1.1,服务器IP=9.9.9.9 浏览器随机选择一个本地可用端口,比如5555,并启动到服务器端口80的连接。因此,在客户端上,socketfd_客户端应该表示一个IP连接,如(1.1.1.1:5555,9.9.9.9:80,TCP) 服务器在其端口80上调用accept(),并识别来自客户端的连接请求。然后服务器选择一个随机的本地可用端口,比如8888,来完成该连接请求。因此,在服务器上,socketfd

(这个问题的灵感来源于对这条线索的回应:)

我的理解是这样的:

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

  • 浏览器随机选择一个本地可用端口,比如5555,并启动到服务器端口80的连接。因此,在客户端上,
    socketfd_客户端
    应该表示一个IP连接,如
    (1.1.1.1:5555,9.9.9.9:80,TCP)

  • 服务器在其端口80上调用
    accept()
    ,并识别来自客户端的连接请求。然后服务器选择一个随机的本地可用端口,比如8888,来完成该连接请求。因此,在服务器上,
    socketfd_服务器
    应该表示IP连接,如
    (1.1.1.1:5555,9.9.9.9:8888,TCP)

  • 我的问题是:

    如果我以上的理解是正确的,
    socektfd_客户端
    socketfd_服务器
    具有不同的服务器端口。客户端有80个,而服务器有8888个。如何进行沟通?我认为客户端也应该更改为使用服务器端口8888,但何时以及如何更改

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

    不会。操作系统会这样做:具体来说,是网络堆栈的TCP部分

    并启动到服务器端口80的连接。因此,在客户端上,socketfd_客户端应该表示IP连接,如(1.1.1.1:5555、9.9.9:80、TCP)

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

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

    没有

    以满足该连接请求

    没有

    因此,在服务器上,socketfd_服务器应该表示IP连接,如(1.1.1.1:5555、9.9.9:8888、TCP)

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

    我的问题是:

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

    事实并非如此

    socektfd_客户端和socketfd_服务器具有不同的服务器端口

    没有

    客户端有80个,而服务器有8888个。如何进行沟通?我认为客户端也应该更改为使用服务器端口8888,但何时以及如何更改


    从不。

    TCP连接在客户端端口
    5555
    和服务器端口
    80
    之间。没有端口
    8888
    ,也没有涉及任何其他端口。@RonMaupin谢谢。我也是这么想的。我的困惑来自于这个回答。我认为他的观察结果3不正确。请阅读问题的公认答案。连接基于客户端和服务器的IP地址和端口,在客户端与服务器联系之前,服务器不知道客户端IP地址和端口是什么。创建的连接将使用
    1.1.1.1:5555
    9.9.9:80
    @smwikipedia。您引用的答案不正确。我喜欢这种回答方式。谢谢!