POP3数据包捕获

"POP3,全称为“Post Office Protocol - Version 3”,是TCP/IP协议族中的一种,由RFC1939定义。该协议主要用于允许客户端远程管理存储在邮件服务器上的电子邮件。

一、POP3的三种状态
在POP3协议中,存在三种状态:认证状态、处理状态和更新状态。协议的状态会随着命令的执行而改变,每个命令只能在特定状态下使用。连接建立时,客户端处于认证状态;成功提供身份认证后,进入处理状态;执行QUIT命令后,进入更新状态并最终返回认证状态;在认证状态下执行QUIT命令会释放连接。

二、POP3的命令

对于POP3客户端发送的每一条命令,POP3服务器都将回应一些响应信息。响应信息由一行或多行文本信息组成,其中的第一行始终以“+OK”或“-ERR”开头,它们分别表示当前命令执行成功或执行失败。具体命令如下:

1. USER username:user 命令是POP3客户端程序与POP3邮件服务器建立连接后通常发送的第一条命令,参数 username 表示收件人的帐户名称。
2. PASS password:pass 命令是在user命令成功通过后,POP3客户端程序接着发送的命令,它用于传递帐户的密码,参数 password 表示帐户的密码。
3. STAT:stat 命令用于查询邮箱中的统计信息,返回邮箱中的邮件数量和邮件占用的字节大小。
4. LIST [MSG#]:list 命令用于列出邮箱中的邮件信息,参数 msg#是一个可选参数,表示邮件的序号。当不指定参数时,POP3服务器列出邮箱中所有的未删除邮件信息;当指定参数msg#时,POP3服务器只返回序号对应的邮件信息。
5. RETR msg#:retr 命令用于获取某封邮件的内容,参数 msg#表示邮件的序号。
6. DELE msg#:dele 命令用于在某封邮件上设置删除标记,参数msg#表示邮件的序号。POP3服务器执行dele命令时,只是为邮件设置了删除标记,并没有真正把邮件删除掉,只有POP3客户端发出quit命令后,POP3服务器才会真正删除所有设置了删除标记的邮件。
7. REST:rest 命令用于清除所有邮件的删除标记。

三、POP3数据包捕获

可以看到,先进行了TCP三次握手建立起连接。目的端口号是110。
TCP连接建立之后,邮箱服务器返回一个pop3报文,携带信息
“+OK POP3”,然后本地返回一个ACK应答包给服务器。
之后本地分别输入命令USER+邮箱,服务器先返回一个ACK确认包,然后再返回一个POP3报文,本地收到后也返回一个ACK确认包给服务器。

接着本地输入命令PASS+密码,服务器认证成功后,开始进入处理阶段。注意,密码是采用明文传输的
STAT命令用于查询邮箱中的统计信息,当本地输入命令STAT时,服务器给出ACK确认包和POP3报文,本地再用ACK确认包响应。

LIST命令用于列出邮箱中的邮件信息,当本地输入命令LIST时,服务器直接用POP3报文进行响应,少了ACK确认包,本地收到POP3报文后再发送ACK确认包给服务器。当用LIST命令后带数字参数时,是用于列出邮箱中指定邮件序号的邮件信息。

RETR命令用于获取某封邮件的内容,当本地输入命令RETR后,服务器先发送一个ACK确认包,接着发送IMF报文,RFC 5322中这样写到:
“This document specifies the Internet Message Format (IMF), a syntax for text messages that are sent between computer users, within the framework of “electronic mail” messages.”

最后,QUIT命令表示要结束邮件接收过程。本地发送QUIT命令后,服务器先发送ACK确认包,然后发送POP3报文。最后本地发起TCP断开连接,经过四次挥手后结束整个过程。

Jinming

95后典型金牛座,强迫症。

相关推荐

暂无评论

小程序 小程序
小程序