嗨,我只是网络新手, 只是想问一下,欢迎服务器上的端口是否与监听端口相同? 例如,我们都知道HTTP使用端口80,那么端口80是Web服务器的欢迎端口来初始化TCP的三次握手吗?连接套接字的实际端口号(用于传输http消息)可以是服务器分配的任意数量吗?
答案 0 :(得分:1)
来自accept
联机帮助页:
accept()系统调用与基于连接的套接字类型一起使用 (SOCK_STREAM,SOCK_SEQPACKET)。它提取第一个连接 请求侦听套接字的挂起连接队列, sockfd,创建一个新的连接套接字,并返回一个新文件 描述该套接字的描述符。 新创建的套接字不是 在聆听状态。原始套接字sockfd不受影响 这个电话。
“welcome”端口是监听端口。所有客户端都在端口80上发起与网络服务器“监听”的连接(客户端在端口80上是“欢迎”)。 ESTABLISHED
状态中的连接将具有与listen
fd不同的套接字fd。
答案 1 :(得分:0)
欢迎服务器上的欢迎套接字端口与监听端口相同吗?
服务器上的端口保持不变,即即使在三次握手后,所有客户端也保持80端口。
我猜你真正问的是如何区分同步客户端连接。
通常,网络套接字使用唯一的4元组来标识连接,即源IP,源端口,目标IP,目标端口:https://en.wikipedia.org/wiki/Network_socket#Socket_pairs
因此,所有客户端(即服务器的IP和端口80)的目标IP和端口保持不变,但源IP和端口不同。这就是服务器如何区分到同一端口80的不同连接。
连接套接字的实际端口号(用于传输http消息)可以是服务器分配的任意数字吗?
目标端口保持不变,即如上所述80。相反,每个客户端在建立TCP连接之前选择其未使用的源端口。