POP3数据包捕获

来源:互联网 发布:ant 执行java命令 编辑:程序博客网 时间:2024/06/11 16:51

POP3,全名为“Post Office Protocol - Version 3”,即“邮局协议版本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数据包捕获

(一)Telnet连接pop3服务器并用pop3相关命令操作截图:
这里写图片描述

(二)过程分析
当本地输入命令”telnet pop.163.com 110”时,wiresharl抓包如下:
这里写图片描述

可以看到,先进行了TCP三次握手建立起连接。目的端口号是110。
TCP连接建立之后,邮箱服务器返回一个pop3报文,携带信息
“+OK Welcome to coremail Mail Pop3 Server (163coms[726cd87d72d896a1ac393507346040fas])”,然后本地返回一个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断开连接,经过四次挥手后结束整个过程。
这里写图片描述

0 0
原创粉丝点击