当前位置: 首页 > 知识库问答 >
问题:

ServerSocket是否接受任意端口上的返回套接字?

卢文博
2023-03-14

客户端IP:客户端端口和服务器IP:服务器端口->协议(以区分TCP和UDP)

那么为什么accept()需要返回绑定到不同端口的套接字呢?每个报头中发送的四组信息是否足以区分来自不同机器的到同一服务器端口的多个连接,从而不需要使用服务器机器上的不同端口进行通信?

共有1个答案

丁雅懿
2023-03-14

您在TCP数据包报头的信息中是正确的。它包含:

Client IP | Client Port | Server IP | Server Port | Protocol

或者,更恰当地说(因为当您考虑双向传输时,客户机/服务器会变得令人困惑):

Source IP | Source Port | Destination IP | Destination Port | Protocol

到同一服务器端口的多个连接将来自客户端上的不同端口。例如:

0.0.0.0:45000 -> 1.1.1.1:80
0.0.0.0:45001 -> 1.1.1.1:80
 类似资料:
  • 问题内容: 关于Java中的serversockets,我已经看到了许多与此答案相似的答案:“假设您有一台服务器,其serversocket的端口为5000。客户端A和客户端B将连接到我们的服务器。 客户端A在端口5000上向服务器发送请求。客户端A侧的端口由操作系统选择。通常,操作系统会选择下一个可用的端口。该搜索的起点是先前使用的端口号+ 1(例如,如果操作系统最近碰到了我们的端口45546,

  • 以下是我的问题: 请纠正我在上面的理解--我通过指定一个端口来打开一个套接字(),比方说8001,现在我的服务器将开始侦听这个端口上的请求,现在它从一个客户端得到一个请求,类似于,所以一旦它接受连接,它将创建一个本地端口,比方说10001,所以现在这个客户端请求将通过10001接受(或者换句话说,与客户端的连接将通过端口10001建立),而8001将再次空闲并侦听新的请求? 那么,这是否意味着使用

  • 我对Socket和ServerSocket端口用法感到困惑。Oracle关于套接字的Java教程是这样说的: 插座是什么? 通常,服务器运行在特定的计算机上,并具有绑定到特定端口号的套接字。服务器只是等待,监听套接字让客户机发出连接请求。在客户端:客户端知道服务器运行的机器的主机名和服务器侦听的端口号。要发出连接请求,客户端尝试在服务器的机器和端口上与服务器会合。客户端还需要向服务器标识自己,以便

  • 服务器: 客户: 服务器开始侦听: 每个客户端连接将获得一个单独的套接字进行通信,所有的套接字都使用相同的服务器端TCP端口进行通信。

  • 问题内容: 我想了解为什么下面的代码片段无法编译。将函数接受为可能具有任何返回类型的函数参数的Go方法是什么? 播放:https://play.golang.org/p/CqbuEZGy12 我的解决方案基于Volker的答案: 播放:https://play.golang.org/p/waOGBZZwN7 问题答案: 你绊倒了围棋新人一个非常普遍的误解:空接口并 不能 意味着“任何类型”。确实不

  • 众所周知,SO_REUSEPORT允许多个套接字侦听相同的IP地址和端口组合,它将每秒的请求增加2-3倍,并减少延迟(~30%)和延迟的标准偏差(8倍):https://www.nginx.com/blog/socket-sharding-nginx-release-1-9-1/ NGINX release 1.9.1引入了一个新特性,支持使用SO_REUSEPORT套接字选项,该选项在许多操作系