1、概念:Wireshark是网络包分析工具
2、作用:
1) 是在接口实时捕捉网络包,并详细显示包的详细协议信息。Wireshark可以捕捉多种网络接口类型的包,哪怕是无线局域网接口。
2) 可以打开多种网络分析软件捕捉的包,可以支持多种协议的解码。我们可以用它来检测网络安全隐患、解决网络问题,也可以用它来学习网络协议、测试协议的执行情况。
3、特点:
不会处理网络事务,它仅仅是“测量”(监视)网络。
不会发送网络包或其它交互性的事情。
4、安装:
[root@attack ~]# yum install wireshark-*
[root@attack ~]# wireshark
图1、wireshark启动后的界面
5、监听ARP协议并分析数据包
图1、选中“Filter”
图2、选中“Expression”
图3、选中“ARP”协议 | “确定”
图4、填写过滤规则名称 | “确定”
图5、选中图标
图6、选中“eth1”接口的“Start”
图7、捕获ARP数据包
注释:第一列 捕获数据的编号
第二列 捕获数据的时间,从开始捕获算为0.000秒
第三列 是源地址
第四列 是目的地址
第五列 是协议名称
第六列 是数据包信息
图8、停止监听
图9、Wireshark整体布局
注释:Wireshark 窗口布局从上到下
1) 菜单栏
2) 数据帧列表
3) 数据帧描述信息
4) 数据帧里的数据
图11、Frame(帧)相关信息
注释:
帧的编号:Frame Number 1269(捕获时的编号)
帧的大小:Frame Length 60字节
捕获的大小:Capture Length 60字节
帧被捕获的时间:Arrival Time :2013.4.2 9:43
帧装载的协议:ARP
图12、Ethernet相关信息
注释:
Destination 目的MAC地址:
Source 源MAC地址
Type:ARP 帧中封装的协议类型
Trailer 帧中填充的数据,为了保证帧最少有64个字节。
特别要注意的是:Destination MAC地址只有在局域网中才是真正目标主机的MAC地址。当目标主机和来源主机不再同一个网段的话,Destination MAC表示网关的MAC地址。
图14、地址解析协议
注释:
Hardware type: 硬件类型(以太网)
Protocol type: 协议类型 (IP)
Hardware size: 硬件大小(6)
Protocol size: 协议大小(4)
Sender MAC address: 发送方的MAC地址
Sender IP address :发送发的IP地址
Target MAC address:接收方的MAC地址
Target IP address : 接收方的IP地址
图15、数据帧成对出现
注释:由捕获数据帧的时间可知,ARP数据帧成对出现。
一个是 :repuest(请求)
另一个 :reply (应答)
需要注意的是:ARP所有的请求数据帧的目标MAC地址都是:00:00:00:00:00:00
6、监听并分析PING数据包
注意:PING使用的ICMP协议。
6.1 ICMP概述:
全称 Internet Control Message Protocol,中文名为因特网控制报文协议。工作在OSI的网络层,向暑假通讯中的源主机报告错误。
6.2 ICMP作用:
网络本身是不可靠的,在网络传输过程中,可能会发生许多突发事件并导致数据传输失败。网络层的IP协议时一个无连接的协议,它不会处理网络层传输中的估值,而位于网络层的ICMP协议却正好弥补了IP协议的缺陷,它使用IP协议进行信息传递,向数据包中的源端节点提供发生在网络层的错误信息反馈
6.3 ICMP的报头结构:
6.4 ICMP协议提供的报文类型(由类型和代码共同决定):
类型
|
代码
|
描述
|
查询
|
差错
|
0
|
0
|
回送应答(ping)应答
|
是
|
|
3
|
目的不可达:
|
|||
0
|
网络不可达
|
是
|
||
1
|
主机不可达
|
是
|
||
2
|
协议不可达
|
是
|
||
3
|
端口不可达
|
是
|
||
4
|
需要进行分片但设置了不分片位
|
是
|
||
5
|
源站选路失败
|
是
|
||
6
|
目的网络不认识
|
是
|
||
7
|
目的主机不认识
|
是
|
||
8
|
源主机被隔离(作废不用)
|
是
|
||
9
|
目的网络被强制禁止
|
是
|
||
10
|
目的主机被强行禁止
|
是
|
||
11
|
由于服务类型TOS,网络不可达
|
是
|
||
12
|
由于服务类型TOS,主机不可达
|
是
|
||
13
|
由于过滤,通信被强制禁止
|
是
|
||
14
|
主机越权
|
是
|
||
15
|
优先权中止生效
|
是
|
||
4
|
0
|
远端被关闭(基本流控制)
|
是
|
|
5
|
重定向
|
是
|
||
0
|
对网络重定向
|
是
|
||
1
|
对主机重定向
|
是
|
||
2
|
对服务类型和网络重定向
|
是
|
||
3
|
对服务类型和主机重定向
|
是
|
||
8
|
0
|
请求回送(Ping请求)
|
是
|
|
9
|
0
|
路由器通告
|
是
|
|
10
|
0
|
路由器请求
|
是
|
|
11
|
超时:
|
|||
0
|
传输期间TTL为0
|
是
|
||
1
|
在数据报组装期间TTL为0
|
是
|
||
12
|
参数问题:
|
|||
0
|
坏的IP报头(包括各种差错)
|
是
|
||
1
|
缺少必须的选项
|
是
|
||
13
|
0
|
时间戳请求
|
是
|
|
14
|
0
|
时间戳应答
|
是
|
|
15
|
0
|
信息请求(作废不用)
|
是
|
|
16
|
0
|
信息应答(作废不用)
|
是
|
|
17
|
0
|
地址屏蔽码请求
|
是
|
|
18
|
0
|
地址屏蔽码应答
|
是
|
6.5监听ping数据包并进行分析
图1、选中“Filter(过滤)”图标
图2、删除“arp”字符串 | 选中“Expression”
图3、选中“ICMP”协议 | “确定”
图4、命名过滤规则 | “确定”
图5、选中图标列出接口
图6、选中“eth1”接口的“Start”图标
图7、选中“Continue without Saving(不保持退出)”
注意:之前捕获的数据根据需要选择是否报存
图8、发送一个PING包
图9、捕获了一次PING的数据帧
有上图可知:ping操作一次产生一对数据帧。
图10、Frame(帧)状态
注释:
Arrival Time :捕获时间 2013.4.2 11:40:03
Frame Number:帧号 2458
Frame Length:帧长度 98字节
Capture length:捕获长度 98字节
Frame is marked:帧标记
Protocols in frame:帧装载协议 ICMP
图11、Ethernet状态信息
注释:
Destination:目标MAC地址
Source :来源MAC地址
协议类型:IP
图12、IP协议状态信息
注释:
Version :使用版本 IPv4
Header length :头部长度20字节
Flags :标记位
Time to live :TTL最大跳数 64
Protocol : 协议 ICMP
Header checksun:数据帧校验
Source :源地址(发起PING的主机)
Destination :目的地址(PING的目标主机)
图13、ICMP状态信息
Type : 类型 8 PING 请求
Code : 代码0
Checksun :校验 正常
Identifier :标示符
Sequence number :序号 1
图14、Data状态信息
图15、选中“reply”数据帧
注意:应答包和请求包大体相似,主要区别是源地址和目标地址互换了位置
7、TCP协议分析:
7.1 TCP概念
TCP,全称Transfer Control Protocol,中文名为传输控制协议,它工作在OSI的传输层,提供面向连接的可靠传输服务。
TCP是面向连接的通信协议,通过三次握手建立连接,通讯完成时要拆除连接,由于TCP是面向连接的所以只能用于点对点的通讯。
TCP提供的是一种可靠的数据流服务,采用“带重传的肯定确认”技术来实现传输的可靠性。TCP还采用一种称为“滑动窗口”的方式进行流量控制,所谓窗口实际表示接收能力,用以限制发送方的发送速度。
7.2 TCP报头的结构
7.3 TCP标志位
SYN(synchronous建立联机)
ACK(acknowledgement 确认)
PSH(push传送)
FIN(finish结束)
RST(reset重置)
URG(urgent紧急)
Sequence number(顺序号码)
Acknowledge number(确认号码)
7.3抓取TCP数据帧(以http协议为例)
图1、启动wireshark抓包工具
[root@attack ~]# wireshark
图2、选中“Filter(过滤)”
图3、选中“TCP or UDP port is 80(HTTP)”| “确定”
图4、选中第一个图标(列出可监听接口)
图5、选中“eth1”网卡的“Start”图标
注意:本示例中只有一块网卡,名称为eth1
图6、处于开始监听状态
图7、使用HTTP协议访问web网站
[root@attack ~]# elinks www.baidu.com
7.4分析TCP协议的三次握手(以http协议为例)
First :
第一次握手数据:(第一帧)
注释:
第一次握手的标志位:
我们可以看到标志位里面只有个同步位,也就是在做请求(SYN)
主机192.168.1.30:41886发送 标志位Syn=1 ,随机产生 Seq number =0 的数据包到服务器220.181.111.147:80(服务器由标志位Syn=1知道192.168.1.30要求与其建立联机)
第一次握手图示:
Second :
第二次握手数据:(第二帧)
注释:
第二次握手的标志位
我们可以看到标志位里面有个确认位和同步位,也就是在做应答(SYN + ACK)
远程web服务器220.181.111.147:80收到请求后确认联机信息,向主机192.168.1.30:41886发送ack number=1,标志位Ack=1,标志位Syn=1,随机产生Seq number=0的数据包。
第二次握手图示:
Third :
第三次握手数据(第三帧):
注释:
第三次握手的标志位
我们可以看到标志位里面只有个确认位,也就是再做再次确认(ACK)
主机192.168.1.30:41886收到后检查Ack number是否正确(Ack number = 第一次seq number(0)+1);再检查标志位Ack是否为1。 如果验证无误,主机192.168.1.30:41886会再发送Ack number = 第一次seq number(0)+1,标志位Ack=1 给远端web服务器。
远端web服务器220.181.111.147:80收到后确认第一次和第三次的Seq number的差值是否为1且标志位ack=1,则建立联机成功
第三次握手图示:
总结:三次握手就是 请求—-》应答——-》再次确认 的过程,完成三次握手,客户端与服务器开端传送数据