今日得闲,于是将POP3的学习笔记也整理出来!
互联网上的TCP/IP,POP3/SMTP等资料多如牛毛,这里只是自己一点点心得,另外对于各位网络方面的大牛请安静的路过,我可不喜欢在关公面前耍大刀...
(还是那句,我比较喜欢用实践来证明一切,这样才会加深自己的理解!)
一、准备工作:
1、本机环境:Windows XP SP3、公司ADSL 10M光纤
2、开发工具:WildPackets OmniPeek V5.1.4
Visual C++ 6.0
Outlook Express6.0
FlexEdit V2.3.1871
二、SMTP命令:
1、USER username
2、PASS password
3、STAT 请求服务器发回关于邮箱的统计资料,如邮件总数和总字节数
4、LIST 返回邮件数量和每个邮件的大小
5、RETR [Msg#] 返回由参数标识的邮件的全部文本
6、DELE [Msg#] 服务器将由参数标识的邮件标记为删除,由quit命令执行
7、RSET 服务器将重置所有标记为删除的邮件,用于撤消DELE命令
8、NOOP 服务器返回一个肯定的响应
9、QUIT 更新
三、分析数据包:
1、打开Outlook Express6.0,选择POP协议,内容如下:
2、开始捕获后点击“接收邮件”,内容如下:
3、前面的数据包信息、以太网信息、IP头、TCP头就不用介绍了吧!
数据包中包含到的命令都打圈标记了,下面是LIST返回的数据包:
4、下面是UIDL返回的数据包,邮件唯一的标示:
5、其他小技巧
<CR> <LF>即对应C/C++中的"/r /n"
四、相关代码:
1、以下代码通过socket与POP3服务器建立连接并读取邮件列表、原文等。
打开Visual C++,新建一个控制台工程、并添加一个CPP文件:
2、程序运行效果: