- 浏览: 209394 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (391)
- java (18)
- python (3)
- ruby (4)
- linux (48)
- 网络 (9)
- 前端 (2)
- 社会、文化、哲学、人生、百态 (0)
- 工具 (10)
- 下载 (0)
- 常用地址 (0)
- tracert (0)
- mysql (8)
- 开源相关收藏 (1)
- 模块查看依懒 (1)
- watch使用 (1)
- Tcpdump (2)
- easy_install安装 (1)
- 构造redis批量删除脚本 (1)
- MYSQL 性能测试 (1)
- JAVA code encode utf-8 (1)
- linux nginx awk 实时 每妙 (1)
- mkpasswd (1)
- spring security oauth (1)
- jmap dump java memory Analyzer (1)
- JAVA DUMP (1)
- swap linux 过高 解决 (1)
- SWAP (1)
- jmap jstat jstack dump (1)
- java jconsole 的使用 (1)
- git 常用 (1)
- MYSQL 索引 动态 唯一 (1)
- TCP 三次握手 四次挥手 (1)
- linux date (1)
- 删除 空行 注释行 (1)
- maven3 yum linux install repository (1)
- linux git 搭建 (1)
- linux sar eth1 查看 流量 (1)
- sar (1)
- netstat ip 过滤 常用脚本 (1)
- Tcpdump 包分析网络连接过程 (1)
- net ipv4 tcp time wait tw recycle (0)
- /etc/sysctl.conf linux 网络 配置 (1)
- ss 网络连接查看 (比netstat 快很多,实时性牺牲) (1)
- MYSQL 关键字 (1)
- Linux 下多核CPU知识 (1)
- top (1)
- 令牌 证书 (1)
- mysql unix timestamp (1)
- 端口扫描 nc nmap (1)
- 204 http code 状态码 (1)
- ss -s ss -l (1)
- linux 常用 curl (1)
- linux sed 替换 换行 (1)
- centos yum install rpm install (1)
- spring-mvc源码解读 (1)
- 使用iftop查看实时的网络流量 (0)
- linux 命令 expect (1)
- HTTP (1)
- openssl ddif 加密 (1)
- iptables 详解 (1)
- python 虚拟化 VirtualEnv virtualenvwrapper (1)
- nginx (2)
- more less 实用技巧 (1)
- linux nginx (2)
- linux curl https ssl 证书 ca (1)
- openssl (1)
- php mysql linux (1)
- linux 虚拟机 虚拟 xen (0)
- linux 虚拟机 虚拟 xen kvm (1)
- linux perl 单行执行技巧 (1)
- mysql 查看库占用空间 表查用空间 (1)
- linux tcpdump (1)
- maven (1)
- sun.misc.Unsafe (1)
- OpenSSL生成证书 (1)
- http://blog.csdn.net/zzulp/article/details/8018751 (1)
- maven 本地 jar dependency (1)
- 计算JAVA代码行数最简单命令 sed (1)
- 常用的证书格式转换 rsa eg (1)
- 加密 解密 签名 (1)
- 分析jar包冲突 (1)
- 使用JMockit编写java单元测试 (1)
- Linux 技巧:让进程在后台可靠运行的几种方法 (1)
- 环境变量控制 (1)
- 5+ 个 tar 命令的用法,附示例 (1)
- scp自动输入密码 (1)
- ps axo pid (1)
- ppid (1)
- comm (1)
- pmem (1)
- lstart|grep mysql (0)
- lstart (1)
- etime|grep mysql (1)
- UML类图字少好理解 (1)
- HTTP经典文章 (1)
- git (1)
- Git常用命令 (1)
- LINUX 系统被攻击的分析过程 (1)
- NIO (1)
- LINUX 操作快捷键使用 (1)
- openSSL命令、PKI、CA、SSL证书原理 (1)
- shell (2)
- 转载 (1)
- mysqldump 可以直接dump->xml (1)
- VIM比较全面的文章 (1)
- eclipse regex 正则表达式 (1)
- synchronized (1)
- 锁 (1)
- java 正则表达式 regex (1)
- Reference Queue 引用 源码 (1)
- spring aop 源码 分析 (1)
- java @Cache @Transaction 注解 (1)
- spring aop (1)
- spring jdk proxy cglib 动态代理 性能比较 (1)
- spring proxy private public 代理限制 (1)
- spring transaction aop 事务 (1)
- spring autowire 注解注入 (1)
- 桥接 NAT NAT地址转换 内部网络 虚拟网络 (1)
- spring-web-mvc 源码解读 之 RequestMappingHandlerMapping (1)
- find atime mtime ctime -n n +n (1)
- android studio 快捷键初探 (1)
- android 源码阅读的计划 (1)
- 计算机网络学习-VLAN (1)
- sed 高级 合并行 (1)
- CAP 一致性 可用性 分布式容错性 (1)
- android lib so 库文件 (0)
- android lib so 库文件 移植 (1)
- android 不错的博文 (1)
- sourceinsight 源码 阅读 (1)
- Android Tab UI (1)
- 诗 (1)
- mysql 批处理 (0)
- netty 堆外内存 DirectByteBuffer (1)
- netty 并发 百万 推送 (1)
- Linux操作系统中内存buffer和cache的区别 (1)
- maven intellij target bytecode version (1)
- linux sleep()的实现原理 (1)
- android (2)
- javadoc 代码注释规范 (1)
- spring 自动注入bean auto (1)
- Photoshop CS6常用快捷键 (1)
- 股票 数据 机器 分析 (1)
- 批处理 (1)
- mysql -e (1)
- char (1)
- Unicode (1)
- 编码 (1)
- utf8 (1)
- utf-8 (1)
- utf16 (1)
- utf-16 (1)
- IntelliJ IDEA (1)
- ide (1)
- idea (1)
- intellij (1)
- 文件 (1)
- 目录 (1)
- 源代码 (1)
- CountDownLatch (1)
- CyclicBarrier (1)
- Semaphore (1)
- spring (1)
- linux 查看不同进制文件 (1)
- WebMvcConfigurationSupport (1)
- sdkman工具的使用 (1)
- http header (1)
- LINUX系统优化 (1)
最新评论
-
gelongmei:
威武我大酒神
shell脚本不换行刷新数据
2012-10-11 10:50:35| 分类: rhel_apache |举报|字号 订阅
tcpdump -XvvennSs 0 -i eth0 tcp[20:2]=0x4745 or tcp[20:2]=0x4854
0x4745 为"GET"前两个字母"GE"
0x4854 为"HTTP"前两个字母"HT"
说明: 通常情况下:一个正常的TCP连接,都会有三个阶段:1、TCP三次握手;2、数据传送;3、TCP四次挥手
里面的几个概念:
SYN: (同步序列编号,Synchronize Sequence Numbers)
ACK: (确认编号,Acknowledgement Number)
FIN: (结束标志,FINish)
TCP三次握手(创建 OPEN)
客户端发起一个和服务创建TCP链接的请求,这里是SYN(J)
服务端接受到客户端的创建请求后,返回两个信息: SYN(K) + ACK(J+1)
客户端在接受到服务端的ACK信息校验成功后(J与J+1),返回一个信息:ACK(K+1)
服务端这时接受到客户端的ACK信息校验成功后(K与K+1),不再返回信息,后面进入数据通讯阶段
数据通讯
客户端/服务端 read/write数据包
TCP四次握手(关闭 finish)
客户端发起关闭请求,发送一个信息:FIN(M)
服务端接受到信息后,首先返回ACK(M+1),表明自己已经收到消息。
服务端在准备好关闭之前,最后发送给客户端一个 FIN(N)消息,询问客户端是否准备好关闭了
客户端接受到服务端发送的消息后,返回一个确认信息: ACK(N+1)
最后,服务端和客户端在双方都得到确认时,各自关闭或者回收对应的TCP链接。
详细的状态说明(以及linux相关参数调整)
SYN_SEND
客户端尝试链接服务端,通过open方法。也就是TCP三次握手中的第1步之后,注意是客户端状态
sysctl -w net.ipv4.tcp_syn_retries = 2 ,做为客户端可以设置SYN包的重试次数,默认5次(大约180s)引用校长的话:仅仅重试2次,现代网络够了
SYN_RECEIVED
服务接受创建请求的SYN后,也就是TCP三次握手中的第2步,发送ACK数据包之前
注意是服务端状态,一般15个左右正常,如果很大,怀疑遭受SYN_FLOOD攻击
sysctl -w net.ipv4.tcp_max_syn_backlog=4096 , 设置该状态的等待队列数,默认1024,调大后可适当防止syn-flood,可参见man 7 tcp
sysctl -w net.ipv4.tcp_syncookies=1 , 打开syncookie,在syn backlog队列不足的时候,提供一种机制临时将syn链接换出
sysctl -w net.ipv4.tcp_synack_retries = 2 ,做为服务端返回ACK包的重试次数,默认5次(大约180s)引用校长的话:仅仅重试2次,现代网络够了
ESTABLISHED
客户端接受到服务端的ACK包后的状态,服务端在发出ACK在一定时间后即为ESTABLISHED
sysctl -w net.ipv4.tcp_keepalive_time = 1200 ,默认为7200秒(2小时),系统针对空闲链接会进行心跳检查,如果超过net.ipv4.tcp_keepalive_probes * net.ipv4.tcp_keepalive_intvl = 默认11分,终止对应的tcp链接,可适当调整心跳检查频率
目前线上的监控 waring:600 , critial : 800
FIN_WAIT1
主动关闭的一方,在发出FIN请求之后,也就是在TCP四次握手的第1步
CLOSE_WAIT
被动关闭的一方,在接受到客户端的FIN后,也就是在TCP四次握手的第2步
FIN_WAIT2
主动关闭的一方,在接受到被动关闭一方的ACK后,也就是TCP四次握手的第2步
sysctl -w net.ipv4.tcp_fin_timeout=30, 可以设定被动关闭方返回FIN后的超时时间,有效回收链接,避免syn-flood.
LASK_ACK
被动关闭的一方,在发送ACK后一段时间后(确保客户端已收到),再发起一个FIN请求。也就是TCP四次握手的第3步
TIME_WAIT
主动关闭的一方,在收到被动关闭的FIN包后,发送ACK。也就是TCP四次握手的第4步
sysctl -w net.ipv4.tcp_tw_recycle = 1 , 打开快速回收TIME_WAIT,Enabling this option is not recommended since this causes problems when working with NAT (Network Address Translation)
sysctl -w net.ipv4.tcp_tw_reuse =1, 快速回收并重用TIME_WAIT的链接, 貌似和tw_recycle有冲突,不能重用就回收?
net.ipv4.tcp_max_tw_buckets: 处于time_wait状态的最多链接数,默认为180000.
相关说明
主动关闭方在接收到被动关闭方的FIN请求后,发送成功给对方一个ACK后,将自己的状态由FIN_WAIT2修改为TIME_WAIT,而必须 再等2倍的MSL(Maximum Segment Lifetime,MSL是一个数据报在internetwork中能存在的时间)时间之后双方才能把状态 都改为CLOSED以关闭连接。目前RHEL里保持TIME_WAIT状态的时间为60秒
keepAlive策略可以有效的避免进行三次握手和四次关闭的动作
其他网络重要参数
net.ipv4.tcp_rmem 参数
默认值: min=4096 default=87380 max=4194304
net.ipv4.tcp_wmem 参数
默认值: min=4096 default=16384 max=4194304
tcpdump
tcpdump是linux系统自带的抓包工具,主要通过命令行的方式,比较适合在线上服务器进行抓包操作,如果是windows或者ubuntu完全可 以选择一些图形化的工具,ubuntu比较推荐用wireshark,安装方式很简单sudo apt一下即可。
命令行格式:
tcpdump [ -adeflnNOpqStvx ] [ -c 数量 ] [ -F 文件名 ][ -i 网络接口 ] [ -r 文件名] [ -s snaplen ][ -T 类型 ] [ -w 文件名 ] [表达式 ]
常用的参数:
-l 使标准输出变为缓冲行形式;
-n 不把网络地址转换成名字;
-c 在收到指定的包的数目后,tcpdump就会停止;
-i 指定监听的网络接口;
-w 直接将包写入文件中,并不分析和打印出来;
-s 指定记录package的大小,常见 -s 0 ,代表最大值65535,一半linux传输最小单元MTU为1500,足够了
-X 直接输出package data数据,默认不设置,只能通过-w指定文件进行输出
常用表达式:
关于类型的关键字,主要包括host,net,port
传输方向的关键字,主要包括src , dst ,dst or src, dst and src
协议的关键字,主要包括fddi,ip ,arp,rarp,tcp,udp等类型
逻辑运算,取非运算是 'not ' '! ', 与运算是'and','&&';或运算 是'or' ,'||'
其他重要的关键字如下:gateway, broadcast,less,greater
实际例子:
1. http数据包抓取 (直接在终端输出package data)
tcpdump tcp port 80 -n -X -s 0 指定80端口进行输出
2. 抓取http包数据指定文件进行输出package
tcpdump tcp port 80 -n -s 0 -w /tmp/tcp.cap
对应的/tmp/tcp.cap基本靠肉眼已经能看一下信息,比如http Header , content信息等
3. 结合管道流
tcpdump tcp port 80 -n -s 0 -X -l | grep xxxx
这样可以实时对数据包进行字符串匹配过滤
4. mod_proxy反向代理抓包
线上服务器apache+jetty,通过apache mod_proxy进行一个反向代理,80 apache端口, 7001 jetty端口
apache端口数据抓包: tcpdump tcp port 80 -n -s 0 -X -i eth0 注意:指定eth0网络接口
jetty端口数据抓包: tcpdump tcp port 7001 -n -s 0 -X -i lo 注意:指定Loopback网络接口
5. 只监控特定的ip主机
tcpdump tcp host 10.16.2.85 and port 2100 -s 0 -X
需要使用tcp表达式的组合,这里是host指示只监听该ip
小技巧:
1. 可结合tcpdump(命令) + wireshark(图形化)
操作:
在服务器上进行tcpdump -w /tmp/tcp.cap 指定输出外部文件
scp /tmp/tcp.cap 拷贝文件到你本地
wireshark & 启动wireshark
通过 File -> Open 打开拷贝下来的文件,这样就可以利用进行数据包分析了
剩下来的事就非常方便了
2. 服务器上直接安装wireshark + X11协议反向输出到本机
注意:
wireshark如果要开启网络监控,需要通过root方式启动,否则无法直接通过网卡进行数据抓包
X11的反向输出,需要客户机支持X11协议,如果是ubuntu天生支持很方便,如果是windows需要安装个软件
发表评论
-
linux 查看不同进制文件
2018-01-31 11:43 360hexdump -
HTTP协议详解
2016-02-29 11:15 353http://www.cnblogs.com/EricaMIN ... -
iptables 从链、表开始理解
2015-06-24 14:26 532iptables 不清楚的同学可以在看这里的比较全面的文章ht ... -
CentOS---网络配置详解
2015-06-24 13:44 532http://blog.chinaunix.net/uid-2 ... -
linux中RSYNC进行网站增量备份配置
2015-06-17 13:23 472linux中RSYNC进行网站增量备份配置 http://w ... -
Linux启动过程详解
2015-06-03 16:02 350http://blog.chinaunix.net/uid-2 ... -
谈谈varnish,squid,apache,nginx缓存的对比
2015-04-03 13:24 664http://www.cnblogs.com/google4y ... -
OpenSSL生成证书
2015-03-09 11:02 637要生成证书的目录下建立几个文件和文件夹,有./demoCA/ ... -
sysctl配置
2015-02-10 16:50 679Sysctl是一个允许您改变正在运行中的Linux系统的接口。 ... -
mysql 增删改查
2015-02-03 16:31 528mysql实时监控工具: //create database ... -
利用OpenSSL生成库和命令程序
2015-01-31 10:09 684在生成的命令程序中包括对加/解密算法的测试,openssl程序 ... -
more less 实用技巧
2015-01-27 20:30 524more +10 xxx.log more +/10:00:0 ... -
nginx 使用详细解
2015-01-27 16:07 790http://www.linuxidc.com/Linux/2 ... -
Iptable 详解
2015-01-23 13:52 611## 将7888端口映射到8080 ... -
弟弟(dd)是个好命令
2014-07-18 14:34 706dd 使用dd这个linux命令可以创建一定大小文件。 l ... -
查看文件编码
2014-07-05 14:31 510查看文件编码 在Linux中查看文件编码可以通过以下几种方式: ... -
TCP连接的状态与关闭方式
2014-06-27 11:28 562TCP连接的状态与关闭方式,及其对Server与Client的 ... -
curl
2014-06-18 12:32 1226link:http://curl.haxx.se/docs/m ... -
nginx 504初级解决方案
2014-06-18 10:12 889large_client_header_buffers 4 1 ... -
memcached dump
2014-06-13 09:51 566yum install libmemcached; ./mem ...
相关推荐
执行命令可能是 `adb push tcpdump /data/local/tmp/tcpdump`,然后 `adb shell` 进入设备终端,通过 `su` 获取root权限,最后运行 `/data/local/tmp/tcpdump -i any` 开始抓包。 标签中的“java”和“apache”暗示...
通过以上步骤,我们成功地在夜神模拟器中使用tcpdump进行了抓包操作,并将抓取的数据包导出到了本地计算机上。这对于进行网络调试、性能优化等方面的工作非常有帮助。希望本文能够帮助您更好地理解和使用tcpdump这一...
例如,`tcpdump port 80`将只显示与HTTP(80端口)相关的数据包。tcpdump支持复杂的BPF(Berkeley Packet Filter)语法,可以进行更精细的过滤,如`tcpdump host www.example.com`将只捕获与example.com交互的数据包...
1. **网络延迟**:通过分析tcpdump抓取的包,我们可以查看每个数据包的发送时间、往返时间,从而找出可能的网络延迟原因。 2. **连接问题**:如果应用无法正常连接服务器,可以通过查看TCP三次握手是否完成,判断...
在进行网络故障排查时,通常需要结合其他工具一起工作,比如Wireshark,这是一个图形化的网络协议分析工具,可以对tcpdump抓取的包文件进行更直观的分析和解码。Wireshark提供了丰富的过滤和搜索功能,使得查找特定...
libpcap是tcpdump和其他网络抓包工具所依赖的基础库,它提供了访问网络接口数据包的能力。安装libpcap.ipk的命令如下: ```bash opkg update opkg install libpcap.ipk ``` 更新软件包列表(`opkg update`)确保你...
tcpdump-4.5.1-2.el7.x86_64.rpm则是tcpdump的主要程序包,它基于libpcap库来实现数据包的抓取和解析。4.5.1是tcpdump的版本号,2是针对el7发行版的修订号。tcpdump可以实时显示网络中传输的数据包的详细信息,对于...
- `<snaplen>`:定义抓包时捕获的数据包长度,默认值可能不足以捕获完整包头,需要适当调整。 - `<filter expression>`:可选的过滤表达式,用于筛选特定类型的数据包。 例如,以下命令将捕获所有HTTP请求: ```...
例如,你可以在一台服务器上用tcpdump抓取数据包,然后将其导出到Wireshark中进行详细分析。 总的来说,掌握tcpdump和Wireshark的使用,对于网络管理员、开发者和网络安全专业人员来说,是提高工作效率和解决问题的...
值得注意的是,由于Tcpdump具有高度的监控能力,涉及敏感信息的抓包操作通常需要root权限执行。同时,合理使用这些工具并尊重用户隐私是网络管理中的重要原则。在实际应用中,网络管理员应根据实际情况,遵循法规和...
本篇将详细讲解如何在Android设备上使用`tcpdump`进行网络数据包抓取,并探讨相关知识点。 首先,我们来理解`tcpdump`的基本概念。`tcpdump`能够捕获网络上的数据包,它通过嗅探网络接口的数据流,解析并打印出网络...
使用tcpdump抓包工具,我们可以获取到设备上所有网络接口的传输数据,包括TCP、UDP、ICMP等各种协议的数据包。这些数据包包含了源地址、目标地址、端口号、协议类型、数据内容等关键信息。对于Android开发者来说,这...
- 只抓取HTTP流量(端口80):`sudo tcpdump -i eth0 'tcp port 80'` - 只抓取特定主机(如192.168.1.1)的数据包:`sudo tcpdump -i eth0 host 192.168.1.1` 为了保存抓包结果到文件,可以加上`-w`参数,如`sudo ...
1. **故障排查**:当网络连接出现问题时,可以通过TcpDump抓取相关数据包,分析其传输过程,找出可能导致问题的原因。 2. **性能监控**:通过观察数据包的延迟和频率,可以评估网络的性能瓶颈。 3. **安全审计**:...
- 当通信数据采用JSON格式时,使用TCPDUMP抓取的数据包可以直接观察到JSON结构。这在调试基于HTTP/HTTPS的应用程序或服务时非常有用。 - 可以结合`-A`选项来查看数据包中的文本内容,尤其是对于HTTP响应体中的JSON...
Tcpdump和Wireshark是网络分析领域的两个重要工具,它们主要用于抓取和分析网络报文,对于网络故障排查、性能优化和安全审计具有重要作用。 **Tcpdump** Tcpdump是一款命令行式的网络数据包分析工具,它能够实时...
例如,你可以指定监听哪个网络接口(如eth0或lo),过滤特定的网络流量(如只抓取HTTP或FTP协议的数据包),或者限制抓取的数据包数量。命令行语法灵活,使得tcpdump能够满足各种复杂的网络监控需求。 以下是一些...
在安卓平台上,尽管不像在Linux或桌面系统中那样常见,但通过一些方式,我们仍然可以利用tcpdump来抓取网络流量,以便进行深入的数据分析。 首先,让我们了解tcpdump的基本原理。tcpdump能够捕获网络接口上的数据包...
TCPDump是一款强大的网络封包分析软件,主要用于在各种操作系统上抓取网络协议数据包,包括Linux、Unix以及Windows等PC平台。它可以帮助网络管理员、开发者和安全专家深入了解网络流量,进行故障排查、性能分析和...
tcpdump是一款强大的网络数据包分析工具,主要用于抓取和分析网络中的数据包。它在Linux、Unix以及类Unix操作系统上广泛使用,同时也可应用于其他支持libpcap库的操作系统。tcpdump通过读取网络接口上的数据包,为...