TCP抓包实战分析
wireshark简介
界面介绍
Frame: 物理层的数据帧概况
Ethernet II: 数据链路层以太网帧头部信息
Internet Protocol Version 4: 互联网层IP包头部信息
Transmission Control Protocol: 传输层T的数据段头部信息,此处是TCP,一般我们查看到就是这
Hypertext Transfer Protocol: 应用层的信息,此处是HTTP协议
过滤包
要想从海量数据包中获取有用数据,一定要会过滤数据包。
抓包过滤器语法:抓包过滤器类型Type(host、net、port)、方向Dir(src、dst)、协议Proto(ether、ip、tcp、udp、http、icmp、ftp等)、逻辑运算符(&& 与、|| 或、!非)
IP过滤
ip.src ==192.168.1.104: 过滤出源地址为192.168.1.104的数据包列表ip.dst==192.168.1.104:过滤出目标地址为192.168.1.104的数据包列表ip.addr == 192.168.1.104:过滤出源IP地址或目标IP地址为192.168.1.104的数据包列表ip.addr == 10.160.246.9 and ip.addr == 10.160.255.246:过滤出A和B通信的数据包ip host 60.207.246.216 and icmp:过滤出主机IP为60.207.246.216的ICMP数据包
协议端口过滤
tcp.port ==80:过滤出源主机或者目的主机端口为80的数据包列表。tcp.srcport == 80:过滤出TCP协议的源主机端口为80的数据包列表。tcp.dstport == 80:过滤出TCP协议的目的主机端口为80的数据包列表。tcp.flags.syn == 1:过滤出SYN 标志位为 1 的包。
HTTP过滤
http.request.method=="GET":过滤出HTTP GET方法的。
专家分析
菜单栏-分析-专家分析
三次握手抓包实例
TCP Flags:状态控制码(Code,Control Flag),占 6 比特,含义如下:
| 标志位 | 含义 |
|---|---|
URG:紧急比特(urgent) | 当 URG=1 时,代表该封包为紧急封包。它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据), Urgent Pointer(紧急指针) 字段也会被启用 |
ACK:确认比特(Acknowledge) | 当 ACK=1 时,代表这个封包为确认封包 |
PSH:(Push function) | 当 PSH=1时,代表立即传送缓冲区内的其他对应封包,而无需等缓冲满了才送 |
RST:复位比特(Reset) | 当 RST=1 时,表明 TCP 连接中出现严重差错(如由于主机崩溃或其他原因),必须释放连接,然后再重新建立连接 |
SYN:同步比特(Synchronous) | 当SYN=1 时,就表示这是一个新连接请求或连接接受报文 |
FIN:终止比特(Final) | 当 FIN=1 时,表明此报文段的发送端的数据已发送完毕,并要求释放连接 |
Ack 确认号(Acknowledgment Number)指的是自己期望接收的下一个字节的序号,也表示已经收到包的数量
客户端发送的seq是客户端的序列号,ack是服务端的序列号;服务端发送的seq是服务端的序列号,ack是客户端的序列号
即:seq是自己的序列号,ack是确认对方的序列号
注意图中有个错误,抓包来看传输数据的时候(PSH、ACK)seq和ack都没有+1