前言:
学习视频:中科大郑烇、杨坚全套《计算机网络(自顶向下方法 第7版,James F.Kurose,Keith W.Ross)》课程
该视频是B站非常著名的计网学习视频,但相信很多朋友和我一样在听完前面的部分发现信息量过大,有太多无法理解的地方,在我第一次点开的时候也有相同的感受,但经过了一段时间项目的学习,对计网有了更多的了解,所以我准备在这次学习的时候做一些记录并且加入一些我的理解,希望能够帮助到大家。
往期笔记可以看专栏中的内容
资料分享:
视频课件分享链接,提取码pho1
计算机网络(第七版) 自顶向下方法分享链接,提取码7ln4
文章目录
- 2.3 FTP
- 2.3.1 运行流程
- 2.3.2 常见的命令
- 2.3.3 常见的返回码
- 2.4 EMail
- 2.4.1 邮件传输的流程
- 2.4.2 SMTP 的执行流程
- 2.4.3 简单的 SMTP 示例
- 2.4.4 SMTP 报文格式
- 2.4.5 邮件访问协议总结
FTP(File Transfer Protocol,文件传输协议)是一种用于在计算机网络上进行文件传输的标准协议。它是一种客户端-服务器协议,用于在客户端和服务器之间传输文件。
- 属于应用层的协议,是跑在 TCP 协议之上的
21
号端口(控制连接),建立与服务器的控制连接。20
号端口),接收客户端发送的文件内容。命令的发出 和 数据的上载和下载 是在两个连接上进行
- 与 HTTP 不同,TCP 的协议是 有状态 的,也就是服务器是要存储和维护客户端的信息
命令在控制连接上以 ASCII 文本的方式传送
连接服务器:
ftp <hostname>
登录:
PASS <password>
退出:
QUIT
列出目录内容:
LIST
下载文件:
RETR <filename>
上载文件:
STOR <filename>
SMTP(Simple Mail Transfer Protocol,简单邮件传输协议)是用于在网络上传输电子邮件的标准协议。SMTP定义了一系列规则和约定,用于在电子邮件客户端和服务器之间传递邮件消息。
邮箱的构成:电子邮箱地址由两部分组成:用户名和域名,它们之间用 “@” 符号分隔。
username@domain
域名是指电子邮件地址中 “@” 符号之后的部分。它通常指定了邮件服务器的地址或者邮件服务提供商的域名。域名由多个点号分隔的标签组成,例如:example.com、gmail.com、hotmail.com 等。
建立连接:
客户端: Telnet example.com 25
服务器: 220 example.com ESMTP Postfix
客户端向服务器发送HELO命令,握手并标识自己:
客户端: HELO client.example.com
服务器: 250 Hello client.example.com
客户端指定发件人:
客户端: MAIL FROM:<sender@example.com>
服务器: 250 Ok
客户端指定收件人:
客户端: RCPT TO:<recipient@example.net>
服务器: 250 Ok
客户端发送数据命令,开始传输邮件内容:
客户端: DATA
服务器: 354 End data with <CR><LF>.<CR><LF>
客户端发送邮件内容(包括头部和正文):
客户端: From: sender@example.com
客户端: To: recipient@example.net
客户端: Subject: Test Email
客户端:
客户端: This is a test email.
客户端: .
客户端完成邮件传输并断开连接:
客户端: QUIT
服务器: 221 Bye
HTML
格式或者包含多媒体内容的 MIME
格式。关于 MIME
MIME
(Multipurpose Internet Mail Extensions
,多用途互联网邮件扩展)是一种互联网标准,用于在电子邮件中传输各种类型的数据,包括 文本、图像、音频、视频等多媒体内容。- MIME最初是为了解决SMTP只能传输7位ASCII字符的限制而设计的,它通过在邮件头部添加一些额外的信息来允许邮件中包含非ASCII字符和多媒体数据。
关于编码
- 编码(
Encoding
)是一种将数据转换为另一种形式或格式的过程。编码通常用于将数据转换为计算机能够理解和处理的二进制形式,以便在存储、传输和处理数据时能够正确地进行操作。- Base64是一种基于64个可打印字符(A-Z、a-z、0-9和"+“、”/")的编码方式,用于将二进制数据转换为文本字符串的表示形式。Base64编码通常用于在文本协议中传输二进制数据,或者在需要将二进制数据嵌入到文本中的场景中,如在电子邮件中传输附件、在HTML中嵌入图片等。
- ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)是一种用于在计算机和通信设备中表示文本字符的编码方式。ASCII码使用7位二进制数来表示128个字符,包括了英文字母、数字、标点符号和一些控制字符。
再来理顺一下关系:
RFC
(Request for Comments
,征求意见稿)是由互联网工程任务组(IETF)发布的一系列文件,用于规范互联网相关技术的标准、协议、方法和概念。RFC文档是由互联网社区共同编写和审查的,它们记录了互联网标准的制定过程、技术规范的细节、协议的设计原理以及一些实践经验等。
POP 与 IMAP:
- 工作方式:
- POP(POP3): POP是一种简单的邮件拉取协议,它的工作方式是将服务器上的邮件全部下载到本地计算机上,然后将邮件从服务器上删除。因此,邮件只存在于本地计算机上,服务器上不再保存邮件副本。
- IMAP(IMAP4): IMAP是一种更为高级的邮件访问协议,它允许用户在多个设备上同步收件箱中的邮件。IMAP将邮件保留在邮件服务器上,并允许用户在不同设备上查看、管理和同步邮件,包括已读、未读状态、文件夹结构等。
- 邮件保留:
- POP: 在使用POP协议时,邮件通常会被下载到客户端设备上,并且在服务器上被删除。因此,邮件只存储在本地设备上。
- IMAP: 在使用IMAP协议时,邮件通常保留在服务器上,用户可以在多个设备上访问同一份邮件,并且同步收件箱中的状态和文件夹结构。
- 适用场景:
- POP: 适用于单个设备上获取邮件并在本地存储的场景,比如使用电子邮件客户端的个人用户。
- IMAP: 适用于需要在多个设备之间同步邮件的场景,比如在多台设备上管理同一份收件箱的用户。
平时使用的各种客户端其实就是对协议的一种封装
- 比如邮箱客户端通过封装邮件协议的指令来与邮件服务器进行通信和交互。邮件客户端通常会使用诸如SMTP、POP3、IMAP等协议来发送、接收和管理电子邮件。
- 亦或是 Web 应用实际上也是通过封装HTTP协议的请求和响应来与客户端进行通信和交互。在Web开发中,服务器端的应用程序接收来自客户端的HTTP请求,并生成相应的HTTP响应来返回给客户端。