一.Wireshark概述
在windows下,
图1 Wireshark界面展示(基于1.99.1)
Wireshark是通过底层的winpcap来实现抓包的。winpcap是用于网络封包抓取的一套工具,可适用于32/64位的操作平台上解析网络封包,包含了数据包截获驱动程序,一个底层动态链接库,和一个高层静态链接库,winpcap在内核中把所有网卡收到的报文复制一份。
Display Filter(显示过滤器), 用于过滤
Packet List Pane(封包列表),显示捕获到的封包,包括编号,时间戳,源地址,目标地址,协议,长度,以及封包信息。不同的协议用了不同的颜色显示。
Packet Details Pane(封包详细信息),显示封包中的字段
Dissector Pane(16进制数据)
Miscellaneous(状态栏)
二.FTP概述
文件传输协议(FTP)作为网络共享文件的传输协议,在网络应用软件中具有广泛的应用。FTP的目标是提高文件的共享性和可靠高效地传送数据。在传输文件时,FTP客户端程序先与服务器建立连接,然后向服务器发送命令。服务器收到命令后给予响应,并执行命令。FTP协议与操作系统无关,任何操作系统上的程序只要符合FTP协议,就可以相互传输数据。
1. FTP协议简介
FTP是仅基于TCP的服务,不支持UDP,相比其他协议(如 HTTP协议),FTP协议要复杂一些。与一般的C/S应用不同点在于一般的C/S应用程序一般只会建立一个Socket连接,这个连接同时处理服务器端和客户端的连接命令和数据传输。而FTP协议中将命令与数据分开传送的方法提高了效率。
FTP使用2个端口,一个数据端口和一个命令端口(也叫做控制端口)。控制Socket用来传送命令,数据Socket是用于传送数据。每一个 FTP命令发送之后,FTP服务器都会返回一个字符串,其中包括一个响应代码和一些说明信息。其中的返回码主要是用于判断命令是否被成功执行了。
图2 Wireshark与对应的OSI七层模型
Frame: 物理层的数据帧概况
Ethernet II: 数据链路层以太网帧头部信息
Internet Protocol Version 4: 互联网层IP包头部信息
Transmission Control Protocol: 传输层T的数据段头部信息,此处是TCP
File Transfer Protocol: 应用层的信息,此处是FTP协议
TCP包的具体内容
命令端口和数据端口
一般来说,客户端有一个 Socket 用来连接 FTP 服务器的相关端口,它负责 FTP 命令的发送和接收返回的响应信息。一些操作如“登录”、“改变目录”、“删除文件”,依靠这个连接发送命令就可完成。服务器的命令端口号一般是21。
对于有数据传输的操作,主要是显示目录列表,上传、下载文件,我们需要依靠另一个Socket来完成。 如果使用被动模