套接字端口是否与常规端口相同
are socket ports the same as regular ports
我读了一些我发现与我目前对端口的理解相矛盾的东西。如果您 google "how many ports does a server have",首先出现的内容如下:
The server generally only ever uses one port, no matter how many clients are connected. It is the tuple of (client IP, client port,
server IP, server port) that must be unique for each TCP connection -
so the limit of 65535 ports is only relevant for how many connections
a single client can make to a single server.
我想每次客户端建立到服务器的连接时,都会使用常规端口创建一个套接字用于两者之间的连接?
如果不是,是否意味着服务器可以连接的客户端数量超过常规端口的最大数量?
I thought each time a client establishes a connection to a server, then a socket is creating using a regular port for the connection between the two?
在此上下文中,术语 "port" 本质上用于描述 地址 。端口号与 IP 地址一起唯一标识网络的 一个 端点。
不仅服务器端点通常只使用一个端口号,如果不这样做,连接到服务器会困难得多,因为客户端端点将使用什么端口号来请求联系? DNS 允许客户端查找 IP 地址(如果 IP 地址未知),但端口号没有此类功能。所以必须提前知道端口号。
所以,不……并不是每次客户端建立连接时,都会使用 "regular port" 为两者之间的连接创建一个套接字。没有 "regular port"。只有 "port",所有端口都相同,它们只是一个标识端点地址的数字。
If no, does it mean that a server can have more clients connected to it, than the maximum amount of regular ports?
是的,可以。在服务器端,端口号(通常)总是相同的。例如,HTTP 服务器(通常)使用端口 80。侦听套接字的端口号为“80”,每个连接的服务器端套接字也是如此。
端口号可以这样重复使用,因为每个套接字除了IP地址和端口号之外,还有其他标识特征。特别是,服务器的 listening 套接字是唯一的;服务器端只有一个套接字具有该 IP 地址、该端口号,并且具有 无 连接(即正在侦听)。
建立连接后,将创建一个新套接字来表示该连接。并且该套接字可以被唯一标识,因为与侦听套接字不同,它 确实 具有与之关联的连接(即远程端点),以及 IP 地址和端口号。当客户端向服务器发送数据时,网络层可以判断应该将数据传送到哪个套接字,因为该数据来自特定的远程端点,该端点也具有唯一的 IP 地址和端口号。
服务器和客户端的唯一 IP 地址和端口号的组合唯一地标识了该连接,使其有别于服务器上可能具有相同服务器端端点的 IP 地址和端口号的任何其他套接字。
在您引用的文本中,这部分描述的正是套接字的这种不同的、唯一的标识:
It is the tuple of (client IP, client port, server IP, server port) that must be unique for each TCP connection
通过这种方式,服务器的 IP 地址和端口号可以无限次使用(不包括服务器上的其他受限资源,例如保存网络连接状态的内存和表)。
只有在尝试创建额外的侦听套接字(对于服务器)或额外的连接(对于客户端)时,端口号的限制才会起作用。服务器通常不会 运行 超出端口号,除非它们正在实现一个协议,该协议要求服务器创建连接回到客户端的侦听套接字(这并不常见),并且客户端不会 运行端口号不足,除非他们尝试建立大量连接。
你引用的这部分文字指的是后一个限制:
the limit of 65535 ports is only relevant for how many connections a single client can make to a single server.
我读了一些我发现与我目前对端口的理解相矛盾的东西。如果您 google "how many ports does a server have",首先出现的内容如下:
The server generally only ever uses one port, no matter how many clients are connected. It is the tuple of (client IP, client port, server IP, server port) that must be unique for each TCP connection - so the limit of 65535 ports is only relevant for how many connections a single client can make to a single server.
我想每次客户端建立到服务器的连接时,都会使用常规端口创建一个套接字用于两者之间的连接?
如果不是,是否意味着服务器可以连接的客户端数量超过常规端口的最大数量?
I thought each time a client establishes a connection to a server, then a socket is creating using a regular port for the connection between the two?
在此上下文中,术语 "port" 本质上用于描述 地址 。端口号与 IP 地址一起唯一标识网络的 一个 端点。
不仅服务器端点通常只使用一个端口号,如果不这样做,连接到服务器会困难得多,因为客户端端点将使用什么端口号来请求联系? DNS 允许客户端查找 IP 地址(如果 IP 地址未知),但端口号没有此类功能。所以必须提前知道端口号。
所以,不……并不是每次客户端建立连接时,都会使用 "regular port" 为两者之间的连接创建一个套接字。没有 "regular port"。只有 "port",所有端口都相同,它们只是一个标识端点地址的数字。
If no, does it mean that a server can have more clients connected to it, than the maximum amount of regular ports?
是的,可以。在服务器端,端口号(通常)总是相同的。例如,HTTP 服务器(通常)使用端口 80。侦听套接字的端口号为“80”,每个连接的服务器端套接字也是如此。
端口号可以这样重复使用,因为每个套接字除了IP地址和端口号之外,还有其他标识特征。特别是,服务器的 listening 套接字是唯一的;服务器端只有一个套接字具有该 IP 地址、该端口号,并且具有 无 连接(即正在侦听)。
建立连接后,将创建一个新套接字来表示该连接。并且该套接字可以被唯一标识,因为与侦听套接字不同,它 确实 具有与之关联的连接(即远程端点),以及 IP 地址和端口号。当客户端向服务器发送数据时,网络层可以判断应该将数据传送到哪个套接字,因为该数据来自特定的远程端点,该端点也具有唯一的 IP 地址和端口号。
服务器和客户端的唯一 IP 地址和端口号的组合唯一地标识了该连接,使其有别于服务器上可能具有相同服务器端端点的 IP 地址和端口号的任何其他套接字。
在您引用的文本中,这部分描述的正是套接字的这种不同的、唯一的标识:
It is the tuple of (client IP, client port, server IP, server port) that must be unique for each TCP connection
通过这种方式,服务器的 IP 地址和端口号可以无限次使用(不包括服务器上的其他受限资源,例如保存网络连接状态的内存和表)。
只有在尝试创建额外的侦听套接字(对于服务器)或额外的连接(对于客户端)时,端口号的限制才会起作用。服务器通常不会 运行 超出端口号,除非它们正在实现一个协议,该协议要求服务器创建连接回到客户端的侦听套接字(这并不常见),并且客户端不会 运行端口号不足,除非他们尝试建立大量连接。
你引用的这部分文字指的是后一个限制:
the limit of 65535 ports is only relevant for how many connections a single client can make to a single server.