FTP:
以下图片来自 https://network.51cto.com/art/201909/603552.htm
- 全称:File transfer protocol 文件传输协议,是TCP/IP协议组的协议之一(来自百度百科)
- 包括客户端,服务器端两部分
- FTP的传输方式有种,主动传输/被动传输
小结:
- 21和20端口是服务器端开放的端口,其中21用来验证客户端登录信息等,20用来传输信息
- 主动模式中,客户端会随机生成端口(大于1024),并将该端口发送给服务端,然后服务端会通过20端口主动向客户端的随机端口传输内容
- 被动模式中,服务端会随机生成端口,客户端主动向服务器该端口获取数据
- 如果客户端防火墙开启,则20端口的数据会被挡在外面,无法输送到客户端
- 如果服务器端防火墙开启,同样无法传输数据
SFTP:
1.全称:SSH FTP,基于ssh2协议
2. 登录流程:
来源于:http://www.mamicode.com/info-detail-2902841.html
- 客户端向服务端发起登录请求;
- 服务端收到登录请求后,将其public key发送给客户端;
- 客户端收到public key后,通过public key对登录密码进行非对称加密,发送给服务端;
- 服务端收到加密后的登录密码后,使用private key进行解密。如果解密后的密码正确的话,就同意用户登录;
- ssh协议使用22端口
小结:
- 客户连接服务器前,会事先get到服务器端的public key,然后在服务器端发送过来public key后,会比较这两个key,对比公钥指纹没有问题后,即可同意进入下一步连接。这样就会在./ssh目录下的known_hosts文件中生成一条我们刚刚同意的公钥记录。只有在known_hosts里面的公钥,我们才能去访问。这样就规避了不认识的host我们也去连接,从而避免遭受中间人的攻击。
```