电子邮件协议链
约 50 分钟
电子邮件协议链
本课目标
能沿应用进程、名字解析、传输连接和请求响应画完整协议链;能计算缓存TTL、连接数、RTT与对象时延,并识别每条连接的发起方和状态。
核心机制
用户代理提交邮件到邮件服务器,SMTP负责提交和服务器间传输,采用存储转发;收件人使用POP3或IMAP访问邮箱,Webmail则通过HTTP与用户交互、后台仍用邮件协议。DNS MX记录定位收件域邮件服务器,MIME扩展非ASCII正文与附件类型。
报文与时序推演
alice向bob@example.com发送:客户端提交SMTP→发送方服务器查MX→SMTP传到example.com服务器→bob用IMAP同步。SMTP推送邮件,IMAP/POP3由接收用户拉取。
统一表格记录“时刻、客户端/服务器、协议、连接、源/目的端口、请求、响应、缓存状态”。DNS先解决名字到地址/服务,传输层建立通信,应用协议再交换报文;不同阶段不可用一个‘网络请求’笼统代替。
可运行模型
chain=['user agent','submission SMTP','sender MTA','DNS MX','receiver MTA','IMAP client'];print(' -> '.join(chain))
先手算再运行。修改TTL、对象数、连接复用方式、FTP模式或邮件域,重新画报文和时延。
边界与错因
递归与迭代描述查询责任,不等同UDP/TCP;DNS缓存命中也受TTL约束。FTP控制/数据连接分离,主动/被动模式的数据连接发起方不同。SMTP负责提交与传输,POP3/IMAP负责读取。HTTP无状态指协议请求独立,不妨碍Cookie建立应用状态。
迁移练习
将DNS缓存设为过期、FTP放在NAT后、MX查询失败、HTTP对象改为并行/持久/多路复用,重新计算连接、RTT和错误传播。必须指出哪个阶段变化,而不是只改总时间。
课内验收
完成下方两道在线题,并提交协议时序或RTT表。计算题说明忽略/计入哪些时间;选择题指出错误项混淆的协议职责。
Practice
本课练习
先独立作答再提交;编程题会在隔离沙箱中真实编译、运行并对拍。