Sockets 我对tcp解复用感到困惑?

Sockets 我对tcp解复用感到困惑?,sockets,tcp,Sockets,Tcp,我已经研究过服务器进程具有“欢迎套接字”,它正在等待tcp客户端建立连接。 一旦建立了连接,服务器进程就会创建一个新的套接字,以便为新客户机保持欢迎套接字的打开状态。 当tcp服务器接收到段时,它会在连接请求段中记录以下四个值: 段中的源端口号 源主机的IP地址 段中的目标端口号,以及 它自己的IP地址 我感到困惑的是,当tcp客户端在开始时发送连接建立请求时,它会附加服务器欢迎套接字的目标端口号。 然后,在建立连接后,当在其标头中传递数据时,它将发送什么,新创建的套接字的端口号还是欢迎套接字的

我已经研究过服务器进程具有“欢迎套接字”,它正在等待tcp客户端建立连接。 一旦建立了连接,服务器进程就会创建一个新的套接字,以便为新客户机保持欢迎套接字的打开状态。 当tcp服务器接收到段时,它会在连接请求段中记录以下四个值:

  • 段中的源端口号
  • 源主机的IP地址
  • 段中的目标端口号,以及
  • 它自己的IP地址
  • 我感到困惑的是,当tcp客户端在开始时发送连接建立请求时,它会附加服务器欢迎套接字的目标端口号。 然后,在建立连接后,当在其标头中传递数据时,它将发送什么,新创建的套接字的端口号还是欢迎套接字的端口号? 客户端进程将如何知道新创建的套接字的端口号

    建立连接后,在传递数据时它将发送什么 在其标头中,新创建的套接字的端口号或欢迎套接字的端口号 端口号

    新创建的套接字的端口号将与原始套接字的端口号相同。也就是说,两个套接字将共享原始端口号。这不会导致任何问题,因为TCP连接由5元组值(协议#、源IP、源端口、目标IP、目标端口)唯一标识,并且此5元组对于新TCP连接是唯一的,即使其目标端口子集不是唯一的。

    Comer&Stevens par10.11.3 tcpdemux()和par11.19 tcplisten()摘要:tcpdemux()有一个特例,用于比较侦听状态下的tcb。tcplisten()实际上将侦听tcb克隆(大部分)到新分配的插槽中。