1. 文件传输协议FTP
1.1 定义
- 作用
早期用于分享文件的协议(包括上传与下载文件),FTP服务器的作用例如当下的迅雷,百度,云盘
网络管理员维护FTP服务器。分享者(某个用户)通过FTP客户端上载(上传)文件来分享。其他用户通过FTP客户端访问这些内容。
- 构成
用户接口,本地文件接口。FTP服务器有存储硬盘(云硬盘),在本地文件与服务器文件目录传输文件。
TFTP协议:
TFTP:TFTP(Trivial File Transfer Protocol,简单文件传输协议)是TCP/IP协议族中的一个用来在客户机与服务器之间进 行简单文件传输的协议,提供不复杂、开销不大的文件传输服务。 TFTP通常用于从TFTP服务器下载或上传文件, 例如操作系统引导程序、配置文件等。TFTP客户端和TFTP服务器之间的通信是基于UDP协议进行的,端口号为69。 与FTP协议相比,TFTP协议更加简单和轻量级,但功能较少。TFTP协议不支持用户认证,只能以匿名方式进行文件传输。 此外,TFTP协议不支持文件目录操作,只能进行文件传输。 在TFTP协议中,有两种传输模式,分别是读写模式(读写模式)和只读模式(只读模式): 读写模式:客户端可以从服务器下载文件,也可以向服务器上传文件。 只读模式:客户端只能从服务器下载文件,不能向服务器上传文件。 需要注意的是,由于TFTP协议的安全性较低,因此在实际应用中,通常会使用FTP协议来代替TFTP协议。
- FTP服务器与客户端
Windows系统自带FTP命令
用户可以通过以下步骤使用FTP命令:
打开命令提示符。 输入“ftp”并按下回车键,进入FTP模式。 输入FTP服务器的地址,并按照提示进行操作。
需要注意的是,在使用FTP命令时,用户需要具备一定的计算机基础知识和技能,以及正确的安全措施和操作流程,以确保数据的安全和可靠性2
1.2 工作阶段
建立连接
当FTP客户端向FTP服务器发送连接请求时,FTP服务器会向客户端发送连接应答,建立起FTP控制连接
。
然后,FTP客户端需要向FTP服务器发送用户名和密码进行身份验证,如果身份验证成功,就可以开始进行文件传输等操作
身份验证
用户身份验证属于控制连接的内容,是在连接建立之后进行的,控制连接参见1.3.1。
- 输入用户名密码进行登录(FTP服务器进行用户名密码传输采用明文传输,具有安全风险,容易被黑客使用抓包工具截获)
- 匿名登录
文件操作与传输
建立连接后会建立(不是同时建立)两个不同的TCP连接,分别称为控制连接和数据连接。
在控制连接上进行指令的传输,在数据连接上传输文件数据。
1.3 FTP控制连接与数据连接
FTP控制连接与数据连接分开
1.3.1 控制连接
在控制连接上
- 用户身份认证
user,password使用的是明文传输
- 客户端向服务器发送指令,如切换目录,删除,上传、下载文件的指令。
数据命令的传输称之为”带外的“
FTP命令与响应状态码解释示例:
上图中命令样例中小写单词为可变参数,具体的值。大写单词为专有名词,是固定的。
RETR(retrieve)指令是从服务器下载文件指令,指定某个文件名。
STOR上载(上传)。
上载
下载
客户端
服务器
当客户端向服务器发送下载文件命令之后,服务器的使用自己的20号端口主动与客户端建立数据连接
。
1.3.2 数据连接
在数据连接上:
- 进行文件的下载,上载(上传)等数据流的传输。
数据的传输在数据连接上进行。数据传输称之为”带内的“
在FTP的数据连接过程中,客户端发送一个FTP命令给服务器,告诉服务器需要传送或者接收数据。服务器在收到命令后,会用自己的20号端口向客户端发送一个确认响应。客户端在收到响应后,会打开一个数据传输连接,并向服务器发送一个数据连接请求。服务器在收到请求后,会用自己的20号端口与客户进程建立数据传送连接。
需要注意的是,FTP的数据连接端口是动态分配的,不是固定的20号端口。但是一般来说,FTP的数据连接端口都是20号端口,因为FTP协议规定使用20号端口进行数据连接。
FTP是有状态的协议,服务器需要维护客户端状态。
HTTP的传输是在一条TCP连接上进行的。HTTP初始设计是无状态的,通过cookie的作用可以把它变成有状态的协议
图解
具体工作过程可参见下图:
在计算机网络中,有状态和无状态是指网络协议是否保存网络连接状态的信息。
无状态协议是指协议不保存关于网络连接状态的信息。无状态协议不对先前请求或响应进行记录,每次请求都需要提供完整的信息。例如,HTTP协议就是一个无状态的协议,它不会保存客户端发送的请求信息,每个请求都是独立的。
有状态协议则是指协议保存关于网络连接状态的信息。有状态协议会对先前的请求或响应进行记录,以便后续处理。例如,FTP协议就是一个有状态的协议,它会在服务器端保存客户端的连接状态信息,以便后续处理。
在计算机网络中,有状态和无状态协议各有优缺点。无状态协议可以更好地支持并发处理和负载均衡,因为无状态协议不会保存连接状态信息,因此更容易实现多个请求的处理。而有状态协议则可以更好地支持需要保存连接状态信息的场景,例如需要保持会话的Web应用程序。
需要注意的是,有状态协议如果处理不当容易受到攻击,例如FTP服务器的匿名访问权限容易导致FTP服务器被攻击。因此,在实际应用中需要根据具体情况选择合适的协议。
2. Email
2.1 电子邮件概述
电子邮件是利用计算机网络进行的一种通信方式,可以用于在互联网上发送和接收数字信息。
电子邮件的基本构成包括邮件头和邮件体,其中邮件头包括发件人、收件人、主题、日期等信息,邮件体是邮件内容的主要部分,可以包含文字、图片、链接等元素。
电子邮件的发送和接收过程一般需要经过三个环节:用户编写邮件并发送到发件服务器,发件服务器根据收件人的地址将邮件转发到中转服务器,中转服务器再将邮件转发到最终的收件服务器。
收件人可以通过客户端程序(如Outlook、Thunderbird等)连接到收件服务器并下载邮件,就可以阅读邮件内容。
使用电子邮件需要设置SMTP、POP3等协议,这些协议规定了电子邮件的传输和接收标准。
2.2 电子邮件系统组成结构
电子邮件包括:用户代理,邮件服务器,协议
电子邮件协议包括发送协议(SMTP)和拉取协议(POP3,IMAP,HTTP)。由于发送和接收邮件是推送和拉取报文的操作,它们也可以称为“推”式协议,“拉”式协议。
发送方(用户代理),发送协议SMTP
,发送方邮件服务器,SMTP协议
,接收方邮件服务器,拉取协议
,接收方(用户代理)。
SMTP是“推”式的协议,发送方将邮件数据推送到SMTP服务器的外出报文队列;
HTTP主要是“拉”式协议,通过浏览器客户端将服务端的文件随时拉取下来。基于web浏览器的电子邮件中,HTTP协议也可以起到发送协议的作用。
- 总体工作流程
2.3 邮件报文格式
3. 简单邮件传输协议SMTP
SMTP(Simple Mail Transfer Protocol)是一种用于电子邮件传输的协议。
SMTP协议定义了邮件传输过程中邮件的发送方和接收方之间的通信协议,包括邮件的格式、传输方式、认证机制等方面的规定。
3.1 SMTP协议工作
SMTP协议工作流程如下:
TCP三次握手。
发送连接申请SMTP HELO。
发送发件人信息SMTP MAIL FROM。
发送收件人信息SMTP RCPT TO。
发送邮件内容指令SMTP DATA。
发送邮件内容。
邮件传输完毕,SMTP QUIT。
SMTP中有一些重要的协议命令,例如:
HELO:用于向接收方服务器标识自己的主机名。
MAIL FROM:用于指定发件人的地址。
RCPT TO:用于指定收件人的地址。
DATA:SMTP DATA命令用于指定邮件正文的开始,并告诉SMTP服务器可以开始接收邮件内容。DATA后面应为邮件文本,并以单行“.”结束。
要点:
- C/S:客户端/服务器模式
- TCP连接
- 直接传输
从发送方服务器直接传输到接收方服务器,中间不经过其他服务器转存储。 - 端口号
默认使用25号端口在客户端与服务器传输报文。 - 通信阶段
- 连接建立(握手)
- 邮件发送(传输报文)
- 连接释放(关闭)
- 命令/响应交互
- 命令:ASCII文本(14条命令,几个字母)
- 响应:状态码和状态信息(21种应答信息:三位数字代码+简单文字说明)
- 限制
- 报文必须为7位ASCII码
- 持久连接
- 一次TCP连接可以按顺序发送多个邮件,全部发送完毕后关闭连接。
3.2 局限
- SMTP协议不足:只能传输7比特ASCII邮件数据,包括邮件首部和主体。如果邮件中存在没有经过ASCII编码的数据,将对其编码后再传输。 在因特网最初时代这种设计是明智的,因为没有人会在邮件中传输视频,图片等大型数据流。
3.3 示例
- 简单SMTP交互
3.4 SMTP格式
3.5 总结
HTTP主要是”拉“,也可以“推”。
4. 第三版邮局协议POP3
POP3是一个非常简单的邮件访问协议,在接收方阅读邮件时,由于SMTP不支持拉文件,因此有弊端。诞生了第三代邮件阅读协议POP3,作用是从接收方的SMTP服务器把邮件送到接收方邮箱。
4.1 工作位置图示
4.2 工作方式
POP3有两种工作方式:下载并保留(保留在接收方服务器),这种工作方式可以使多个客户端(如手机,mac,电脑,传真机等)都能下载并阅读。
下载并删除 工作方式则仅支持下载一次就会删除。比如用手机接收了邮件,那么就不能在其他设备在次从邮件服务器接收到。
POP3工作阶段
- 特许阶段
用户代理发送(明文形式)用户名与口令以鉴别用户。 - 事务处理阶段
- 用户代理取回报文
- 对报文作删除标记,取消报文删除标记
- 获取邮件统计信息
- 更新阶段:在用户发出quit命令之后出现
- 结束POP3会话
- 删除被标记为删除的报文
5.多媒体扩展 MIME
MIME支持将非ASCII字节进行编码再转换为ASCII转交给SMTP进行传输。常见是将汉字等进行base64编码再转换。
6. 因特网邮件访问协议IMAP
POP3协议没有给用户提供任何创建远程文件夹并为报文指派文件夹的方法,为了解决这个问题,产生因特网邮件访问协议IMAP。
6.1 POP3与IMAP
7. 基于万维网的电子邮件
用户到邮件服务器都是HTTP协议,包括发送方与接收方。但是邮件服务器与邮件服务器之间的传输依然是使用SMTP协议
。