FTP 数据传输协议,属于是成块数据流。
FTP是用来传送文件的协议。使用FTP实现远程文件传输的同时,还可以保证数据传输的可靠性和高效性。
TCP连接
使用FTP进行文件传输时,会使用两个TCP连接。
第一个连接是FTP客户端和FTP服务器间的控制连接。FTP服务器开启21号端口,等待FTP客户端发送连接请求。FTP客户端随机开启端口,向服务器发送建立连接的请求。控制连接用于在服务器和客户端之间传输控制命令。
第二个连接是FTP客户端和FTP服务器间的数据连接。FTP服务器使用TCP的20号端口与客户端建立数据连接。通常情况下,服务器主动建立或中断数据连接。
FTP传输数据时支持两种传输模式:ASCII模式和二进制模式。
ASCII模式用于传输文本。发送端的字符在发送前被转换成ASCII码格式之后进行传输,接收端收到之后再将其转换成字符。
二进制模式常用于发送图片文件和程序文件。发送端在发送这些文件时无需转换格式,即可传输。
两个信道
FTP的两个模式
通常都是使用的是被动模式Passive Mode,不管是什么模式第一信道都是不变的,所有的区别都在第二信道中。
在第一个信道中主要是认证,还要进行三次握手的建立。在FTP上要下载文件,这样就需要建立第二信道,也就是所有服务器给客户端的数据都是在第二信道中传递的。
在第一个信道中发送PORT命令,由客户发送给服务器,在PORT中有6个数字,分别用(a,b,c,d,e,f)来表示。这6个数字用逗号来分割。其作用是告诉客户端它的IP地址是a.b.c.d,端口号是e*256+f 的结果为目的端口号。
服务器发起第二信道,源端口是20号端口,目的端口是e*256+f,在第二信道中也要进行三次握手的建立,所有数据都要在第二信道中进行传输。
首先在虚拟机中开启FTP服务端
然后本机启动FTP客户端,进行连接。
在连接的时候使用OmniPeek进行抓包
很明显用户名和密码被抓取出来了,所以FTP是不安全的。
第一个信道中发送PORT,在PORT中有6个数字,分别是(192,168,188,229,192,157)。
192*256+157=49309,这个49309就是目的端口,而192.138.188.229就是FTP服务端的 IP 地址。
第一次建立第二信道发送listing,意思是罗列清单查看FTP上有哪些文件和数据。这些信息都是通过第二信道主动发送的。
向下拖动还发现一个PORT命令,这个是第二次建立第二信道,表示下载FTP上的wuhu文件。只要是服务器过来的数据都要建立第二信道。
客户端发送PASV命令,该命令就是询问服务器是否支持Passive Mode。如果服务器支持会回复227,还有6个数字并且用的逗号分割。服务器地址是a.b.c.d,所连接的端口号是e*256+f。
第二信道客户端是随机端口,目的端口号是e*256+f,双方都是动态的端口号。
通常都是使用的是被动模式Passive Mode。
客户端发送PASV命令,并且在下面的TCP三次握手发现源端口和目的端口都是动态的。
Telnet 协议是TCP/IP协议族中的一员,是Internet远程登陆服务的标准协议和主要方式。属于是交互式数据流,明文传输用户名和密码非常的不安全。占用**23端口号**。
它为用户提供了在本地计算机上完成远程主机远作的能力。在终端使用者的电脑上使用telnet程序,用它连接到服务器。终端使用者可以在telnet程序中输入命令,这些命令会在服务器上运行,就像直接在服务器的控制台上输入一样。可以在本地就能控制服务器。要开始一个telnet会话,必须输入用户名和密码来登录服务器。Telnet是常用的远程控制路由器的方法。
特点:
在本机cmd窗口输入如下命令进行Telnet远程登录。
telnet 192.168.188.227
然后输入虚拟机中的用户名,密码,管理员名称。
登录成功弹出如下界面
在登录的过程中进行抓包,这里使用的是OmniPeek,原因是因为这个比起Wireshark更加的方便对数据包进行分析。
可以看到在本机输入的用户名和密码被抓取到了,这样就非常的不安全。
而且Telnet是属于TCP的交互式数据流,在输入用户名和密码的时候,数据包是客户端发送一个,服务端接受一个。这样在抓取到的数据包中看到客户端和服务端一来一回的一个交互过程。
在数据包内容中可以看到目的端口是23,也就是Telnet所占用的端口号。