FTP(File TransferProtocol,文件传输协议)用于在FTP服务器和FTP客户端之间传输文件,是IP网络上传输文件的通用协议,基于TCP。
FTP协议使用TCP端口20和21进行传输。端口20用于传输数据(数据连接),端口21用于传输控制消息(控制连接)。(20 21 端口是TCP的端口,用于为FTP分别传输数据和控制连接的,在控制连接和传输数据过程中用到了FTP的什么端口是在报文中协商的。)
FTP有两种文件传输模式:
·二进制模式,用于传输非文本文件(比如后缀名为.app、.bin和.btm的文件);
·ASCII码模式,用于传输文本格式的文件(比如后缀名为.txt、.bat和.cfg的文件)。
当设备作为FTP客户端时,使用的传输模式用户可通过命令行修改,缺省为二进制模式;当设备作为FTP服务器时,使用的传输模式由FTP客户端决定。
FTP有两种工作方式:
·主动方式(PORT):建立数据连接时由FTP服务器发起连接请求,当FTP客户端处于防火墙后时不适用(如FTP客户端处于私网内)。
·被动方式(PASV,passive mode):建立数据连接时由FTP客户端发起连接请求,当FTP服务器限制客户端连接其高位端口(一般情况下大于1024)时不适用。
FTP组网应用示意图
FTP登录过程(21号端口):利用FTP协议进行文件传输时,首先客户端向服务器发起TCP连接,三次握手,客户端到服务器的连接建立;FTP request报文客户端告知服务器要进行FTP文件传输;FTP response 报文,服务器做好传输准备,并告知客户端其所属公司和版本号;FTP request 报文,客户端告知服务器想要用哪个用户名登录;FTP response 报文,服务器向客户端要登录密码;FTP request 报文,客户端将登录密码已明文的形式发送给服务器;FTP response 服务器告知客户端密码正确,登录成功,至此客户端和服务器之间建立了FTP。
文件下载过程主动方式(PORT)(20号端口):在文件传输过程中,服务器主动发起TCP连接。FTP request报文,包含客户端的IP和想要连接服务器的端口;FTPresponse报文,同意建立连接,FTP request 报文,客户端告知服务器想要下载的文件名称;服务器向客户端发起建立TCP连接,三次握手,可以传输文件,FTP 协议传输文件的内容发送给客户端,客户端接收之后,FTP传输文件过程结束;服务器发起TCP关闭,四次握手过程。
文件下载过程被动方式(PASV):FTP 登录过程是一样的,在被动模式下,是客户端向服务器发起TCP连接,首先,客户端FTP request 报文,告知服务器现在是被动模式传输数据,服务器收到之后,发出FTP response 报文,告知客户端可以连接到的IP地址和相应的客户端要打开的端口号,FTP request 报文,客户端告知服务器要下载的文件,此时,客户端发起TCP连接,三次握手过程,连接建立之后,服务器向客户端发送文件的具体内容,以明文发送,抓包可以看到。文件内容传输完毕之后,客户端发起TCP关闭,四次握手。
在cmd下如何登陆FTP?
FTP+FTP服务器IP可以登录到对应的FTP服务器,输入相应的用户名和密码(公司用3CD软件作为FTP服务器)。
常用命令:
Ls显示服务器的文件名
Get+文件名:下载相应的文件
Put+文件名:上传相应的文件
Dir:显示文件详细信息
Bye:退出FTP
Quote pasv:进入被动模式,即本应该在传输数据过程中,客户端先向服务器发起连接,但是通过抓包可以看到,实际上还是处于主动模式。
Cd .. 退出cmd下的目录
抓包过程
登录过程:客户端IP:192.168.1.3 服务器IP:192.200.201.8
在客户端和服务器建立FTP连接之前,先建立TCP连接,三次握手(由客户端发起),控制端口为21;建立连接之后,FTP服务器发送其自身的版本号信息(231号包);FTP客户端用test用户名登录(261号包);FTP服务器通过用户名验证,并向客户端要登录密码(262包);客户端发送用户密码,以明文显示123456(271报文);服务器回复客户端登录成功(272报文)。整个客户端登录服务器过程完成。
下载文件过程(主动方式,服务器向客户端主动发起连接):
客户端请求以IP192.168.1.3,端口为255*256+202=65482(协商的数据传输所用的FTP端口号)登录服务器的数据端口(8报文);服务器给客户端回复同意(9报文);客户端发给服务器想要下载的文件名为 2.txt(10端口);服务器同意给客户端传输要求的文件(11报文);12 13 14 报文又是一次TCP连接,但这次是由服务器发起,且其端口号为20;16 17 18 为FTP传输数据过程,数据过大,分片传输,分片大小取决于链路协商的MTU值。
文件传输完之后,对应的是TCP四次挥手断开连接的过程(19 20 21 22 )对应TCP的端口号为20,数据连接FTP的端口号是之前协商的65482;服务器回应客户端文件传输结束(21报文)。
TFTP(Trivial File Transfer Protocol,简单文件传输协议)用于在TFTP服务器和TFTP客户端之间传输文件。它基于UDP协议,使用UDP端口建立连接、收/发数据报文。与基于TCP的FTP协议比较,TFTP不需要认证,没有复杂的报文交互,部署简单,适用于客户端和服务器均很可靠的网络环境。
目前,设备只能作为TFTP客户端,不支持作为TFTP服务器。
TFTP组网示意图
当G2作为DHCP客户端时,G2和DHCP服务器的MTU分别为1500 576时,通过FTP抓包,看两端协商的MTU:
G2和DHCP服务器的MTU分别为800 1500时,通过FTP抓包,看两端协商的MTU[qK1] :
[qK1]为什么协商的不是以G2是值作为链路的MTU;看length,还是看传输的比特数??