为了账号安全,请及时绑定邮箱和手机立即绑定

多个客户端如何同时连接到服务器上的一个端口,比如80?

多个客户端如何同时连接到服务器上的一个端口,比如80?

九州编程 2019-07-27 14:50:56
多个客户端如何同时连接到服务器上的一个端口,比如80?我了解端口如何工作的基础知识。但是,我没有得到的是多个客户端如何同时连接到端口80.我知道每个客户端都有一个唯一的(用于他们的机器)端口。服务器是否从可用端口回复客户端,并简单地说明回复来自80?这是如何运作的?
查看完整描述

3 回答

?
牧羊人nacy

TA贡献1862条经验 获得超7个赞

首先,“端口”只是一个数字。所有“与端口的连接”实际上表示的是具有在其“目标端口”头字段中指定的该数字的分组。

现在,您的问题有两个答案,一个用于有状态协议,另一个用于无状态协议。

对于无状态协议(即UDP),没有问题,因为“连接”不存在 - 多个人可以将数据包发送到同一个端口,并且它们的数据包将以任何顺序到达。没有人处于“连通”状态。

对于有状态协议(如TCP),连接由4元组标识,包括源和目标端口以及源和目标IP地址。因此,如果两台不同的机器连接到第三台机器上的同一端口,则有两个不同的连接,因为源IP不同。如果同一台机器(或两台NAT后面或共享相同的IP地址)连接两次到一个远端,则连接由源端口(通常是随机的高编号端口)区分。

简单地说,如果我从客户端连接到同一个Web服务器两次,则两个连接将具有来自我的角度的不同源端口和来自Web服务器的目标端口。因此,即使两个连接具有相同的源和目标IP地址,也没有歧义。

端口是一种多路复用 IP地址的方法,以便不同的应用程序可以侦听相同的IP地址/协议对。除非应用程序定义自己的更高级别协议,否则无法复用端口。如果使用相同协议的两个连接同时具有相同的源和目标IP以及相同的源和目标端口,则它们必须是相同的连接。


查看完整回答
反对 回复 2019-07-27
  • 3 回答
  • 0 关注
  • 2374 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信