DNS、HTTP、SMTP协议分析
一、DNS协议
1. 概述
DNS协议用于域名和ip地址之间的转换。当一个应用程序需要把域名解析为ip地址时,就需要域名解析程序,将待解析的域名封装在DNS请求报文,以UDP形式发送给本地域名服务器,本地域名服务器在查找域名后将ip地址返回。
2. 域名解析过程
- 主机向本地域名服务器发送DNS请求报文,报文中携带需要查询的域名
- 本地域名服务器采用迭代查询,向根域名服务器进行查询
- 根域名服务器告诉本地域名服务器,下次需要查询的顶级域名服务器ip地址
- 本地域名服务器向顶级域名服务器进行查询
- 顶级域名服务器告诉本地,下次查询的权限域名服务器的ip地址
- 本地域名服务器向权限域名服务器进行查询
- 权限域名服务器告诉本地域名服务器对应的ip地址
- 本地域名服务器向主机回应DNS响应报文,其中包含对应的iip地址
- 递归查询:主机向本地域名服务器发送请求查询域名,只需要等待最终查询结果,属于递归查询
- 迭代查询:本地域名服务器向根域名服务器进行查询,根域名服务器告诉他下一步应该查询的地址,然后依次查询,每次都以客户机的形式向各个服务器进行查询
3. 实验组网
- 在server上配置域名服务器。域名服务器的ip地址为10.1.1.1/24
4. 报文分析
4.1 请求报文
4.2 应答报文
二、HTTP协议
1. 概述
- 概念:Hyper Text Transfer Protocol 超文本传输协议
- 传输协议:定义了客户端和服务器通信时发送数据的格式
- 特点:
- 基于TCP/IP的高级协议
- 默认端口号:80
- 基于请求/响应模型:一次请求对应一次响应
- 无状态:每次请求之间相互独立,不能交互数据
- 历史版本:
- 1.0:每次请求响应都会建立新的连接
- 1.1:复用连接
2. 特点
- 支持任意类型的数据对象
- 每次连接只处理一个请求,服务器处理完客户端的请求收到应答之后则断开连接
- 无状态,即对事务的处理没有记忆能力,后续需要处理前面的数据必须重传
3. 消息格式
- 请求方式
- GET:请求参数在url中,url长度有限制
- POST:请求参数在请求体,请求的url没有限制,相对安全
- 响应状态码
- 1xx:服务器收到客户端消息,但没有接受完成,等待一段时间,发送1xx状态码
- 2xx:成功。200
- 3xx:重定向。代表:302(重定向),304(访问缓存)
- 4xx:客户端错误
- 404:请求路径没有对应资源
- 405:请求方式没有对应的do xxx方法
- 5xx:服务端错误。代表:500(服务器内部出现异常)
4. 实验组网
实验组网如图1,其中在server中配置http服务器,并且连接client用于获取http服务器中的文件、
5. 报文分析
5.1 请求
- http协议封装在TCP中,则首先会进行TCP的三次握手
- http数据传输
5.2 响应
三、SMTP协议分析
1. 概述
简单邮件传输协议,工作在C/S模式下,用于实现邮件传输
2. 工作过程
- 用户通过用户代理进行邮件的发送,用户代理一般为PC上的一个程序
- 用户代理取到发信人的邮件后,生成符合邮件格式标椎的邮件
- 用户代理使用SMTP将邮件发送到发送端邮件服务器
- 发送端邮件服务器通过SMTP协议将邮件发送到接收端的邮件服务器
- 接收端通过pop3协议取回邮件
3. 实验过程
3.1 SMTP
本次实验通过telnet连接远程163邮件服务器,通过命令了解SMTP在发送邮件时的交互过程
- 在dos中输入telenet smtp.163.com 25
- 输入helo smtp
说明:在上面捕获的报文中可以看到客户端和服务器交互认证过程
-
下面进行邮件的发送:MAIL : < [email protected] >
-
RCPT TO: < [email protected] >
-
DATA //需要发送的数据
-
QUIT //断开连接
-
在图13中可以看到在发送邮件时客户端和服务器的交互过程
3.2 POP3
-
POP3协议用于服务端到客户端的邮件传输
-
本次实验通过telnet协议登陆pop3服务器
注意:命令:telnet pop.163.com 110
user:邮箱用户名
pass:密码
list 查看邮件列表
retr 邮件编号(用于查看邮件)
dele 邮件编号(删除邮件)
注意:数据包中得到每次向pop发送命令时只发送一个字符
- 在使用retr命令查看邮件时,pop协议会帮助用户从服务器上取到邮件