抓取网络包与分析网络报文的相关记录

1. 前言

写这篇文章主要目的是为了结合日志辅助分析网络状况,算是比较基础,这也方便初学者学习理解。

2. tcpdump解析

先来看一下它的简介:tcpdump 是一个运行在命令行下的抓包工具。它允许用户拦截和显示发送或收到过网络连接到该计算机的TCP/IP和其他数据包。tcpdump 适用于大多数的类Unix系统操作系统(如linux,BSD等)。

常见命令如下:

tcpdump -n -s 0 -w /data/tcp.cap

tcpdump的可选参数介绍:

-a:将网络地址和广播地址转变成名字;

-d:将匹配信息包的代码以人们能够理解的汇编格式给出;

-dd :将匹配信息包的代码以c语言程序段的格式给出;

-ddd:将匹配信息包的代码以十进制的形式给出;

-e:在输出行打印出数据链路层的头部信息,包括源mac和目的mac,以及网络层的协议;

-f :将外部的Internet地址以数字的形式打印出来;

-l :使标准输出变为缓冲行形式;

-n:指定将每个监听到数据包中的域名转换成IP地址后显示,不把网络地址转换成名字;

-nn:指定将每个监听到的数据包中的域名转换成IP、端口从应用名称转换成端口号后显示

-t :在输出的每一行不打印时间戳;

-v :输出一个稍微详细的信息,例如在ip包中可以包括ttl和服务类型的信息;

-vv :输出详细的报文信息;

-c :在收到指定的包的数目后,tcpdump就会停止;

-F:从指定的文件中读取表达式,忽略其它的表达式;

-i :指定监听的网络接口;

-p:将网卡设置为非混杂模式,不能与host或broadcast一起使用

-r:从指定的文件中读取包(这些包一般通过-w选项产生);

-w:直接将包写入文件中,并不分析和打印出来;

-s snaplen :snaplen表示从一个包中截取的字节数。0表示包不截断,抓完整的数据包。默认的话 tcpdump 只显示部分数据包,默认68字节。

-T :将监听到的包直接解释为指定的类型的报文,常见的类型有rpc (远程过程调用)和snmp(简单网络管理协议;)

-X:告诉tcpdump命令,需要把协议头和包内容都原原本本的显示出来(tcpdump会以16进制和ASCII的形式显示),这在进行协议分析时是绝对的利器。

3. Wireshark使用

我这边选择wiresharp来分析抓取的网络数据包,这里对初学者来说,只要理解下面几个小节内容即可,其他使用方式不在这篇文章的讨论范畴之内.

3.1 工具简介

Wireshark(前称Ethereal)是一个网络数据包分析软件。网络数据包分析软件的功能是截取网络数据包,并尽可能显示出最为详细的网络数据包数据。Wireshark使用WinPCAP作为接口,直接与网卡进行数据报文交换。

网络管理员使用Wireshark来检测网络问题,网络安全工程师使用Wireshark来检查资讯安全相关问题,开发者使用Wireshark来为新的通讯协定除错,普通使用者使用Wireshark来学习网络协定的相关知识。当然,有的人也会“居心叵测”的用它来寻找一些敏感信息……。

Wireshark相对于tcpdump而言,界面更友好,功能更强大。

3.2 界面理解

很多初学者还会碰到一个难题,就是感觉wireshark界面上很多东西不懂怎么看,如下图所示并做了简单说明:
在这里插入图片描述

说明:

常用按钮从左到右的功能依次是:

1、列出可用接口。

2、抓包时需要设置的一些选项。一般会保留最后一次的设置结果。

3、开始新的一次抓包。

4、暂停抓包。

5、继续进行本次抓包。

6、打开抓包文件。可以打开之前抓包保存后的文件。不仅可以打开wireshark软件保存的文件,也可以打开tcpdump使用-w参数保存的文件。

7、保存文件。把本次抓包或者分析的结果进行保存。

8、关闭打开的文件。文件被关闭后,就会切换到初始界面。

9、重载抓包文件。

3.3 过滤规则

如果不设置过滤器,会抓取很多杂乱冗余的数据,以至于很难找到自己需要的部分,使用过滤器可以帮助我们精准找到需要的信息。以下介绍几种实用的过滤器:

1.协议过滤器:

arp:显示所有包括ARP请求和回复在内的所有ARP数据流。

ip:显示内含IPv4头在内的(如ICMP目的地址不可达报文,在ICMP报文头之后返回到来方向的IPv4头)IP数据流。

ipv6:显示所有IPv6数据流,包括内含IPv6报文头的IPv4报文,如6to4,Teredo,以及ISATAP数据流。

tcp:显示所有基于TCP的数据流。

2.应用过滤器:

bootp:显示所有DHCP数据流(基于BOOTP)。

dns:显示包括TCP区域传输以及基于标准UDP的DNS请求和回复在内的所有DNS数据流。

tftp:显示所有TFTP(Trivial File Transfer Protocol)数据流。

http:显示所有HTTP命令,回复以及数据传输报文,但不显示TCP握手报文,TCP ACK报文以及TCP结束报文。

icmp:显示所有ICMP报文。

3.域过滤器:

boot.option.hostname:显示所有包含主机名的DHCP数据流(DHCP基于BOOTP)。

http:host:显示所有包含HTTP主机名字段的所有HTTP报文。此报文是客户端向网络服务器发送请求时发出的。

ftp.request.command:显示所有包含命令的FTP数据流,比如USER,PASS,或RETR命令。

4.字符过滤器:

tcp.analysis.flags:显示所有包含TCP分析标识的所有报文,包括报文丢失,重传,或零窗口标识。

tcp.analysis,zero_window:显示含有表明发送方的接收缓存用完标识的报文。

5.显示过滤器比较运算符:

通过扩展过滤条件可查找某一域值,Wireshark针对此功能支持数字比较运算符。

4. OSI七层模型

借用网上的一张图,以辅助理解:
在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值