tcpdump 和 wireshark 抓包工具 ,介绍、安装、命令使用。 详解三次握手、四次挥手。两个结合使用,会更好分析报文

tcpdump 和 wireshark 抓包工具 ,介绍、安装、命令使用。 详解三次握手、四次挥手。两个结合使用,会更好分析报文

前言

一般的前后端联调是用不到抓包的,可以通过postman、chrome的开发者工具进行调试,查看请求和相应。

当做数据对接,或者再做几个服务连接的时候,中间会有restful或者thirft请求,这个时候之只能通过抓包来看请求和相应了。

抓包 其实就是:将网络传输发送与接收的数据包进行截获、重发、编辑、转存等操作,也用来检查网络安全。抓包也经常被用来进行数据截取等。

这里的包就是数据包,也就是TCP/IP协议通信传输中的数据单位,一般也称“数据包”

补充:TCP/IP协议是工作在OSI模型第三层(网络层)、第四层(传输层)上的,帧工作在第二层(数据链路层)。上一层的内容由下一层的内容来传输,所以在局域网中,“包”是包含在“帧”里的。

一、tcpdump 工具

1、tcpdump 工具

Tcpdump提供了一整套完善的规则来对截获的数据包进 行过滤,由于大多数图像化的嗅探器都使用类似的过滤机制,因此对Linux网络管理员来说,了解如何使用Tcpdump来捕获感兴趣的数据包是一项必须掌控的基本功。

2、下载

可到 官网: http://www.tcpdump.org 下载最新的Tcpdump源码包。

注意:

因tcpdump的运行需要pcap的支持,所以最好先行安装pcap软件包,另外还要注意软件的版本问题,建议按照网站上匹配的软件包tcpdump和pcap一同下载。前期在测试时我使用的yum 安装的pcap包(版本1.9.1),然后在网上下载了tcpdump(版本为4.9.3)。此处使用的操作系统是 CentOS release 5.5 (Final)

3、编译安装

在编译Tcpdump之前,应先确定pcap库(libpcap)已安装完毕。这个库是编译Tcpdump时所必需的。安装过程非常简单如下示:

tar -zxvf libpcap-1.9.1.tar.gz

cd libpcap-1.3.0

./configure

make

make install

该库已安装完毕,下面执行下面的命令来编译并安装Tcpdump:

tar -zxvf tcpdump-4.9.3.tar.gz

cd tcpdump-4.3.0

./configure

make

make install

二、抓包命令选项

Tcpdump是个命令行方式的 网络嗅探器。他通过使用命令选项来过滤网卡截获的数据包,假如不进行过滤,过多数量的包会使网络管理员很难理清头绪。Tcpdump的命令格式如下:

这个就可以直接使用:

tcpdump -s 0 -i any host ip -w 路径 -v

tcpdump常用参数

-n 显示IP地址和端口号-v 显示更多信息,ttl,长度,其他选项等,tcpdump的详细信息有3个级别,因此-vvv显示最多信息-D 列出可以抓包的网络接口-i + 网络接口抓包-c + 数字 一次抓取多少数据包后停止抓取-w + 文件名 抓包结果保存到文件-r + 文件名 读取抓包文件-s + 数字 抓包的大小如:tcpdump -nvvv -i any -c 100

tcpdump的过滤器参数

协议名,如icmp,过滤出icmp的制定报文host + ip 特定主机,抓取目标地址和源地址为特定ip的数据包port + 数字 特定端口抓包src + [host] ip 源地址dst + [host] ip 目标地址多条件选择使用and,or和小括号,在shell中需要用引号包含多个条件的过滤规则如, tcpdump -nvvv -i any -c 20 ‘port 80 or port 443’-X 以十六进制打印出数据报文-A 打印数据报文的ASCII值

抓包之后,需要对报文进行分析。如果用wireshark 进行分析的话,就特别清晰明了

三、wireshark工具

wireshark 也可以进行抓包,这是一个window上面的一个应用。一般是再本地进行抓包。然后对报文进行可视化分析。

而我一般则是在Linux上使用 tcpdump 进行抓报文,抓取报文之后,再使用 wireshark 进行分析报文。这样可以准确看到再TCP/IP协议中的 请求 和 响应 情况。

1. 概念介绍

提取特征时,要对session(会话)进行过滤,找到关键的stream,这里总结了wireshark过滤的基本语法,供自己以后参考。(脑子记不住东西)

wireshark进行过滤时,按照过滤的语法可分为协议过滤和内容过滤。

对标准协议,既支持粗粒度的过滤如HTTP,也支持细粒度的、依据协议属性值进行的过滤如tcp.port= =53、http.request.method==“GET”。

对内容的过滤,既支持深度的字符串匹配过滤如http contains “Server”,也支持特定偏移处值的匹配过滤如tcp[20:3] == 47:45:54。

2. 两种过滤

捕捉过滤器(CaptureFilters):用于决定将什么样的信息记录在捕捉结果中。显示过滤器(DisplayFilters):用于在捕捉结果中进行详细查找。

捕捉过滤器在抓抱前进行设置,决定抓取怎样的数据;显示过滤器用于过滤抓包数据,方便stream的追踪和排查。

捕捉过滤器仅支持协议过滤,显示过滤器既支持协议过滤也支持内容过滤。

两种过滤器它们支持的过滤语法并不一样。

四、下载、安装使用

下载官网:https://www.wireshark.org/download.html

六、三次握手、四次挥手详解

解读 报文时 ,看着 一行行的代码有点懵逼。 仔细看了一下,大体还是能了解的,比如No、Time、Source、Destination、Protocol、Length 字段 还是可以明白的,但是 Info 信息,就直接懵逼了,看不懂,百度了一下,是数据 TCP 协议的 三次握手、四次挥手的知识,那这里需要学习一下了。

1. flags字段(记住)

首先,在TCP层,有个FLAGS字段,这个字段有以下几个标识:SYN, FIN, ACK, PSH, RST, URG.

其中,对于我们日常的分析有用的就是前面的五个字段。这里一定要记住:

SYN表示建立连接,

FIN表示关闭连接,

ACK表示响应,

PSH表示有 DATA数据传输,

RST表示连接重置。

分析:

其中,ACK是可能与SYN,FIN等同时使用的,比如SYN和ACK可能同时为1,它表示的就是建立连接之后的响应,

如果只是单个的一个SYN,它表示的只是建立连接。

TCP的几次握手就是通过这样的ACK表现出来的。

但SYN与FIN是不会同时为1的,因为前者表示的是建立连接,而后者表示的是断开连接。

RST一般是在FIN之后才会出现为1的情况,表示的是连接重置。

一般地,当出现FIN包或RST包时,我们便认为客户端与服务器端断开了连接;而当出现SYN和SYN+ACK包时,我们认为客户端与服务器建立了一个连接。

PSH为1的情况,一般只出现在 DATA内容不为0的包中,也就是说PSH为1表示的是有真正的TCP数据包内容被传递。

TCP的连接建立和连接关闭,都是通过请求-响应的模式完成的。

2. 三次握手

TCP(Transmission Control Protocol)传输控制协议,TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接:

位码 即 tcp标志位,有6种标示:SYN(synchronous建立联机)ACK(acknowledgement 确认)PSH(push传送)FIN(finish结束)RST(reset重置)URG(urgent紧急)Sequence number(顺序号码)Acknowledge number(确认号码)

TCP连接三次握手 示意图:图文分析:

第一步:客户端主动打开,发送连接请求报文段,将SYN标识位置为1,Sequence Number置为x(TCP规定SYN=1时不能携带数据,x为随机产生的一个值),然后进入SYN_SEND状态;服务器 由SYN=1知道,A要求建立联机

第二步:服务器收到SYN报文段进行确认,将SYN标识位置为1,ACK置为1,Sequence Number置为y,Acknowledgment Number置为x+1,然后进入SYN_RECV状态,这个状态被称为半连接状态

第三步:客户端再进行一次确认,将ACK置为1(此时不用SYN),Sequence Number置为x+1,Acknowledgment Number置为y+1发向服务器,最后客户端与服务器都进入ESTABLISHED状态。主机B收到后确认 seq=x+1 与ACK=1则连接建立成功。

完成三次握手,主机A与主机B开始传送数据。

3. 四次挥手

TCP三次握手是TCP连接建立的过程,TCP四次挥手则是TCP连接释放的过程。

TCP四次挥手的流程图:当客户端没有数据再需要发送给服务端时,就需要释放客户端的连接,这整个过程为:

第一步:客户端发送一个报文给服务端(没有数据),其中FIN设置为1,Sequence Number置为u,客户端进入FIN_WAIT_1状态

第二步:服务端收到来自客户端的请求,发送一个ACK给客户端,Acknowledge置为u+1,同时发送Sequence Number为v,服务端年进入CLOSE_WAIT状态

第三步:服务端发送一个FIN给客户端,ACK置为1,Sequence置为w,Acknowledge置为u+1,用来关闭服务端到客户端的数据传送,服务端进入LAST_ACK状态

第四步:客户端收到FIN后,进入TIME_WAIT状态,接着发送一个ACK给服务端,Acknowledge置为w+1,Sequence Number置为u+1,最后客户端和服务端都进入CLOSED状态

五、wireshark 详解分析 pcap报文文件

从第四章学习了 三次握手和四次挥手,主要学习这两个阶段的流程和其中的字段。接下来就分析用wireshark打开的报文协议。先打开 编辑->查找分组,就会出现一个过滤器:

第一处红框:就是 过滤协议 的地方,

第二处红框:就是准确过滤的地方。

第三处红框:就是报文协议的详细信息,从字段名称就可以知道其意思,最应该关注的是 最右边的 info 信息

我按IP地址过滤后ip.address=

🎈 相关推荐

第二百三十七章 根正苗红的秘党子弟
beat365网站假的吗

第二百三十七章 根正苗红的秘党子弟

📅 07-11 👀 8987
辛亥革命的失败说明了什么 失败原因是什么
beat365网站假的吗

辛亥革命的失败说明了什么 失败原因是什么

📅 07-17 👀 8609
乐事薯片多少钱一包(乐事薯片的成本)
365体育亚洲官方登录

乐事薯片多少钱一包(乐事薯片的成本)

📅 07-22 👀 9877