中科大计网学习记录笔记(八):FTP | EMail

前言:

学习视频:中科大郑烇、杨坚全套《计算机网络(自顶向下方法 第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 邮件访问协议总结

2.3 FTP

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

💡 FTP(File Transfer Protocol,文件传输协议)是一种用于在计算机网络上进行文件传输的标准协议。它是一种客户端-服务器协议,用于在客户端和服务器之间传输文件。

  • 属于应用层的协议,是跑在 TCP 协议之上的
2.3.1 运行流程
  1. 建立连接:客户端通过TCP连接到FTP服务器的21号端口(控制连接),建立与服务器的控制连接。
  2. 用户认证:客户端向服务器发送用户名和密码进行身份认证。如果认证成功,客户端就可以访问服务器上的文件系统。
  3. 浏览目录: 客户端可以使用FTP命令(如LIST)来列出服务器上的文件和目录。通过FTP客户端的用户界面,用户可以选择要下载或上传的文件,并在本地计算机和服务器之间进行文件传输。
  4. 下载文件: 如果客户端要下载文件,它会向服务器发送一个下载请求(如GET命令),指定要下载的文件名和路径。服务器接收到请求后会打开一个新的数据连接(通常是20号端口),将文件的内容传输给客户端。
  5. 上传文件: 如果客户端要上传文件,它会向服务器发送一个上传请求(如PUT命令),指定要上传的文件名和路径。服务器接收到请求后会打开一个新的数据连接(通常是20号端口),接收客户端发送的文件内容。
  6. 关闭连接: 文件传输完成后,客户端可以选择关闭与服务器的连接,以释放资源。可以使用QUIT命令关闭控制连接。

💡 命令的发出数据的上载和下载 是在两个连接上进行

  • 与 HTTP 不同,TCP 的协议是 有状态 的,也就是服务器是要存储和维护客户端的信息
2.3.2 常见的命令
  • 命令在控制连接上以 ASCII 文本的方式传送

  • 连接服务器:

    ftp <hostname>
    
  • 登录:

    PASS <password>
    
  • 退出:

    QUIT
    
  • 列出目录内容:

    LIST
    
  • 下载文件:

    RETR <filename>
    
  • 上载文件:

    STOR <filename>
    
2.3.3 常见的返回码

2.4 EMail

💡 SMTP(Simple Mail Transfer Protocol,简单邮件传输协议)是用于在网络上传输电子邮件的标准协议。SMTP定义了一系列规则和约定,用于在电子邮件客户端和服务器之间传递邮件消息。

2.4.1 邮件传输的流程

  1. 用户使用用户代理(各种邮箱客户端,比如 Outlook、Foxmail 等)将邮件发送到对应的邮件服务器(SMTP 协议)
  2. 邮件服务器再将其发到目标邮件服务器(SMTP 协议)
  3. 接收方上线从邮件服务器拉取邮件(POP3 协议)
2.4.2 SMTP 的执行流程

💡 邮箱的构成:电子邮箱地址由两部分组成:用户名和域名,它们之间用 “@” 符号分隔。

  • username@domain
    
  • 域名是指电子邮件地址中 “@” 符号之后的部分。它通常指定了邮件服务器的地址或者邮件服务提供商的域名。域名由多个点号分隔的标签组成,例如:example.com、gmail.com、hotmail.com 等。

  1. 建立连接: 邮件客户端通过TCP连接到邮件服务器的25号端口(SMTP默认端口),建立与服务器的连接。
  2. 握手: 客户端向服务器发送一个HELO或EHLO命令,用于建立与服务器的握手,并标识客户端自身。服务器在收到握手后会返回一个250 OK响应。
  3. 发件人验证: 客户端发送一个MAIL FROM命令,指定邮件的发件人地址。服务器会检查发件人地址的有效性,并返回一个250 OK响应。
  4. 收件人验证: 客户端发送一个RCPT TO命令,指定邮件的收件人地址。服务器会检查收件人地址的有效性,并返回一个250 OK响应。
  5. 邮件传输: 客户端发送DATA命令,表示开始传输邮件内容。随后客户端发送邮件的内容(包括邮件头部和正文),以及以单独一行“.”标识邮件结束。服务器收到邮件内容后,会返回一个250 OK响应。
  6. 邮件传输完成: 客户端发送QUIT命令,表示邮件传输完成,并请求关闭与服务器的连接。服务器收到QUIT命令后,会返回一个221 Bye响应,并关闭连接。
2.4.3 简单的 SMTP 示例
  1. 建立连接:

    客户端: Telnet example.com 25
    服务器: 220 example.com ESMTP Postfix
    
  2. 客户端向服务器发送HELO命令,握手并标识自己:

    客户端: HELO client.example.com
    服务器: 250 Hello client.example.com
    
  3. 客户端指定发件人:

    客户端: MAIL FROM:<sender@example.com>
    服务器: 250 Ok
    
  4. 客户端指定收件人:

    客户端: RCPT TO:<recipient@example.net>
    服务器: 250 Ok
    
  5. 客户端发送数据命令,开始传输邮件内容:

    客户端: DATA
    服务器: 354 End data with <CR><LF>.<CR><LF>
    
  6. 客户端发送邮件内容(包括头部和正文):

    客户端: From: sender@example.com
    客户端: To: recipient@example.net
    客户端: Subject: Test Email
    客户端:
    客户端: This is a test email.
    客户端: .
    
  7. 客户端完成邮件传输并断开连接:

    客户端: QUIT
    服务器: 221 Bye
    
2.4.4 SMTP 报文格式

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  1. 邮件头部(Header):
    • 邮件头部包含了一系列的头字段(Header Fields),用于描述邮件的各种属性和元数据。常见的头字段包括:
      • 发件人(From)
      • 收件人(To)
      • 抄送(Cc)
      • 主题(Subject)
      • 日期(Date)
      • MIME版本(MIME-Version)
      • 邮件优先级(Priority)
      • 邮件ID(Message-ID)等。
  2. 邮件体(Body):
    • 邮件体包含了邮件的实际内容,包括正文和附件等。邮件体可以是纯文本格式,也可以是 HTML 格式或者包含多媒体内容的 MIME 格式。

💡 关于 MIME

  • MIMEMultipurpose 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个字符,包括了英文字母、数字、标点符号和一些控制字符。

再来理顺一下关系:

  • 首先源头是 SMTP 仅能传输在 ASCII 码标识范围内的这 128 个字符、
  • 但是图片等非文本的内容(以二进制存储在计算机中)可能会跃出这个部分
  • 所以需要将它们转化为在 ASCII 的 128 个字符范围内的字符
  • 就需要 Base64 将二进制的数据转化为文本字符串
2.4.5 邮件访问协议总结

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • SMTP: 传送到接收方的邮件服务器
  • 邮件访问协议:从服务器访问邮件
    • POP:邮局访问协议(Post Office Protocol)
      • 用户身份确认 (代理<–>服务器) 并下载
    • IMAP:Internet邮件访问协议(Internet Mail Access Protocol), IMAP是一种更为高级的邮件访问协议,它允许用户在多个设备上同步收件箱中的邮件。IMAP将邮件保留在邮件服务器上,并允许用户在不同设备上查看、管理和同步邮件,包括已读、未读状态、文件夹结构等。
    • HTTP:Hotmail , Yahoo! Mail 等

💡 RFCRequest 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响应来返回给客户端。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/383759.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

时域和离散域的重要转换器

自然界的模拟信号都是连续信号&#xff0c;也就是我们常说的时域信号&#xff0c;而我们的计算机只能处理离线的数字量信号&#xff0c;但是我们的闭环控制系统都是由离散域和时域所组成的&#xff0c;这里的离散域包括我们的计算机微控制器&#xff0c;时域包括我们的被控对象…

错误的集合(力扣刷题)

个人主页&#xff08;找往期文章包括但不限于本期文章中不懂的知识点&#xff09;&#xff1a;我要学编程(ಥ_ಥ)-CSDN博客 由于作者比较菜&#xff0c;还没学malloc这个函数&#xff0c;因此这个题目只写一些与原题大致的思路。 题目链接&#xff1a;645. 错误的集合 - 力扣…

小周带你正确理解Prompt-engineering,RAG,fine-tuning工程化的地位和意义

有人会说&#xff1a;"小周&#xff0c;几天不见这么拉了&#xff0c;现在别说算法了&#xff0c;连code都不讲了&#xff0c;整上方法论了。" 我并没有拉&#xff01;而且方法论很重要&#xff0c;尤其工程化的时候&#xff0c;你总得知道每种技术到底适合干啥&…

创建你的第一个Vue项目(小白专享版本)

&#x1f497;&#x1f497;&#x1f497;欢迎来到我的博客&#xff0c;你将找到有关如何使用技术解决问题的文章&#xff0c;也会找到某个技术的学习路线。无论你是何种职业&#xff0c;我都希望我的博客对你有所帮助。最后不要忘记订阅我的博客以获取最新文章&#xff0c;也欢…

TestNG基础教程

TestNG基础教程 一、常用断言二、执行顺序三、依赖测试四、参数化测试1、通过dataProvider实现2、通过xml配置&#xff08;这里是直接跑xml&#xff09; 五、testng.xml常用配置方式1、分组维度控制2、类维度配置3、包维度配置 六、TestNG并发测试1、通过注解来实现2、通过xml来…

05.坐标系

1. 坐标系原点 坐标系原点就是屏幕/窗口的左上角&#xff0c;X向右增长&#xff0c;Y向下增长。 2.设置控件位置 设置控件位置&#xff0c;就相当于是需要指定控件的坐标&#xff0c;对于该控件来说&#xff0c;其坐标原点是其父窗口/父控件的左上角。 设置方法就是通过控件的…

腾讯云4核8G服务器够用吗?容纳多少人同时访问?

腾讯云4核8G服务器支持多少人在线访问&#xff1f;支持25人同时访问。实际上程序效率不同支持人数在线人数不同&#xff0c;公网带宽也是影响4核8G服务器并发数的一大因素&#xff0c;假设公网带宽太小&#xff0c;流量直接卡在入口&#xff0c;4核8G配置的CPU内存也会造成计算…

《CSS 简易速速上手小册》第9章:CSS 最佳实践(2024 最新版)

文章目录 9.1 维护大型项目的 CSS9.1.1 基础知识9.1.2 重点案例&#xff1a;构建一个可复用的 UI 组件库9.1.3 拓展案例 1&#xff1a;优化现有项目的 CSS 结构9.1.4 拓展案例 2&#xff1a;实现主题切换功能 9.2 BEM、OOCSS 和 SMACSS 方法论9.2.1 基础知识9.2.2 重点案例&…

C/C++模板初阶

目录 1. 泛型编程 2. 函数模板 2.1 函数模板概念 2.1 函数模板格式 2.3 函数模板的原理 2.4 函数模板的实例化 2.5 模板参数的匹配原则 3. 类模板 3.1 类模板的定义格式 3.2 类模板的实例化 1. 泛型编程 如何实现一个通用的交换函数呢&#xff1f; void Swap(int&…

【Jenkins】Jenkins关闭Jenkins关闭、重启

目录 一、Jenkins关闭、重启 二、Jenkins服务的启动、停止方法。 一、Jenkins关闭、重启 1.关闭Jenkins 只需要在访问jenkins服务器的网址url地址后加上exit&#xff0c;关闭Jenkins服务。 例如&#xff1a;http://localhost:8081/exit 2.重启Jenkies 只有在Jenkins服务启动…

亚马逊认证考试系列 - 知识点 - LightSail介绍

一、引言 在当今云计算的时代&#xff0c;亚马逊网络服务&#xff08;AWS&#xff09;已成为业界领先的云服务提供商。其中&#xff0c;LightSail服务是AWS为简化云计算的入门和使用而推出的一项服务。它特别适合那些想要快速搭建网站、开发环境或小型应用的用户。通过LightSa…

[office] Excel表格中自动添加的超连接怎么取消? #媒体#其他#知识分享

Excel表格中自动添加的超连接怎么取消&#xff1f; Excel表格中自动添加的连接怎么取消&#xff1f;有时候在Excel2013中输入网址或邮箱时会自动添加超连接&#xff0c;本质上这是很人性化的功能&#xff0c;可是对很多人来说可能用不到&#xff0c;而且很繁琐&#xff0c;下面…

寒假作业:2024/2/11

作业1&#xff1a;使用递归实现n! 代码&#xff1a; #include <stdio.h> #include <string.h> #include <stdlib.h> int fun(int n) {if(0n){return 1;}else{return n*fun(n-1);} } int main(int argc, const char *argv[]) {int n;printf("please en…

寒假思维训练day20

更新一道1600的反向贪心 题意&#xff1a; 有n场比赛&#xff0c;且小明的智商是m&#xff0c;每场比赛需要的智商是,当时, 可以直接看题&#xff0c;当时&#xff0c;需要智商m减1才能看这道题&#xff0c;当智商为0不能继续往下看题&#xff0c;问最多能看多少题 题解&#x…

【洛谷题解】P1029[普及组]最大公约数和最小公倍数问题

题目链接&#xff1a;[NOIP2001 普及组] 最大公约数和最小公倍数问题 - 洛谷 题目难度&#xff1a;普及- 涉及知识点&#xff1a;stl函数&#xff0c;最大公因数&#xff0c;最小公倍数 题意&#xff1a; 输入输出样例&#xff1a; 分析&#xff1a;直接套用公式优化累加即…

解决Typora导出HTML不显示图片

解决Typora导出HTML不显示图片 产生原因 Typora导出HTML不显示图片&#xff0c;可能时图片存放在我们的硬盘中。 我们可以将markdown中的图片转化为base64格式&#xff0c;嵌入到html中。 解决步骤 首先&#xff0c;下载 TyporaToBase64.jar 密码:45jq 其次&#xff0c;将…

DS:单链表实现队列

创作不易&#xff0c;友友们来个三连支持吧&#xff01; 一、队列的概念 队列&#xff1a;是只允许在一端进行插入数据操作&#xff0c;在另一端进行删除数据操作的特殊线性表&#xff0c;队列具有先进先出FIFO(First In First Out)的特点。 入队列&#xff1a;进行插入操作…

VTK 三维场景的基本要素(相机) vtkCamera 相机的运动

相机的运动 当物体在处于静止位置时&#xff0c;相机可以在物体周围移动&#xff0c;摄取不同角度的图像 移动 移动分为相机的移动&#xff0c;和相机焦点的移动&#xff1b;移动改变了相机相对焦点的位置&#xff0c;离焦点更近或者更远&#xff1b;这样就会改变被渲染的物体…

sqlmap 使用笔记(kali环境)

sqlmap使用 kali环境 -u或–url 直接扫描单个路径 //如果需要登录要有cookie sqlmap -u "http://10.0.0.6:8080/vulnerabilities/sqli/?id1" --cookie"PHPSESSIDisgvp2rv4uts46jbkb9bouq6ir; securitylow"-m 文件中保存多个url&#xff0c;工具会依次扫…

前后端分离好处多多,怕就怕分工不分人,哈哈

前后端分离倡导多年了&#xff0c;现在基本成为了开发的主流模式了&#xff0c;贝格前端工场承接的前端项目只要不考虑seo的&#xff0c;都采用前后端分离模式&#xff0c;这篇文章就来介绍一下前后端分离模式。 一、什么是前后端分离开发模式 前后端分离是一种软件开发的架构…