【问题标题】:Is welcoming port the same as listening port? [duplicate]欢迎端口和监听端口一样吗? [复制]
【发布时间】:2018-09-19 17:37:22
【问题描述】:

您好,我只是网络方面的新手, 只是想问一下,服务器上欢迎socket的欢迎端口和监听端口一样吗? 比如我们都知道HTTP使用80端口,那么80端口是web服务器初始化TCP三向握手的欢迎端口吗?连接套接字的实际端口号(用于传输http消息)可以是服务器分配的任意数字吗?

【问题讨论】:

    标签: sockets networking tcp port


    【解决方案1】:

    来自accept 联机帮助页:

    accept() 系统调用用于基于连接的套接字类型 (SOCK_STREAM,SOCK_SEQPACKET)。它提取第一个连接 请求侦听套接字的挂起连接队列, sockfd,创建一个新的连接套接字,并返回一个新文件 引用该套接字的描述符。 新创建的套接字不是 处于聆听状态。原始套接字 sockfd 不受 这个电话

    “欢迎”端口是监听端口。所有客户端都在端口 80 上启动与 Web 服务器“侦听”的连接(客户端在端口 80 上“欢迎”)。 ESTABLISHED 状态下的连接将具有与listen fd 不同的套接字 fd。

    【讨论】:

      【解决方案2】:

      服务器上欢迎套接字的欢迎端口是否与监听端口相同?

      服务器上的端口保持不变,即所有客户端的端口都是 80,即使在三次握手之后。

      我猜你真正要问的是如何区分同时的客户端连接。

      通常网络套接字使用唯一的 4 元组来标识连接,即源 IP、源端口、目标 IP、目标端口:https://en.wikipedia.org/wiki/Network_socket#Socket_pairs

      因此,所有客户端的目标 IP 和端口(即服务器的 IP 和端口 80)保持不变,但源 IP 和端口不同。这就是服务器区分不同连接到同一端口 80 的方式。

      连接套接字的实际端口号(用于传输http消息)可以是服务器分配的任意数字吗?

      目标端口保持不变,即如上所述的 80。相反,每个客户端在建立 TCP 连接之前选择其未使用的源端口。

      【讨论】:

      • 您的答案与 Prabhu 完全不同。当您说“目标端口”时,您的意思是欢迎端口(80)还是实际数据连接端口与端口 80 相同?
      • @amjad 目标端口是服务器端口 80。没有“欢迎端口”,有一个从不同客户端端口到同一个服务器端口 80 的套接字连接。答案与 Prabhu 的不矛盾,因为他说了同样的话:“欢迎”端口是监听端口。除了没有“欢迎端口”之类的热...
      • 但他确实说创建了一个新的连接套接字,这个套接字的端口号是多少?
      • @amjad 服务器端口相同 (80),因为套接字是如上所述的 4 元组,即 { 源 IP、源端口、目标 IP、目标端口}
      猜你喜欢
      • 1970-01-01
      • 2012-03-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-13
      • 2018-10-29
      • 2017-07-12
      相关资源
      最近更新 更多