java实现FTP协议:wireshark抓包解析

本节我们看看ftp协议的数据包格式,同时使用代码加以实现。首先我们现在机器上安装ftp服务器,我在自己的机器上安装了QuickFTP Server,它是我随便找来的一款Mac ftp服务器,如下图所示,我将连接端口设置为2100,同时设置了用户名和密码,如此我们就可以通过抓包的方式了解协议的数据包格式:

屏幕快照 2020-02-20 上午10.32.01.png

然后打开wireshark,在过滤条件中输入tcp.port==2100,接着开始监听,如此就能抓取相应ftp数据包。接着我从手机上使用ftp客户端连接到服务器,同时使用设置好的用户名密码登陆,在wireshark上抓包结果如下:

屏幕快照 2020-02-20 上午10.41.06.png

注意到前3条是tcp连接的三次握手,第四条是双方沟通tcp数据传输一些参数可以忽略,真正属于ftp协议数据的是第5条服务器发送给客户端的信息,点击查看内如如下:
屏幕快照 2020-02-20 上午10.43.14.png
我们注意看它的数据部分,那才是ftp协议的专有内如,首先开始对应回复码220,上一节我们描述过回复码三位数字的作用,该数值表示服务器已经准备好接收客户端的请求,接下来的字符串时服务器对该回复码的文字解释,在协议实现是不用关心。这里要注意的是,所有包含协议数据的数据包都对应[PSH,ACK],如果仅仅含有[ACK]那就是对上一次接收到数据包的应答而已,所以点击下一条[PSH,ACK]就可以看ftp协议的下一个数据包内容,于是我们点击查看下一条包含ftp数据的协议

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值