当前位置: 首页 > news >正文

计算机网络——11EMail

EMail

电子邮件(EMail)

3个主要组成部分

  • 用户代理
  • 邮件服务器
  • 简单邮件传输协议:SMTP

用户代理

  • 又名“邮件阅读器”
  • 撰写、编辑和阅读邮件
  • 输入和输出邮件保存在服务器上

在这里插入图片描述

邮件服务器

  • 邮箱中管理和维护发送给用户的邮件
  • 输出报文队列保持待发送邮件报文
  • 邮件服务器之间的SMTP协议:发送emmail报文
    • 客户:发送方邮件服务器
    • 服务器:接收端邮件服务器

EMail:SMTP[RFC 2821]

  • 使用TCP在客户端和服务器之间传送报文,端口号为25
  • 直接传输:从发送方服务器到接收方服务器
  • 传输的三个阶段
    • 握手
    • 传输报文
    • 关闭
  • 命令/相应交互
    • 命令:ASCII文本
    • 响应:状态码和状态信息
  • 报文必须为7位ASCII码

邮件发送流程

举例:Alice给Bob发送报文

在这里插入图片描述

  • Alice使用用户代理撰写邮件并发送给 bob@someschool.edu
  • Alice的用户代理将邮件发送到她的邮件服务器;邮件放在报文队列中
  • SMTP的客户端打开到Bob邮件服务器的TCP连接(建立TCP连接)
  • SMTP客户端通过TCP连接发送Alice的邮件
  • Bob的邮件服务器将邮件放到Bob的邮箱(POP3,)
  • Bob调用他的用户代理阅读邮件

简单的SMTP交互

以下是两个右键服务器进行SMTP交互的流程

  • C:客户,发送方邮件服务器
  • S:服务器,接收方邮件服务器
S: 220 hamburger.edu
C: HELO crepes.fr
S: 250 Hello crepes.fr, pleased to meet you
C: MAIL FROM: <alice@crepes.fr> #邮件来自的邮箱
S: 250 alice@crepes.fr... Sender ok #接受成功
C: RCPT TO: <bob@hamburger.edu> #邮件去往的邮箱
S: 250 bob@hamburger.edu ... Recipient ok # 接受成功
C: DATA  # 邮件信息
S: 354 Enter mail, end with "." on a line by itself
C: Do you like ketchup?
C: How about pickles?
C: .
S: 250 Message accepted for delivery
C: QUIT
S: 221 hamburger.edu closing connection

SMTP 总结

  • SMTP使用持久连接
  • SMTP要求报文(首部和主体)为7位ASCII编码
  • SMTP服务器使用CRLF,CRLF决定报文的尾部

HTTP比较

  • HTTP:拉(pull)
  • SMTP:推(push)
  • 二者都是ASCII形式的命令/响应交互、状态码
  • HTTP:每个对象封装在各自的响应报文中
  • SMTP:多个对象包含在一个报文中

邮件报文格式

SMTP:交换email报文的协议
RFC 822:文本交换的标准

  • 首部行:如

    • To:
    • From:
    • Subject:

    与SMTP命令不同

  • 主体

    • 报文,只能是ASCII码字符

在这里插入图片描述

报文格式:多媒体拓展

  • MIME:多媒体邮件扩展(multimedia mail extension), RFC 2045, 2056
  • 在报文首部用额外的行申明MIME内容类型

在这里插入图片描述

邮件访问协议

在这里插入图片描述

  • SMTP: 传送到接收方的邮件服务器
  • 邮件访问协议:从服务器访问邮件 (3种方式)
    • POP3:邮局访问协议(Post Office Protocol)[RFC 1939]
      • 用户身份确认 (代理<–>服务器) 并下载
    • IMAP:Internet邮件访问协议(Internet Mail Access Protocol)[RFC 1730]
      • 更多特性和功能 (更复杂) ;在服务器上处理存储的报文
    • HTTP:Hotmail , Yahoo! Mail等
      • 方便

POP3协议

用户确认阶段

  • 客户端命令:
    • user: 申明用户名
    • pass: 口令
  • 服务器响应
    • +OK
    • -ERR

事物处理阶段

客户端:

  • list: 报文号列表
  • retr: 根据报文号检索报文
  • dele: 删除
  • quit:关闭连接
# 用户确认阶段
S: +OK POP3 server ready
C: user bob
S: +OK
C: pass hungry
S: +OK user successfully logged on
# 事物处理阶段
C: list
S: 1 498
S: 2 912
S: .
C: retr 1
S: <message 1 contents>
S: .
C: dele 1
C: retr 2
S: <message 1 contents>
S: .
C: dele 2
C: quit
S: +OK POP3 server signing off
  • 先前的例子使用 “下载 并删除”模式。
    • 如果改变客户机,Bob不 能阅读邮件
  • “下载并保留”:不同 客户机上为报文的拷贝
  • POP3在会话中是无状态的

IMAP

  • IMAP服务器将每个报文 与一个文件夹联系起来
  • 允许用户用目录来组织 报文
  • 允许用户读取报文组件
  • IMAP在会话过程中保留 用户状态:
    • 目录名、报文ID与目录名 之间映射

相关文章:

  • 移动机器人激光SLAM导航(五):Cartographer SLAM 篇
  • unity 点击事件
  • upload-labs文件上传漏洞靶场
  • VTK 三维场景的基本要素(相机) vtkCamera
  • 知识图谱 多模态学习 2024 最新综述
  • nginx限制网段访问
  • 算法沉淀——哈希算法(leetcode真题剖析)
  • OpenGL-ES 学习(2)---- DepthTest
  • 【头歌·计组·自己动手画CPU】三、存储系统设计(HUST)(理论版) 【计算机硬件系统设计】
  • 3D裸眼技术行业研究:2026年市场投资规模为10.78亿元
  • 前端vite+vue3——自动化配置路由布局
  • LLM大模型相关问题汇总---包括问题与答案
  • BUGKU-WEB 矛盾
  • 书生浦语大模型实战营-课程笔记(2)
  • 数据结构:并查集讲解
  • 0基础学习移动端适配
  • angular组件开发
  • css布局,左右固定中间自适应实现
  • Docker容器管理
  • git 常用命令
  • HTML中设置input等文本框为不可操作
  • Mysql数据库的条件查询语句
  • Phpstorm怎样批量删除空行?
  • Python - 闭包Closure
  • QQ浏览器x5内核的兼容性问题
  • windows下使用nginx调试简介
  • Work@Alibaba 阿里巴巴的企业应用构建之路
  • XForms - 更强大的Form
  • 阿里云爬虫风险管理产品商业化,为云端流量保驾护航
  • 关于springcloud Gateway中的限流
  • 快速构建spring-cloud+sleuth+rabbit+ zipkin+es+kibana+grafana日志跟踪平台
  • 模型微调
  • 排序算法之--选择排序
  • 前端临床手札——文件上传
  • 王永庆:技术创新改变教育未来
  • 一个项目push到多个远程Git仓库
  • 原生Ajax
  • HanLP分词命名实体提取详解
  • 翻译 | The Principles of OOD 面向对象设计原则
  • #1014 : Trie树
  • #stm32驱动外设模块总结w5500模块
  • #我与Java虚拟机的故事#连载14:挑战高薪面试必看
  • $con= MySQL有关填空题_2015年计算机二级考试《MySQL》提高练习题(10)
  • $HTTP_POST_VARS['']和$_POST['']的区别
  • (13):Silverlight 2 数据与通信之WebRequest
  • (31)对象的克隆
  • (C++20) consteval立即函数
  • (动手学习深度学习)第13章 计算机视觉---微调
  • (附源码)计算机毕业设计ssm-Java网名推荐系统
  • (六)软件测试分工
  • (四)linux文件内容查看
  • (五)关系数据库标准语言SQL
  • (原創) 如何安裝Linux版本的Quartus II? (SOC) (Quartus II) (Linux) (RedHat) (VirtualBox)
  • (转)jQuery 基础
  • (转)菜鸟学数据库(三)——存储过程