• tcpdump(二)命令行参数讲解(一)


    一  tcpdump实战详解

    1. 1、我们做'抓包',一般都需要指定'条件',保证对系统的'CPU、内存、磁盘'资源不会产生过大的响应
    2. 备注: 遇到过tcpdump'持续抓包'导致系统'挂了'
    3. 2、条件:
    4. 1) tcpdump的 '基础命令选项参数'
    5. 2) 真正的 '过滤条件'

    抓包工具tcpdump用法说明

    ①   参数学习思路

    1. 思路: 掌握'常用''选项参数',其它遇到了'再学习'
    2. 备注: 由于是'科普'类的文章,本文视图尽可能的'详细'罗列每个参数
    3. 附加: man tcpdump

    ②   抓包应用场景

    说明: 关注'2''4''5'

    ③  tcpdump工作原理

    ④   面试题

    目的: 考察'tcpdump'的工作原理

    二   命令行选项参数

    注意: 一些'默认''老6'行为

    ①   tcpdump的组成

    1. 背景: 参数的'不确定性',让大多数人对 tcpdump 的学习始终'无法'得其'精髓'
    2. 目的: 便于理解'每个位置''顺序''含义'

     

    sudo tcpdump -vvnni any port 80   --> '看到HTTP详细信息'

    ②  网络接口

    1. 1、lvs配置'多业务'网卡,需要采用'-i any'
    2. 2、只配置了一个业务网卡[例如:eth0],可以使用-i eth0.

    1. 常见: '无参''-i 网卡''-i any'
    2. 无参: 如果不指定网络接口,tcpdump 在运行时会选择'编号最低'的网络接口,一般情况下是 eth0
    3. 补充: any 这一'特定'的网络接口名用来让 tcpdump 监听'所有'的接口
    4. -i: 'interface' --> 抓取流经指定'网卡'所有网络接口,'限定'网络接口

    说明: 一般通过'tcpdump -D'查询'网络接口',然后'tcpdump -i' 获取指定'网卡'流量

    ③  -n

    1. 优化: 设置'不解析域名'提升速度
    2. -n: 不把ip转化成'域名',直接显示 ip,避免执行 'DNS lookups' 的过程,速度会快很多
    3. -nn: 不把'协议''端口号'转化成'名字',速度也会快很多 --> "常用"
    4. 思考: 'CDN' 场景,是否需要把'ip'解析为'域名'?

     

    1. 端口'与'服务名称解析
    2. linux'端口号''相应服务'的对应关系存放在'/etc/services'文件中,可以找到'大部分'端口
    3. 备注: 使用netstat命令'显示的服务名称'也是从'这个文件'中找的
    4. 附加: /etc/services关于'服务、协议、端口'关联

    ④  host、src、dst  基于ip地址过滤

    1. 数据包的 ip 可以再细分为'src 源ip''dst 目标ip'两种
    2. ++++++++++++++++++ "分割线" ++++++++++++++++++
    3. 如果没有指定'类型',默认是'host'
    4. 等价: tcpdump -ni eth0 src 10.1.1.2

    遗留: 'src''dst'通过'逻辑符号'可以同时使用

    ⑤  net 基于网段过滤

    1. 说明: 网段'同样'可以再细分为'源'网段和'目标'网段
    2. tcpdump src net 192.168.1.0/24 --> 根据'源网段'进行过滤

    ⑥  port  portrange 基于端口号过滤

    1. 1、tcpdump port 8088 --> 指定'特定端口'进行过滤
    2. 2、tcpdump port 80 or port 8088 --> 同时指定'两个'端口
    3. 简写: tcpdump port 80 or 8088
    4. 3、tcpdump src port 8088 --> 根据'源端口'进行过滤
    5. 4、tcpdump portrange 8000-8080 --> 想抓取的是一个端口'范围'
    6. 5、tcpdump src port http
    7. 备注: 对于一些'常见协议''默认'端口,我们还可以直接使用'协议名',而不用具体的端口号
    8. 附加: http == 80、https == 443

    ⑦  proto基于协议进行过滤

    1. 常见的'网络协议'有:tcp、udp、icmp、http、ip、ipv6 等
    2. 强调: 旧版本有'proto'关键字,新版本没有,这里'Centos7.7' 默认的'4.9.2'没有
    3. 补充: 不指定'协议类型',则抓取'所有'协议类型的包

    ⑧   tcpdump输出结构  

    1. 说明: tcpdump '输出的内容'虽然多,却'很规律' --> '后续重点掌握'
    2. 请求: http://other.wzj.com/index.yml '为例'来看一下

    1. 第一列: 时分秒毫秒
    2. 第二列: 网络协议 IP
    3. 第三列: '发送方'的ip地址+端口号,其中172.20.20.1是 ip,而15605 是'端口号'
    4. 第四列: 箭头 >, 表示'数据流向'
    5. 第五列: '接收方'的ip地址+端口号,其中 172.20.20.2 是 ip,而5920 是端口号
    6. 第六列: 冒号
    7. 第七列: 数据包内容
    8. 备注: 包括Flags 标识符,seq 号,ack 号,win 窗口,'数据长度' length
    9. 附加: 其中 '[P.]' 表示 'PUSH 标志位为 1'
    10. 说明: 分列是为了与'awk'结合提取'有用'的信息

  • 相关阅读:
    智能客服,还有多少AI泡沫?
    Python + Appium框架原生代码实现App自动化测试
    堆排序和优先队列
    第28章 锁
    Python大文本文件按行数分割成多个小文本文件
    Java生成Jar包方法
    NoSQL之 Redis配置
    Java Basic Knowledge—— newCoder —— Java专项练习 —— Day05
    中电金信:语言服务解决方案
    软件销售的话术(非常建议收藏)
  • 原文地址:https://blog.csdn.net/wzj_110/article/details/133637174