为了池化服务器资源,开始用k8s部署服务,但总有没办法避过的阵痛(尤其是在内网环境中),在这里记一个实际遇到的坑。
FTP协议
谷歌可知,FTP使用两个信道分别传输控制命令(如目录切换还有创建目录等)和数据,使用的知名端口就是20
和21
。
服务端和客户端大概的交互流程如下:
- 服务端监听默认端口(
21
),用作命令信道; - 客户端访问默认端口,传输一般的操作命令;
- 在需要传输数据时,可以由服务端或客户端中的任意一方开启一个随机的高位端口并监听,通过命令信道通知对方;
其中,根据第二步中的发起方不同分为主动模式
和被动模式
:
主动模式
:由客户端主动开放并监听一个端口,服务端通过客户端监听的端口推送数据;被动模式
:由服务端提供一个端口,客户端通过这个端口读取数据。
在Docker中
我们知道如果需要将Docker容器的端口映射到宿主机中,是需要显式配置的。即是说运行在容器中的客户端想要访问外部的服务端应该切换到被动模式
,最省配置。
如果需要在容器中运行服务端,那就需要给容器分配一个区间的端口。