Wireshark之FTP协议分析(二)

以实际抓包来分析ftp协议,加深理解。

环境:

win7电脑+linux设备,linux设备为ftp服务端,win7电脑通过WinSCP的ftp主动方式(我得版本winscp默认是被动方式,需要从高级选项修改)来连接ftp服务端。

过程:

电脑(192.168.3.206)与设备建立ftp(192.168.3.100)连接,然后电脑向设备传输一个2084字节的文件。然后电脑主动关闭连接。

设备上进行抓包,只抓取tcp port 20和21的报文。

实际抓包报文如下(一个一个包来分析):

Wireshark之FTP协议分析(二)_第1张图片

第1-3包为tcp的三次握手,服务端端口21,即ftp控制连接建立;

第4包为服务端应答客户端报文,220:服务就绪,附加参数为服务端ftp版本号;

第5包客户端发送请求认证用户名,命令USER,参数实际用户名;

第6包为服务端tcp ack回应包;

第7包为服务端对客户端USER命令的应答,331:要求密码;

第8包客户端像服务端传送密码,命令PASS,后跟明文密码;

第9包为服务端tcp ack回应包;

第10包为服务端对客户端PASS命令的应答,230:登录成功;

第11包为客户端像服务端请求系统版本,命令SYST;

第12包为服务端tcp ack回应包;

第13包为服务端对客户端SYST命令的应答,215:系统名;

第14包为客户端向服务端请求服务端采用的特性列表,命令FEAT;

第15包为服务端对客户端命令FEAT的应答,211:系统状态回复;

第16-24包为服务端应答回复;

Wireshark之FTP协议分析(二)_第2张图片

第25、26包为客户端tcp ack包;

第27-38包为客户端指定UTF8格式、获取服务器目录并切换命令及服务端的应答,不再赘述;

第39包为客户端向服务端请求LIST命令;

第40-42为服务端与客户端的数据连接建立(注意:是服务端发起的连接请求),服务端端口为20,连接的客户端端口为192*256+13(根据第37包客户端PORT给服务端的端口,计算公式为256*倒数第二位+倒数第一位)

第43-44包为服务端开始向客户端发送文件列表,注意只有实际列表传送走的数据连接,即第44包,第43包还是控制连接;

第45-47包为tcp 四次挥手包(剩余两个挥手包为第49、50包),从这可以看出文件列表传送完毕,数据连接立马关闭;

Wireshark之FTP协议分析(二)_第3张图片

第52-68包又是一次客户端获取服务端列表的通信过程,可以看到又经历了一次建立数据连接并关闭的过程,不在赘述;

Wireshark之FTP协议分析(二)_第4张图片第68-89包为客户端向服务端传送文件的过程,先是确定为二进制模式,传输文件为sysctl.conf文件,然后建立数据连接进行传输,实际传送数据大小为2084字节,然后关闭数据连接;

第86包服务端应答传输完成;

第88包客户端向服务端传入文件的修改时间,这里不清楚为啥是20171115,明明是2018年;

第89包服务端应答客户端文件时间已修改;

Wireshark之FTP协议分析(二)_第5张图片

第90-106包又是一次文件列表的获取过程,不再赘述;

第107-109为客户端主动断开与服务端的ftp连接的四次挥手包(闹么为啥只抓到三个包。。。);

四次挥手注意的是,因为数据连接采用的是服务端主动连接的,而控制连接为客户端主动连接的,屡一下,ftp客户端与服务端是针对控制连接而言的。数据连接主动模式下,实际是服务端充当客户端,不讲了有点乱,睡觉~~~

 

你可能感兴趣的:(Wireshark之FTP协议分析(二))