第一层:应用层
这层直接和用户及其他的网络协议进行互动。
这一层的重点在于将数据通过用户可以理解的方式呈现给用户。
举例:
- HTTP:超文本传输协议
- FTP:文件传输协议
- SNMP:简单网络管理协议
- SMTP:简单邮件传输协议
- DNS:域名服务
我使用的数据包为wireshark官方提供的学习数据包DNS.cap
0x00 DNS 域名协议
1. 简介
DNS 会用站点的IP和站点的域名来创建一个包含各个站点的数据库。
DNS 会使用 TCP 和 UDP ,他们的作用各不相同,但是默认使用的都是53号端口。
术语:
DNS query:客户端发送的请求
DNS reponse:DNS服务器上包含了客户端想要访问的站点所对应
2. DNS数据包的内容
- Transaction ID:交易ID,将一个域名ID或者响应消息和对应的响应消息对应起来
- Query/response:每个DNS数据包都会被标记为查询消息或者响应消息
- Flag bits:标记位置位标识消息为查询
(1) Response:标识该消息为查询消息还是响应消息
(2) Opcode:查询消息的类型(范围0~)
Opcode值 描述
0 标准查询
1 逆向查询
2 服务器状态请求
3 未分配
4 通告
5 更新
6~15 未分配
(3) Truncated:数据包过大(>512B )是否截断
(4) Recursion desired:如果客户端查询的记录不存在
(5) Recursion available:这个比特位置位,表示客户端请求的递归是可用的。
(6) Reserved:RFC 1035中为了留给将来使用,这位必须是0
- Response code:这个字段的值决定了响应消息的类型。
code代码 描述
0 没有错误
1 格式错误
2 服务器故障
3 域名错误
4 未使用
5 拒绝
- Questions:数据包中包含的查询数量
- Answers:表示对查询消息所作响应的数量
- Authority RRs:响应消息中授权资源记录的数量
- Additional RRs:响应消息中额外资源记录的数量
- Query section:发送给 DNS 服务器的查询消息,这个字段在接收到的响应消息中也
应该是相同的取值。 - Answer section:对查询消息所作的响应
- Type:查询的类型
类 型 描述
A 主机记录
NS 域名服务器
MX 邮件交互
SOA 起始授权机构
PTR 指针记录
AAAA IPv6地址
AXFR 全量传输
IXFR 增量传输
-
Additional info:包含资源记录的额外信息
DNS.png
0x01 FTP 文件传输协议
1. 简介
FTP 使用 TCP 协议通过一条指定信道来发起并传输文件
FTP 一共会创建两条信道:
一条命令信道:21端口
一条专门的数据传输信道:20端口(随机)
数据包来源:FTPv6-1.cap
2. 解析 FTP 的通信方式
客户端会用2类模式来与服务器通信
- 主动模式
a. 利用 TCP 建立连接
b. TFP连接成功,提示标语
c. 输入帐号
d. 输入密码
。。。。。。
f. 利用TCP断开连接 - 被动模式
需要关闭被动模式,
命令: EPRT |1|172.16.136.1|57197
EPRT 网络协议、网络地址、端口号
只要客户端尝试连接,连接的目的地址就必须是 EPRT 命令设置的拿个地址。
而被动模式所有数据链路服务器都会想客户端通告要使用的临时端口。
3. 解析FTP的数据包
FTP.png0x02 HTTP 超文本传输协议
HTTP 是在浏览器和服务器之间传输数据时,最为常用同时应用最广泛的协议。
1. 工作方式--请求/响应
利用 TCP 进行连接
请求消息
- 第一行:
GET / HTTP/1.1
GET: 请求
/ :资源所在目录(根目录)
HTTP/1.1:协议 - 第二行:
Host: www.ethereal.com
主机地址 - 第三行:
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.6) Gecko/20040113
User-Agent: 客户访问Web页面时,所使用的一些与浏览器有关的信息。 - 第四行:
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,image/jpeg,image/gif;q=0.2,/;q=0.1
Accept: 请求方客户端会接受哪些类型的内容 - 第五行和第六行:
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Language 和 Accept-Encoding,其目的是为了向服务器通告客户端可以接受哪些类型的内容。 - 第七行:
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Accept-Charset:客户端支持的语言编码 - 第八行:
Keep-Alive: 300
Keep-Alive: 希望浏览器保持连接300秒 - 第九行:
Connection: keep-alive
Connection:会话保持连接 - 第十行:
Referer: http://www.ethereal.com/development.html
Referer:浏览器向 WEB 服务器表明自己是从哪个URL点击当前请求中的URL。
响应消息
- 第一行:
HTTP/1.1 200 OK
协议:HTTP/1.1
状态编码:200 OK - 第三行
Server: Apache
Server: web服务器的名称版本 - 第四行和第五行
Last-Modified: Tue, 20 Apr 2004 13:17:00 GMT
ETag: "9a01a-4696-7e354b00"
Last-Modified:WEB 服务器认为对象的最后修改时间,比如文件的最后修改时间,动态页面的最后产生时间等等。
ETag:一个 html 文件,如果被修改了,其 Etag 也会别修改,所以ETag 的作用跟 Last-Modified 的作用差不多。 - 第五行
Accept-Ranges: bytes
Accept-Ranges:WEB服务器表明自己是否接受获取其某个实体的一部分(比如文件的一部分)的请求。bytes:表示接受,none:表示不接受 - 第六行
Content-Length: 18070
Content-Length:WEB 服务器告诉浏览器自己响应的对象的长度 - 第八和九行
Keep-Alive: timeout=15, max=100
Connection: Keep-Alive
服务器希望保持连接。
Content-Type: text/html; charset=ISO-8859-1
2. 显示内容
HTTP.png0x03 SMTP 简单邮件传输协议
发送邮件的协议。(TCP,连接)
注:
大多数数据包是以C或S开头的。
C:从客户端发送的请求消息
S:服务器发送的响应消息,,
过程:
- 输入发送方和接收方的电子邮件地址
- DATA命令输入电子邮件的内容。
使用的数据包:
smtp.pcap
显示:
0x04 VoIP 电话通讯服务协议
就是将模拟信号(Voice)数字化,以数据封包在IP Network上做实时传递。
子协议
有两个重要的子协议
- SIP 信令协议,他可以在网络中创建、管理并终结VoIP会话。(5060端口)
- RTP 实时传输协议,将模拟信号数字化后传输。
常用工具
- Statistics 菜单:对数据的数量的统计
- Telephony 菜单 :对数据流的重放
协议过程
三方:两个客户端(客户端1和客户端2)和一个电话通讯服务器
- (客户端1->服务器)客户端1发送一条Invite(邀请)消息,使用SIP发起会话
- (服务器->客户端2)中间的服务器把请求传输给客户端2
- (服务器->客户端1)使用 100 TRYING 进行确认
- (服务器->客户端1)
如果客户端2开始响铃,发送给客户端 180RINGING 数据包
如果客户端2接收呼叫,发送给客户端 200 OK 数据包 - (客户端1->服务器)发送一个ACK表示自己确认收到
- RTP/RTCP建立信道通信
- 完成后,发送一个bye数据包
网友评论