最近在做EdgeCast CDN的评估,包括file的upload以及purge功能。因为之前有已经实现的ftp的组件,并且在实际生产中用于Akamai CDN的文件上传,未出现什么问题。然而,应用这个组件上传文件到edgecast的ftp上时发现文件竟然变小了!

起初我怀疑是edgecast ftp的问题,于是我就试着用现有的ftp软件8uftp去上传,发现不存在文件变小的问题。那么可能是我们代码的问题,可是奇怪的是为什么对于akamai的ftp就没有问题呢。此时我想到了用wireshark来捕捉ftp网络数据。
有问题的抓包
图中上面部分的是akamai的ftp传输过程,下面部分是edgecast的ftp传输过程。仔细比较可发现,akamai ftp对于STOR命令的response是“150 Opening BINARY mode data connection for xxx.7z”,而edgecast ftp对于STOR命令的response是”150 Accepted data connection”。所以akamai ftp默认的传输模式就是binary,而edgecast ftp的默认传输模式是ascii。于是在代码里STOR之前指定传输模式为binary,问题就解决了。附上修改之后的网络数据包。
修改过后没问题的抓包