tcpdump抓取TCP标识位

简介: tcpdump抓取TCP标识位 按每8位组算,TCP的标志位位于第13个8位组中,如下,第一行一共32位是0 - 3个8位组,第二行是4-7八位组,第三行是8-11八位组,data offset +reserved的前四个是第12个8位组,reserved中的后2位+6个标志位是第13个八位组。

tcpdump抓取TCP标识位

按每8位组算,TCP的标志位位于第138位组中,如下,第一行一共32位是0 - 38位组,第二行是4-7八位组,第三行是8-11八位组,data offset +reserved的前四个是第128位组,reserved中的后2+6个标志位是第13个八位组。

以下TCP报头

wps_clip_image-1232

因此第13个八位组结构为

- - + + + + + +

前面2个是保留的,都为0,后面的6个根据不同情况有不同值,例如syn 包 则为

00 0 0 0 0 1 0

这是二进制转化为十进制就是2

因此 tcpdump -ni eth0 tcp[13]==2 就表示syn包。

同理,syn+ack包为

00 0 1 0 0 1 0

化为十进制就是18,因此tcpdump -ni eth0 tcp[13]==18 表示syn+ack包。

如果想同时抓synsyn+ack包,则进行tcp[13]位值与掩码进行与运算:

tcp[13] & 2 == 2

此外,还可以利用 tcp[tcpflags]=tcp-syn 这种格式来写,后面的值可以为tcp-fin, tcp-syn, tcp-rst, tcppush, tcp-ack, tcp-urg任意一种。

示例

1、打印TCP会话中的的开始和结束数据包,并且数据包的源或目的不是本地网络上的主机。

tcpdump 'tcp[tcpflags] & (tcp-syn|tcp-fin) != 0 and not src and dst net localnet'

localnet, 实际使用时要真正替换成本地网络的名字

2、打印所有源或目的端口是80,网络层协议为IPv4,并且含有数据,而不是SYN,FIN以及ACK-only等不含数据的数据包。

tcpdump 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'

ip[2:2]表示整个ip数据包的长度; (ip[0]&0xf)<<2)表示ip数据包包头的长度(ip[0]&0xf代表包中的IHL域,而此域的单位为32bit,要换算成字节数需要乘以4,即左移2)(tcp[12]&0xf0)>>4 表示tcp头的长度,此域的单位也是32bit,换算成比特数为 ((tcp[12]&0xf0) >> 4)<<2,即 (tcp[12]&0xf0)>>2)

原文

[1]http://hi.baidu.com/nanjidegou/item/7d144cc0f3499252ac00efe7

[2]http://www.cnblogs.com/ggjucheng/archive/2012/01/14/2322659.html

[3]http://blog.chinaunix.net/uid-7934175-id-3379372.html

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。 &nbsp; &nbsp; 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
目录
相关文章
|
网络协议 算法 Linux
TCP 协议报文格式&tcpdump抓包工具
之前文章介绍过 wireshark 抓包工具的 捕获过滤器 和 显示过滤器,而 捕获过滤器 使用的 BPF 过滤语法可以在 tcpdump 中使用,tcpdump 可以在 Linux 服务端使用,熟悉和了解 tcpdump 抓包工具的使用,可以帮助分析服务端数据报文的情况。
1142 0
|
存储 监控 网络协议
在Linux中,如何使用 tcpdump 监听主机为 192.168.1.1,tcp 端⼝为 80 的数据,并将将输出结果保存输出到tcpdump.log?
在Linux中,如何使用 tcpdump 监听主机为 192.168.1.1,tcp 端⼝为 80 的数据,并将将输出结果保存输出到tcpdump.log?
|
网络协议 网络虚拟化
|
机器学习/深度学习 监控 网络协议
浅谈 TCP 握手/数据传输/挥手过程以及 tcpdump 抓包工具使用
浅谈 TCP 握手/数据传输/挥手过程以及 tcpdump 抓包工具使用
701 0
|
网络协议
tcpdump如何对特定的tcp标志位进行过滤
tcpdump如何对特定的tcp标志位进行过滤
578 0
tcpdump如何对特定的tcp标志位进行过滤
|
Shell 容器
使用tcpdump抓取容器中的数据包
学习记录下,容器的网络数据包抓取
1027 0
|
编解码 网络协议 网络架构
计算机网络基础 和 tcp 三次握手四次挥手,tcpdump抓包分析 协议过滤 分析,连接状态,标志位详解
wireshark 软件过滤及转码使用 ,TCP tcpdump 连接状态,标志位详解
469 1
使用tcpdump工具与对tcp协议的理解
使用tcpdump工具与对tcp协议的理解