话不多讲,直说重点,先总结后分析,最后图片一定要看

21端口号为控制连接时,服务器端的端口号(固定)
20端口号为数据连接时,服务器端的端口号(要看客户端选被动还是主动模式,主动模式下服务端端口号为20)

客户端的端口号,在控制连接或者数据连接中,总是不固定的(有错请提醒修改)

主被动是在数据连接时对于服务器端来说的
被动PASV:客户端发起连接
主动PORT:服务器端发起连接

上拓扑图

yarnJars 端口号 端口号20 21_yarnJars 端口号


我们知道FTP中有两次TCP三次握手

第一次是控制连接

第二次是数据连接继续上图

yarnJars 端口号 端口号20 21_yarnJars 端口号_02

控制连接

从图中上面的圈中信息能看出,第一次的控制连接TCP三次握手,
由客户端发起
客户端端口号为2049,服务器端端口号为21
即客户端端口号不固定,服务器端口号固定

控制连接后进行数据连接模式的协商,以及端口号的协商

yarnJars 端口号 端口号20 21_数据连接_03


此图引用泰克教育的杨诚老师上课笔记

控制连接后,客户端主动发送报文告知服务器,用PASV或者是PORT模式进行数据连接。

若是PASV被动模式,客户端不需要带自己的端口号,服务器收到该报文后发送自己用的端口号Y。协商完端口号后,客户端用自己X+1的端口号与服务器端的Y端口发起数据连接。

若是PORT主动模式,客户端需要带自己的端口号X+1。服务器收到该报文后用客户端X+1的端口号与自己的20端口发起数据连接。

数据连接PASV模式

图中下面的圈中,是客户端采取PASV即被动模式发起数据连接TCP三次握手,
由客户端发起
客户端端口为2050,服务端端口为2049
客户端、服务端端口号都不固定

数据连接PORT模式

yarnJars 端口号 端口号20 21_端口号_04

yarnJars 端口号 端口号20 21_网络_05


图是客户端采取PORT即主动模式发起数据连接TCP三次握手,

由服务端发起

客户端端口为2053,服务端端口为20

客户端不固定,服务端端口固定

数据连接TCP三次握手比较总结

yarnJars 端口号 端口号20 21_网络_06