ftp - FTP 服务器使用单个端口为所有客户端提供服务?它如何区分每个客户的数据?
问题描述
一台服务器,例如 FTP 服务器正在侦听端口 21。多个客户端可以同时连接到它并异步获取 ftp 服务而不会被阻塞。
我的假设是服务器有一个单独的线程来处理每个客户端请求。(问题:新线程是开始与该客户端协商新端口还是继续使用同一端口(21)进行数据交换?)
我的理解是服务器使用单个端口(21)为所有客户端提供服务,包括新的连接请求。
如果是这种情况,使用单个端口的服务器如何区分客户端以及它如何为每个相关线程委派相关数据?
解决方案
与任何其他 TCP/IP 服务器一样。
每个客户端都有一个唯一的 IP 地址和/或端口号。客户端地址和端口以及服务器地址和端口的组合创建了一个虚拟通道。该通道用于在不同机器上运行的客户端和服务器软件之间交换数据。这通常内置于操作系统中。客户端和服务器软件不必专门处理它。
推荐阅读
- live-streaming - 如何获得通过 pi 控制器连接的触摸屏的实时屏幕视图
- acumatica - 在 Acumatica 中通过 SubID 链接 GLTranR 和 SeegmentValue
- asp.net-web-api - IIS 10.5 不在 HTTP 请求中传输编码块(上传操作)
- c# - 表格 td 单元格超出并移至 pdf 的下一行,excel 将其放在新行单元格上,同时使用 aspose.pdf 将 pdf 转换为 excel
- vb.net - 如何在 DataGridView 中显示圆形图像?
- flutter - Flutter Scroll 感知
- terraform - 如何使用存储桶策略允许 S3 存储桶跨账户访问
- javascript - 有没有办法使用 Lodash 从嵌套对象中删除属性
- spring-boot - NativeWebRequest 的使用是否是线程安全的
- flutter - Flutter Windows 构建失败,错误 LNK1168