最快捷的抓包方式——tcpdump

tcpdump知识

在深入tcpdump之前,先贴一张tcp header的格式图,

https://github.com/KristyToKristy/tcpheader/blob/master/tcpheader.png

TCP Flags(tcp header的第十四个字节)

flags位于tcpheader的第十四个字节,包含8个比特位。这8个比特位都有特点的功能用途,分别是:CWR,ECE,URG,ACK,PSH,RST,SYN,FIN。

CWR,ECE:两个flag用来配合congestion control的,一般情况下和应用层的关系不大。发送包ECE为0时表示出现了congestion,接收方回的包里CWR为1表明收到congestion信息并做了处理。

URG 代表Urgent,表明包的优先级高,需要优先传送对方并处理。像我们平时使用terminal的时候经常ctrl+c来结束某个任务,这种命令产生的网络数据包就需要urgent。

ACK 也就是我们所熟悉的ack包,用来告诉对方上一个数据包已经成功收到。不过一般不会为了ack单独发送一个包,都是在下一个要发送的packet里设置ack位,这属于tcp的优化机制

PSH Push我们上面解释过,接收方接收到P位的flag包需要马上将包交给应用层处理,一般我们在http request的最后一个包里都能看到P位被设置

RST Reset位,表明packet的发送方马上就要断开当前连接了。在http请求结束的时候一般可以看到一个数据包设置了RST位

SYN SYN位在发送建立连接请求的时候会设置,我们所熟悉的tcp三次握手就是syn和ack位的配合:syn->syn+ack->ack。

SYN SYN位在发送建立连接请求的时候会设置,我们所熟悉的tcp三次握手就是syn和ack位的配合:syn->syn+ack->ack。

这8个flag首字母分别是:C E U A P R S F。初看难以记忆,我脑洞了下,把它们组合成 supr cafe,当然少了super少了个e,我可以将就下。我们在使用tcpdump的时候会经常看到这几个flag,[S],[P],[R],[F],[.]。其他几个都好理解,[.]特殊点,是个占位符,没有其他flag被设置的时候就显示这个占位符,一般表示ack。

用tcpdump分析http完整请求

知乎APP点赞之后发送的一个http请求tcpdump命令是:

sudo tcpdump -i rvi0  -AAl src 60.28.215.123 or dst 60.28.215.123

图中列出了前面的packet。

10.29.44.240是android的ip地址60.28.215.123是知乎server的ip地址红色方框内是android发出的packet,白色方框内是server发出的packet。packet1是android三次握手的第一个syn包,packet2是server ack+syn的包,packet3是android ack的包。这3个packet之后tcp的三次握手就完成了。packet4是android发出的http request。长度只有240个字节,所以一个packet就发过去了,当然还设置了flags的P位,request需要马上被应用层处理。包里面出现了spdy,点赞。packet5是server ack刚收到的包,长度位0,所以这仅仅是一个ack包。

packet6是server返回http的response了,1388个字节。packet5和packet6都ack了seq为241的包,当然是为了增加ack的成功率。

最后两个packet,android发送FIN+ACK的包就断开连接了,server直接发送RST包后也断开连接了。

时间: 2024-10-07 23:01:06

最快捷的抓包方式——tcpdump的相关文章

抓包工具tcpdump及分析工具wireshark

一.抓包工具tcpdump tcpdump是一个用于截取网络分组,并输出分组内容的工具,简单说就是数据包抓包工具.tcpdump凭借强大的功能和灵活的截取策略,使其成为Linux系统下用于网络分析和问题排查的首选工具. tcpdump提供了源代码,公开了接口,因此具备很强的可扩展性,对于网络维护和入侵者都是非常有用的工具.tcpdump存在于基本的Linux系统中,由于它需要将网络界面设置为混杂模式,普通用户不能正常执行,但具备root权限的用户可以直接执行它来获取网络上的信息.因此系统中存在网

十五、free、ps、netstat命令,以及抓包工具tcpdump和tshark

free命令,查看内存. #free -k 以kb显示 #free -m 以Mb显示 #free -g 以Gb显示 #free -h 以合适大小显示 free 命令输出的信息: 真正剩余的内存是free列的第二行 buffers和cached列的数字分别表示buffers和cached还有多少剩余 free列的一行数字+buffers列数字 - buffers/cache 反应的是被程序实实在在吃掉的内存 + buffers/cache 反应的是可以挪用的内存总数 buffers和cached有

监控io性能、free、ps命令及netstat命令、抓包工具tcpdump,tshark

一.监控io性能iostat -x 关注%utiliotop 查看哪一个进程在进行读写 二.free命令(查看内存使用)-m -h-gbuff 缓冲(cpu处理完的数据 > 内存 (buff)> 磁盘)cache 缓存(磁盘 >内存(cache) >cpu处理数据)公式:total= used + free +buff/cacheavaliable包含free 和buffer/cache剩余部分我的swap怎么全是0 三.ps命令(查看系统进程)ps aux 把系统所有的进程以快照

suricata抓包方式之一 AF_PACKET

1.前言 linux提供了原始套接字RAW_SOCKET,可以抓取数据链路层的报文.这样可以对报文进行深入分析.今天介绍一下AF_PACKET的用法,分为两种方式.第一种方法是通过套接字,打开指定的网卡,然后使用recvmsg读取,实际过程需要需要将报文从内核区拷贝到用户区.第二种方法是使用packet_mmap,使用共享内存方式,在内核空间中分配一块内核缓冲区,然后用户空间程序调用mmap映射到用户空间.将接收到的skb拷贝到那块内核缓冲区中,这样用户空间的程序就可以直接读到捕获的数据包了.P

linux下抓包工具tcpdump详解

本文转自:http://www.cnblogs.com/ggjucheng/archive/2012/01/14/2322659.html 简介 用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具. tcpdump可以将网络中传送的数据包的“头”完全截获下来提供分析.它支持针对网络层.协议.主机.网络或端口的过滤,并提供and.or.not等逻辑语句来帮助你去掉无用的信息. 实用命令实例 默认启动

抓包工具tcpdump用法说明

本文目录: 1.1 tcpdump选项 1.2 tcpdump表达式 1.3 tcpdump示例 tcpdump采用命令行方式对接口的数据包进行筛选抓取,其丰富特性表现在灵活的表达式上. 不带任何选项的tcpdump,默认会抓取第一个网络接口,且只有将tcpdump进程终止才会停止抓包. 例如: shell> tcpdump -nn -i eth0 icmp 下面是详细的tcpdump用法. 1.1 tcpdump选项 它的命令格式为: tcpdump [ -DenNqvX ] [ -c cou

UNIX系统上的抓包工具tcpdump常用命令说明

tcpdump 介绍 tcpdump采用命令行方式对接口的数据包进行筛选抓取,其丰富特性表现在灵活的表达式上. 不带任何选项的tcpdump,默认会抓取第一个网络接口,且只有将tcpdump进程终止才会停止抓包. 例如: tcpdump - dump traffic on a network tcpdump是一个用于截取网络分组,并输出分组内容的工具.凭借强大的功能和灵活的截取策略,使其成为类UNIX系统下用于网络分析和问题排查的首选工具 tcpdump 支持针对网络层.协议.主机.网络或端口的

linux 抓包工具tcpdump和tshark

yum install tcpdump tcpdump -nn -c 100 抓一百条 tcpdump -nn -i eth0 指定网卡 tcpdump -nn port 22 指定端口 tcpdump -nn tcp and port 22 指定协议 tcpdump -nn host ip 指定IP tcpdump -nn -s0 完整包 tcpdump -nn  -w 写入文件 # yum install -y wireshark

抓包 : tcpdump

tcpdump -i eth0 -Ans0 -i  指定端口 -A  ASCII码 -n s  抓包大小   0  抓取所有