我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Linux中如何使用tcpdump命令

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Linux中如何使用tcpdump命令

这篇文章的内容主要围绕Linux中如何使用tcpdump命令进行讲述,文章内容清晰易懂,条理清晰,非常适合新手学习,值得大家去阅读。感兴趣的朋友可以跟随小编一起阅读吧。希望大家通过这篇文章有所收获!

tcpdump简介:

  • tcpdump是一个用于截取网络分组,并输出分组内容的工具。

  • 凭借强大的功能和灵活的截取策略,使其成为类UNIX系统下用于网络分析和问题排查的首选工具

  • tcpdump 支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息。

1、在 Linux 中安装 tcpdump

用下面的命令检查一下是否已经安装了 tcpdump:

 which tcpdump

Linux中如何使用tcpdump命令

如果还没有安装 tcpdump,用如下命令安装 tcpdump:

 sudo yum install -y tcpdump

tcpdump 依赖于 libpcap,该库文件用于捕获网络数据包。如果该库文件也没有安装,系统会根据依赖关系自动安装它。

2、用 tcpdump 抓包

使用 tcpdump 抓包,需要管理员权限,因此下面的示例中绝大多数命令都是以 sudo 开头

首先,先用 tcpdump -D 命令列出可以抓包的网络接口:

 sudo tcpdump -D

Linux中如何使用tcpdump命令

如上所示,可以看到我的机器中所有可以抓包的网络接口。其中特殊接口 any 可用于抓取所有活动的网络接口的数据包

我们就用如下命令先对 any 接口进行抓包:

 sudo tcpdump -i any

Linux中如何使用tcpdump命令

tcpdump 会持续抓包直到收到中断信号。你可以按 Ctrl+C 来停止抓包。正如上面示例所示,tcpdump 抓取了超过 10000 个数据包。在这个示例中,由于我是通过 ssh 连接到服务器,所以 tcpdump 也捕获了所有这类数据包。

-c 选项可以用于限制 tcpdump 抓包的数量:

 sudo tcpdump -i any -c 3

Linux中如何使用tcpdump命令

如上所示,tcpdump 在抓取 3 个数据包后自动停止了抓包。这在有些场景中十分有用 —— 比如你只需要抓取少量的数据包用于分析。当我们需要使用过滤规则抓取特定的数据包(如下所示)时,-c 的作用就十分突出了。

在上面示例中,tcpdump 默认是将 IP 地址和端口号解析为对应的接口名以及服务协议名称。而通常在网络故障排查中,使用 IP 地址和端口号更便于分析问题;用 -n 选项显示 IP 地址,-nn 选项显示端口号:

 sudo tcpdump -i any -c 3 -nn

Linux中如何使用tcpdump命令

如上所示,抓取的数据包中显示 IP 地址和端口号。这样还可以阻止 tcpdump 发出 DNS 查找,有助于在网络故障排查中减少数据流量。

现在你已经会抓包了,让我们来分析一下这些抓包输出的含义吧。

3、理解抓取的报文

tcpdump 能够抓取并解码多种协议类型的数据报文,如 TCP、UDP、ICMP 等等。虽然这里我们不可能介绍所有的数据报文类型,但可以分析下 TCP 类型的数据报文,来帮助你入门。更多有关 tcpdump 的详细介绍可以参考其 帮助手册。tcpdump 抓取的 TCP 报文看起来如下:

 12:43:24.047063 IP 202.106.2.140.22 > 202.106.2.116.52980: Flags [P.], seq 4020757562:4020757774, ack 1254862904, win 274, length 212

1列:12:43:24.047063 是该数据报文被抓取的系统本地时间戳。

2列:IP 是网络层协议类型,这里是 IPv4,如果是 IPv6 协议,该字段值是 IP6。

3列:202.106.2.140 是源 IP 地址和端口号 22

4列:202.106.2.116 是目的 IP 地址和端口号 52980

5列: TCP 报文标记段 Flags [P.]。该字段也可以是这些值的组合,例如 [S.] 代表 SYN-ACK 数据包。该字段通常取值如下:

标志类型描述
SSYNConnection Start
FFINConnection Finish
PPUSHData push
RRSTConnection reset
.ACKAcknowledgment

6列:接下来是该数据包中数据的序列号。对于抓取的第一个数据包,该字段值是一个绝对数字,后续包使用相对数值,以便更容易查询跟踪。例如此处 seq 4020757562:4020757774代表该数据包包含该数据流的第 XX 到 XXX 字节。

7列:接下来是 ack 值:ack 1254862904。该数据包是数据发送方,ack 值为 XXX。在数据接收方,该字段代表数据流上的下一个预期字节数据。

8列:接下来字段是接收窗口大小 win 274,它表示接收缓冲区中可用的字节数,后跟 TCP 选项如 MSS(最大段大小)或者窗口比例值。更详尽的 TCP 协议内容请参考 Transmission Control Protocol(TCP) Parameters。

9列:length 212代表数据包有效载荷字节长度。这个长度和 seq 序列号中字节数值长度是不一样的。

现在让我们学习如何过滤数据报文以便更容易的分析定位问题。

4、过滤数据包

正如上面所提,tcpdump 可以抓取很多种类型的数据报文,其中很多可能和我们需要查找的问题并没有关系。举个例子,假设你正在定位一个与 web 服务器连接的网络问题,就不必关心 SSH 数据报文,因此在抓包结果中过滤掉 SSH 报文可能更便于你分析问题。

tcpdump 有很多参数选项可以设置数据包过滤规则,例如根据源 IP 以及目的 IP 地址,端口号,协议等等规则来过滤数据包。下面就介绍一些最常用的过滤方法。

  • 协议

在命令中指定协议便可以按照协议类型来筛选数据包。比方说用如下命令只要抓取 ICMP 报文:

 sudo tcpdump -i ens192 icmp -c 5

然后再打开一个终端,去 ping 另一台机器或者用本机ping连接的这个服务器。

回到运行 tcpdump 命令的终端中,可以看到它筛选出了 ICMP 报文。这里 tcpdump 并没有显示有关 opensource.com 的域名解析数据包:

Linux中如何使用tcpdump命令

  • 主机

用 host 参数只抓取和特定主机相关的数据包,只抓取和显示与 202.106.2.116 有关的数据包。

 sudo tcpdump -i ens192  -c 5 -nn host 202.106.2.116
  • 端口号

tcpdump 可以根据服务类型或者端口号来筛选数据包。例如,抓取和 HTTP 服务相关的数据包:

 sudo tcpdump -i ens192  -c 5 -nn port 80

Linux中如何使用tcpdump命令

  • IP 地址/主机名

同样,你也可以根据源 IP 地址或者目的 IP 地址或者主机名来筛选数据包。例如抓取源 IP 地址为 202.106.2.116 的数据包:

 sudo tcpdump -i ens192  -c 5 -nn class="lazy" data-src 202.106.2.116

注意此处示例中抓取了来自源 IP 地址 192.168.122.98 的 53 端口以及 80 端口的数据包,它们的应答包没有显示出来因为那些包的源 IP 地址已经变了。

相对的,使用 dst 就是按目的 IP/主机名来筛选数据包。

 sudo tcpdump -i ens192  -c 5 -nn dst 202.106.2.116

Linux中如何使用tcpdump命令

  • 多条件筛选

当然,可以使用多条件组合来筛选数据包,使用 and 以及 or 逻辑操作符来创建过滤规则。例如,筛选来自源 IP 地址 XXX 的 HTTP 数据包:

 sudo tcpdump -i ens192  -c 5 -nn dst 202.106.2.116 and port 80  sudo tcpdump -i ens192  -c 5 -nn dst 202.106.2.116 or port 80

Linux中如何使用tcpdump命令

你也可以使用括号来创建更为复杂的过滤规则,但在 shell 中请用引号包含你的过滤规则以防止被识别为 shell 表达式:

 sudo tcpdump -i ens192  -c 5 -nn 'port 80 and (dst 202.106.2.116 or class="lazy" data-src 202.106.2.140)'
 sudo tcpdump -i ens192  -c 5 -nn 'port not 80 and (dst 202.106.2.116 or class="lazy" data-src 202.106.2.140)'

Linux中如何使用tcpdump命令

小结:

第一种是关于类型的关键字,主要包括host,net,port, 例如 host 210.27.48.2,指明 210.27.48.2是一台主机,net 202.0.0.0 指明 202.0.0.0是一个网络地址,port 23 指明端口号是23。如果没有指定类型,缺省的类型是host.

第二种是确定传输方向的关键字,主要包括class="lazy" data-src , dst ,dst or class="lazy" data-src, dst and class="lazy" data-src ,这些关键字指明了传输的方向。举例说明,class="lazy" data-src 210.27.48.2 ,指明ip包中源地址是210.27.48.2 , dst net 202.0.0.0 指明目的网络地址是202.0.0.0 。如果没有指明方向关键字,则缺省是class="lazy" data-src or dst关键字。

第三种是协议的关键字,主要包括fddi,ip,arp,rarp,tcp,udp等类型。Fddi指明是在FDDI(分布式光纤数据接口网??上的特定的网络协议,实际上它是”ether” 的别名,fddi和ether具有类似的源地址和目的地址,所以可以将fddi协议包当作ether的包进行处理和分析。其他的几个关键字就是指明了监听的包的协议内容。如果没有指定任何协议,则tcpdump将会监听所有协议的信息包。

除了这三种类型的关键字之外,其他重要的关键字如下:gateway, broadcast,less,greater,还有三种逻辑运算,取非运算是 ‘not ‘ ‘! ‘, 与运算是’and’,’&&’;或运算 是’or’ ,’││’;这些关键字可以组合起来构成强大的组合条件来满足人们的需要,下面举几个例子来说明。

5、检查数据包内容

在以上的示例中,我们只按数据包头部的信息来建立规则筛选数据包,例如源地址、目的地址、端口号等等。有时我们需要分析网络连接问题,可能需要分析数据包中的内容来判断什么内容需要被发送、什么内容需要被接收等。tcpdump 提供了两个选项可以查看数据包内容,-X 以十六进制打印出数据报文内容,-A 打印数据报文的 ASCII 值。

例如,HTTP 请求报文内容如下:

 sudo tcpdump -i ens192  -c 5 -nn 'port not 80 and (dst 202.106.2.116 or class="lazy" data-src 202.106.2.140)' -A sudo tcpdump -i ens192  -c 5 -nn 'port not 80 and (dst 202.106.2.116 or class="lazy" data-src 202.106.2.140)' -X

Linux中如何使用tcpdump命令

这对定位一些普通 HTTP 调用 API 接口的问题很有用。当然如果是加密报文,这个输出也就没多大用了。

6、保存抓包数据

tcpdump 提供了保存抓包数据的功能以便后续分析数据包。例如,你可以夜里让它在那里抓包,然后早上起来再去分析它。同样当有很多数据包时,显示过快也不利于分析,将数据包保存下来,更有利于分析问题。

使用 -w 选项来保存数据包而不是在屏幕上显示出抓取的数据包:

 sudo tcpdump -i ens192  -c 5 -nn port 80  -w /tmp/test.pcap

Linux中如何使用tcpdump命令

该命令将抓取的数据包保存到文件 、test.pcap。后缀名 pcap 表示文件是抓取的数据包格式。

正如示例中所示,保存数据包到文件中时屏幕上就没有任何有关数据报文的输出,其中 -c 5 表示抓取到 5 个数据包后就停止抓包。如果想有一些反馈来提示确实抓取到了数据包,可以使用 -v 选项。

查看pcap文件内容

tcpdump 将数据包保存在二进制文件中,所以不能简单的用文本编辑器去打开它。使用 -r 选项参数来阅读该文件中的报文内容:

 tcpdump -nn -r /tmp/test.pcap

Linux中如何使用tcpdump命令

这里不需要管理员权限 sudo 了,因为此刻并不是在网络接口处抓包。

你还可以使用我们讨论过的任何过滤规则来过滤文件中的内容,就像使用实时数据一样。 例如,通过执行以下命令从源 IP 地址 54.204.39.132 检查文件中的数据包:

 tcpdump -nn -r /tmp/test.pcap  class="lazy" data-src port 80

Linux中如何使用tcpdump命令

7.补充 TCP的几个状态 (SYN, FIN, ACK, PSH, RST, URG)

Linux中如何使用tcpdump命令

 1、在 Linux 中安装 tcpdump 用下面的命令检查一下是否已经安装了 tcpdump:  which tcpdump   如果还没有安装 tcpdump,用如下命令安装 tcpdump:  sudo yum install -y tcpdump tcpdump 依赖于 libpcap,该库文件用于捕获网络数据包。如果该库文件也没有安装,系统会根据依赖关系自动安装它。  2、用 tcpdump 抓包 使用 tcpdump 抓包,需要管理员权限,因此下面的示例中绝大多数命令都是以 sudo 开头。  首先,先用 tcpdump -D 命令列出可以抓包的网络接口:  sudo tcpdump -D   如上所示,可以看到我的机器中所有可以抓包的网络接口。其中特殊接口 any 可用于抓取所有活动的网络接口的数据包。  我们就用如下命令先对 any 接口进行抓包:  sudo tcpdump -i any     tcpdump 会持续抓包直到收到中断信号。你可以按 Ctrl+C 来停止抓包。正如上面示例所示,tcpdump 抓取了超过 10000 个数据包。在这个示例中,由于我是通过 ssh 连接到服务器,所以 tcpdump 也捕获了所有这类数据包。  -c 选项可以用于限制 tcpdump 抓包的数量:  sudo tcpdump -i any -c 3   如上所示,tcpdump 在抓取 3 个数据包后自动停止了抓包。这在有些场景中十分有用 —— 比如你只需要抓取少量的数据包用于分析。当我们需要使用过滤规则抓取特定的数据包(如下所示)时,-c 的作用就十分突出了。  在上面示例中,tcpdump 默认是将 IP 地址和端口号解析为对应的接口名以及服务协议名称。而通常在网络故障排查中,使用 IP 地址和端口号更便于分析问题;用 -n 选项显示 IP 地址,-nn 选项显示端口号:  sudo tcpdump -i any -c 3 -nn       如上所示,抓取的数据包中显示 IP 地址和端口号。这样还可以阻止 tcpdump 发出 DNS 查找,有助于在网络故障排查中减少数据流量。  现在你已经会抓包了,让我们来分析一下这些抓包输出的含义吧。  3、理解抓取的报文 tcpdump 能够抓取并解码多种协议类型的数据报文,如 TCP、UDP、ICMP 等等。虽然这里我们不可能介绍所有的数据报文类型,但可以分析下 TCP 类型的数据报文,来帮助你入门。更多有关 tcpdump 的详细介绍可以参考其 帮助手册。tcpdump 抓取的 TCP 报文看起来如下:  12:43:24.047063 IP 202.106.2.140.22 > 202.106.2.116.52980: Flags [P.], seq 4020757562:4020757774, ack 1254862904, win 274, length 212 1列:12:43:24.047063 是该数据报文被抓取的系统本地时间戳。  2列:IP 是网络层协议类型,这里是 IPv4,如果是 IPv6 协议,该字段值是 IP6。  3列:202.106.2.140 是源 IP 地址和端口号 22  4列:202.106.2.116 是目的 IP 地址和端口号 52980  5列: TCP 报文标记段 Flags [P.]。该字段也可以是这些值的组合,例如 [S.] 代表 SYN-ACK 数据包。该字段通常取值如下:  值 标志类型 描述 S SYN Connection Start F FIN Connection Finish P PUSH Data push R RST Connection reset . ACK Acknowledgment   6列:接下来是该数据包中数据的序列号。对于抓取的第一个数据包,该字段值是一个绝对数字,后续包使用相对数值,以便更容易查询跟踪。例如此处 seq 4020757562:4020757774代表该数据包包含该数据流的第 XX 到 XXX 字节。  7列:接下来是 ack 值:ack 1254862904。该数据包是数据发送方,ack 值为 XXX。在数据接收方,该字段代表数据流上的下一个预期字节数据。  8列:接下来字段是接收窗口大小 win 274,它表示接收缓冲区中可用的字节数,后跟 TCP 选项如 MSS(最大段大小)或者窗口比例值。更详尽的 TCP 协议内容请参考 Transmission Control Protocol(TCP) Parameters。  9列:length 212代表数据包有效载荷字节长度。这个长度和 seq 序列号中字节数值长度是不一样的。  现在让我们学习如何过滤数据报文以便更容易的分析定位问题。  4、过滤数据包 正如上面所提,tcpdump 可以抓取很多种类型的数据报文,其中很多可能和我们需要查找的问题并没有关系。举个例子,假设你正在定位一个与 web 服务器连接的网络问题,就不必关心 SSH 数据报文,因此在抓包结果中过滤掉 SSH 报文可能更便于你分析问题。  tcpdump 有很多参数选项可以设置数据包过滤规则,例如根据源 IP 以及目的 IP 地址,端口号,协议等等规则来过滤数据包。下面就介绍一些最常用的过滤方法。  协议 在命令中指定协议便可以按照协议类型来筛选数据包。比方说用如下命令只要抓取 ICMP 报文:  sudo tcpdump -i ens192 icmp -c 5 然后再打开一个终端,去 ping 另一台机器或者用本机ping连接的这个服务器。  回到运行 tcpdump 命令的终端中,可以看到它筛选出了 ICMP 报文。这里 tcpdump 并没有显示有关 opensource.com 的域名解析数据包:      主机 用 host 参数只抓取和特定主机相关的数据包,只抓取和显示与 202.106.2.116 有关的数据包。  sudo tcpdump -i ens192  -c 5 -nn host 202.106.2.116 端口号 tcpdump 可以根据服务类型或者端口号来筛选数据包。例如,抓取和 HTTP 服务相关的数据包:  sudo tcpdump -i ens192  -c 5 -nn port 80   IP 地址/主机名 同样,你也可以根据源 IP 地址或者目的 IP 地址或者主机名来筛选数据包。例如抓取源 IP 地址为 202.106.2.116 的数据包:  sudo tcpdump -i ens192  -c 5 -nn class="lazy" data-src 202.106.2.116 注意此处示例中抓取了来自源 IP 地址 192.168.122.98 的 53 端口以及 80 端口的数据包,它们的应答包没有显示出来因为那些包的源 IP 地址已经变了。  相对的,使用 dst 就是按目的 IP/主机名来筛选数据包。  sudo tcpdump -i ens192  -c 5 -nn dst 202.106.2.116       多条件筛选 当然,可以使用多条件组合来筛选数据包,使用 and 以及 or 逻辑操作符来创建过滤规则。例如,筛选来自源 IP 地址 XXX 的 HTTP 数据包:  sudo tcpdump -i ens192  -c 5 -nn dst 202.106.2.116 and port 80  sudo tcpdump -i ens192  -c 5 -nn dst 202.106.2.116 or port 80       你也可以使用括号来创建更为复杂的过滤规则,但在 shell 中请用引号包含你的过滤规则以防止被识别为 shell 表达式:  sudo tcpdump -i ens192  -c 5 -nn 'port 80 and (dst 202.106.2.116 or class="lazy" data-src 202.106.2.140)'   sudo tcpdump -i ens192  -c 5 -nn 'port not 80 and (dst 202.106.2.116 or class="lazy" data-src 202.106.2.140)'      小结:  第一种是关于类型的关键字,主要包括host,net,port, 例如 host 210.27.48.2,指明 210.27.48.2是一台主机,net 202.0.0.0 指明 202.0.0.0是一个网络地址,port 23 指明端口号是23。如果没有指定类型,缺省的类型是host.  第二种是确定传输方向的关键字,主要包括class="lazy" data-src , dst ,dst or class="lazy" data-src, dst and class="lazy" data-src ,这些关键字指明了传输的方向。举例说明,class="lazy" data-src 210.27.48.2 ,指明ip包中源地址是210.27.48.2 , dst net 202.0.0.0 指明目的网络地址是202.0.0.0 。如果没有指明方向关键字,则缺省是class="lazy" data-src or dst关键字。  第三种是协议的关键字,主要包括fddi,ip,arp,rarp,tcp,udp等类型。Fddi指明是在FDDI(分布式光纤数据接口网??上的特定的网络协议,实际上它是"ether" 的别名,fddi和ether具有类似的源地址和目的地址,所以可以将fddi协议包当作ether的包进行处理和分析。其他的几个关键字就是指明了监听的包的协议内容。如果没有指定任何协议,则tcpdump将会监听所有协议的信息包。   除了这三种类型的关键字之外,其他重要的关键字如下:gateway, broadcast,less,greater,还有三种逻辑运算,取非运算是 'not ' '! ', 与运算是'and','&&';或运算 是'or' ,'││';这些关键字可以组合起来构成强大的组合条件来满足人们的需要,下面举几个例子来说明。  5、检查数据包内容  在以上的示例中,我们只按数据包头部的信息来建立规则筛选数据包,例如源地址、目的地址、端口号等等。有时我们需要分析网络连接问题,可能需要分析数据包中的内容来判断什么内容需要被发送、什么内容需要被接收等。tcpdump 提供了两个选项可以查看数据包内容,-X 以十六进制打印出数据报文内容,-A 打印数据报文的 ASCII 值。  例如,HTTP 请求报文内容如下:    sudo tcpdump -i ens192  -c 5 -nn 'port not 80 and (dst 202.106.2.116 or class="lazy" data-src 202.106.2.140)' -A sudo tcpdump -i ens192  -c 5 -nn 'port not 80 and (dst 202.106.2.116 or class="lazy" data-src 202.106.2.140)' -X     这对定位一些普通 HTTP 调用 API 接口的问题很有用。当然如果是加密报文,这个输出也就没多大用了。  6、保存抓包数据 tcpdump 提供了保存抓包数据的功能以便后续分析数据包。例如,你可以夜里让它在那里抓包,然后早上起来再去分析它。同样当有很多数据包时,显示过快也不利于分析,将数据包保存下来,更有利于分析问题。  使用 -w 选项来保存数据包而不是在屏幕上显示出抓取的数据包:  sudo tcpdump -i ens192  -c 5 -nn port 80  -w /tmp/test.pcap   该命令将抓取的数据包保存到文件 、test.pcap。后缀名 pcap 表示文件是抓取的数据包格式。  正如示例中所示,保存数据包到文件中时屏幕上就没有任何有关数据报文的输出,其中 -c 5 表示抓取到 5 个数据包后就停止抓包。如果想有一些反馈来提示确实抓取到了数据包,可以使用 -v 选项。  查看pcap文件内容 tcpdump 将数据包保存在二进制文件中,所以不能简单的用文本编辑器去打开它。使用 -r 选项参数来阅读该文件中的报文内容:  tcpdump -nn -r /tmp/test.pcap   这里不需要管理员权限 sudo 了,因为此刻并不是在网络接口处抓包。  你还可以使用我们讨论过的任何过滤规则来过滤文件中的内容,就像使用实时数据一样。 例如,通过执行以下命令从源 IP 地址 54.204.39.132 检查文件中的数据包:  tcpdump -nn -r /tmp/test.pcap  class="lazy" data-src port 80     7.补充 TCP的几个状态 (SYN, FIN, ACK, PSH, RST, URG) 复制代码 在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的连接建立和连接关闭,都是通过请求-响应的模式完成的。  概念补充-TCP三次握手:  TCP(Transmission Control Protocol)传输控制协议  TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接:  位码即tcp标志位,有6种标示:SYN(synchronous建立联机) ACK(acknowledgement 确认) PSH(push传送) FIN(finish结束) RST(reset重置) URG(urgent紧急)Sequence number(顺序号码) Acknowledge number(确认号码)  第一次握手:主机A发送位码为syn=1,随机产生seq number=1234567的数据包到服务器,主机B由SYN=1知道,A要求建立联机;  第二次握手:主机B收到请求后要确认联机信息,向A发送ack number=(主机A的seq+1),syn=1,ack=1,随机产生seq=7654321的包;  第三次握手:主机A收到后检查ack number是否正确,即第一次发送的seq number+1,以及位码ack是否为1,若正确,主机A会再发送ack number=(主机B的seq+1),ack=1,主机B收到后确认seq值与ack=1则连接建立成功。  完成三次握手,主机A与主机B开始传送数据。   在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。 第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认; 第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态; 第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。完成三次握手,客户

感谢你的阅读,相信你对“Linux中如何使用tcpdump命令”这一问题有一定的了解,快去动手实践吧,如果想了解更多相关知识点,可以关注编程网网站!小编会继续为大家带来更好的文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Linux中如何使用tcpdump命令

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Linux中如何使用tcpdump命令

这篇文章的内容主要围绕Linux中如何使用tcpdump命令进行讲述,文章内容清晰易懂,条理清晰,非常适合新手学习,值得大家去阅读。感兴趣的朋友可以跟随小编一起阅读吧。希望大家通过这篇文章有所收获!tcpdump简介:tcpdump是一个用
2023-06-28

Linux如何使用tcpdump命令

这篇文章给大家分享的是有关Linux如何使用tcpdump命令的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。tcpdump就是:dump the traffic on a network,根据使用者的定义对网络上
2023-06-27

tcpdump命令如何在Linux中使用

这篇文章将为大家详细讲解有关tcpdump命令如何在Linux中使用,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。tcpdump命令,即:dump the traffic on a netw
2023-06-13

Linux中的tcpdump命令如何使用

这篇“Linux中的tcpdump命令如何使用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Linux中的tcpdump命令
2023-06-27

Linux中tcpdump命令怎么用

这篇文章给大家分享的是有关Linux中tcpdump命令怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Linux常用命令tcpdump命令 是一款抓包,嗅探器工具,它可以打印所有经过网络接口的数据包的头信息
2023-06-28

linux中如何使用tcpdump

小编给大家分享一下linux中如何使用tcpdump,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!tcpdump在分析fastcgi程序时,我们利用这个命令来查看
2023-06-27

Linux的tcpdump命令怎么用

小编给大家分享一下Linux的tcpdump命令怎么用,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!tcpdump命令是基于unix系统的命令行的数据报嗅探工具,可以抓取流动在网卡上的数据包。一般情况下Linux系统会自带
2023-06-27

Linux常用命令tcpdump怎么用

小编给大家分享一下Linux常用命令tcpdump怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Linux常用命令tcpdump命令用于倾倒网络传输数据,执
2023-06-28

Linux系统的tcpdump命令怎么用

这篇文章主要介绍了Linux系统的tcpdump命令怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。tcpdump命令是基于unix系统的命令行的数据报嗅探工具,可以抓取
2023-06-28

Linux下tcpdump命令解析及使用详解

简介 用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具。tcpdump可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络
2022-06-03

Linux中的tcpdump命令示例详解

前言用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具。 tcpdump可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络
2022-06-04

在 Linux 命令行中使用 tcpdump 抓包的一些功能

tcpdump 是一款灵活、功能强大的抓包工具,能有效地帮助排查网络故障问题。 以我作为管理员的经验,在网络连接中经常遇到十分难以排查的故障问题。对于这类情况, tcpdump 便能派上用场。 tcpdump 是一个命令行实用工具,允许你抓
2022-06-04

如何使用Linux中的tcpdump工具

本篇内容主要讲解“如何使用Linux中的tcpdump工具”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何使用Linux中的tcpdump工具”吧!先来看一个比较基本的用法:代码如下:tcpd
2023-06-12

Linux测试工具tcpdump命令怎么用

这篇文章主要介绍Linux测试工具tcpdump命令怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Linux测试工具tcpdump命令用于监视TCP/IP连接并直接读取数据链路层的数据包头。您可以指定哪些数据包
2023-06-16

如何使用Linux find命令中-path -prune命令

这篇文章主要介绍“如何使用Linux find命令中-path -prune命令”,在日常操作中,相信很多人在如何使用Linux find命令中-path -prune命令问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对
2023-06-13

Linux中如何使用tee命令

这期内容当中小编将会给大家带来有关Linux中如何使用tee命令,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Linux Tee命令是一个命令行工具,它从标准输入中读取结果,并将结果写入标准输出和文件中。
2023-06-15

Linux中如何使用nc命令

小编给大家分享一下Linux中如何使用nc命令,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1. 前言netcat(简称nc)是一个简单但功能强大的网络命令行工具
2023-06-15

linux中如何使用howdoi命令

这篇文章主要为大家展示了“linux中如何使用howdoi命令”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“linux中如何使用howdoi命令”这篇文章吧。一位印度软件工程师针对这一难题,开发
2023-06-15

Linux中如何使用 Cut命令

本篇文章为大家展示了Linux中如何使用 Cut命令,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Cut命令和语法cut命令基本语法如下:cut OPTION... [FILE]...让我们看一下这
2023-06-16

编程热搜

目录