关于TCP/IP端口绑定的问题

3
我想知道服务器应用程序是否总是在同一端口上回答?我曾经在某个地方读到过,为了保持对“监听”端口的侦听,服务器将使用不同的端口。有人能提供更多细节吗? 谢谢!
2个回答

3
如果您对特定端口的服务器进行TCP连接,则该TCP连接将继续在服务器端使用相同的端口。TCP连接在一侧建立一个(address1,port1)对,另一侧建立一个(address2,port2)对 - 所有这四个值在TCP连接的生命周期内都是固定的。这并不会阻止服务器在接受连接后继续监听端口 - 因为它可以根据客户端使用的(address,port)对区分任何已建立连接和新连接的数据包。例如,来自Oracle服务器的此netstat输出显示它正在侦听端口1521,并且还有几个已建立的连接也在使用该端口:
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address               Foreign Address             State
tcp        0      0 0.0.0.0:1521                0.0.0.0:*                   LISTEN
tcp        0      0 127.0.0.1:1521              127.0.0.1:32776             ESTABLISHED
tcp        0      0 192.168.9.126:1521          192.168.9.124:32798         ESTABLISHED
tcp        0      0 192.168.9.126:1521          192.168.9.124:32823         ESTABLISHED
tcp        0      0 192.168.9.126:1521          192.168.9.124:32822         ESTABLISHED
tcp        0      0 192.168.9.126:1521          192.168.9.124:32821         ESTABLISHED
tcp        0      0 192.168.9.126:1521          192.168.9.124:32820         ESTABLISHED
tcp        0      0 192.168.9.126:1521          192.168.9.124:32819         ESTABLISHED
tcp        0      0 192.168.9.126:1521          192.168.9.124:32818         ESTABLISHED
tcp        0      0 127.0.0.1:1521              127.0.0.1:30536             ESTABLISHED
tcp        0      0 192.168.9.126:1521          192.168.9.124:36969         ESTABLISHED
tcp        0      0 127.0.0.1:32776             127.0.0.1:1521              ESTABLISHED
tcp        0      0 127.0.0.1:30536             127.0.0.1:1521              ESTABLISHED
tcp        0      0 192.168.9.126:1521          192.168.9.124:37786         ESTABLISHED
tcp        0      0 192.168.9.126:1521          192.168.9.124:37035         ESTABLISHED
tcp        0      0 192.168.9.126:1521          192.168.9.124:37034         ESTABLISHED
tcp        0      0 192.168.9.126:1521          192.168.9.124:33018         ESTABLISHED

2
作为TCP握手过程的一部分,通信渠道在另一个端口上建立。源端口和目标端口号对应于TCP数据包头中的16位字段。一旦通道建立,通信就在该端口上进行,并且在头字段上具有适当的源端口和目标端口值。
最初的连接是到服务器上的监听端口进行的;之后,进程在新分配的端口上建立TCP连接,并在这些端口上进行进一步的通信。

当我连接到某个服务器(假设在1200端口)时,我将无法在该端口接收通信吗? - Thomas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接