文章目录

  • 1. TCPDUMP分析法
    • 1.1 简述
    • 1.2 使用
  • 2. WireShark 基本使用
    • 简述
    • 实战

之前的文章有分析各种协议包的组成,那么实际上在使用的时候是不是和分析的一样,这就需要获取到请求的包进行分析;在分析网络协议最好能抓取到数据包,然后看分析数据包是不是和规定的协议一致;
一般的网络数据包分析我们有两个常用的工具:

  • Linux端的一般经常使用tcpdump
  • 其他客户端一般使用WireShark
    当然可以将tcpdump抓取的数据拿到wireShark中分析。

1. TCPDUMP分析法

1.1 简述

TCPdump是Linux端强大的网络抓包分析工具,但是要求使用者对网络协议等要有较高的熟悉度,如果不熟悉,看到的都是满屏的二进制数据,TCPdump在Linux上配合grep的搜索就会有很强大方便的分析能力;需要注意的是,由于需要抓取网卡的数据这里需要sudo root权限;

1.2 使用

使用实例如下:

sudo tcpdump -i en7  src www.xxx.top  -xx -Xs 0

上述命令中的各个参数解析如下:

  • -i : 用来指定要捕获的接口,通常是以太网卡或无线网卡,后面跟网卡名称(比如:这里监听en7网卡的数据包),也可以是 vlan 或其他特殊接口,当然在当前系统上只有一个网络接口,则无需指定。
  • src 指明包的来源,一般可以使用src 或 dst 只抓取源或目的地,后面跟的可以是IP地址也可以使用域名;
  • port 指定要监听的端口,可以是源端口或目的端口,可以是tcp或udp端口;
  • -xx 指被抓取到的包以16进制现实;
  • -Xs 实际上是两个参数 X表示ASCII码的形式显示二进制数据;s 0表示需要抓取整个包,o表示抓取的数量无限制;
  • -w 是指要写入到文件中,后面跟文件名;

上述命令执行后如下:

mac下抓取网卡后写入文件的方式如下:

sudo tcpdump -i en7  dst  www.test.top  -xx -Xs 0  -w /Users/用户名/desktop/test.cap

抓取一段时间后,结束抓取(control + c)就会在桌面生成一个cap文件,这个文件可以使用wireshake打开,打开效果如下:

详细的使用介绍超详细的网络抓包神器 tcpdump 使用指南

2. WireShark 基本使用

简述

由于一个网卡的数据可能包含多个协议及很多的源地址和目的地址等, WireShark 提供了基本逻辑运算用于处理数据,常用的如下:

  • 与运算, and 或者使用&&
  • 或。 or或者 ||
  • 非。not 或者 !
    基本判断如下:
    等于 eq 或者 ==
    小于 It 或者<
    大于 gt 或者 >
    。。。
    一般的过滤方式:

实战

按照协议过滤,实例如下:
打开wire shark过滤的方式如下:

注意如果开始没有看到所有的网卡,可以点击图中的的按钮打开:

打开软件后,在输入行里就可以使用过滤命令了,比如这里要过滤stun 相关的,就可以如图输入:

这里可以看到目前没有任何请求,我们发起一个请求看下;抓取到的数据如下:

在任何一条数据上双击就可以打开一个窗口查看详细的数据,比如这里双击第一条request请求;效果如下:

这里在会话层的数据中可以看到:

  • message Type:是0X0001也就是一个绑定请求消息;
  • message length:消息的长度是0;
  • message cookie: 之前的协议分析文章说过magic cookie是一个4字节(32bit)的固定值0x2112A442,这里可以看到和协议一致;
  • 接着就是transaction ID,这里看到ID是4969464e374f374469655670;

我们看一下服务的响应消息,如下图:

可以看到transport ID和请求的时候是一值的;详解如下:

  • type: 0x0101 表示请求绑定的响应消息
  • length 是 80长度
  • cookie 是一个固定值
  • ID 与请求时候的ID一致,表示同一次的会话;
  • attributes 包含映射地址等,这里就不做每一条的分析;
    补充: attributes里每一条里的长度消息想加就是上面message length的值;
    之前的文章描述过stun是在turn之上的协议,所以这里抓包包含了turn的协议内容,这里看下allocate:

    按照之前的协议分析,第一的request会返回一个错误;这里如下:

    可以看到这里响应的消息的transport ID和请求时候的是一样的;接着会再发送一个携带用户信息的绑定请求如下:

    接着服务会回一个请求成功的消息如下:

    可以看到这次的ID和请求的一致,同时也返回了attributes信息给客户端;

按照同样的方式可以去抓取tcp或udp;

按照地址过滤(例如:ip.src =192.168.0.1 或 ip.dst = 140.4.5.44),实例如下:

上图中就是过滤后的效果,这里使用了组合,即: 先按是源地址是指定的过滤,然后筛选出stun协议的数据显示
同样可以换成ip.dst == 0.0.0.0 && stun 的组合去获取stun协议的目的地址是这个的数据包;
例如使用下列命令进一步过滤端口数据:

ip.src==192.168.0.1 && stun && udp.dstport == 3478

效果如下:

可以看到数据少了很多;只剩下从源地址向服务特定端口发送的数据;
掌握上述命令就可以来做网络协议的分析,其他的组合命令,网络上有多的介绍;
本文就介绍到这里;

WebRTC系列- turn及stun网络分析法相关推荐

  1. WebRTC系列<二> 案例与工具

     阅读关于webRTC的其他文章: WebRTC系列<一> 什么是WebRTC? WebRTC系列<二> 案例与工具 ----------------------------- ...

  2. WebRTC 系列之音频会话管理

    导读:WebRTC(Web Real-Time Communication)是一个支持网页浏览器进行实时语音对话或视频对话的 API.W3C 和 IETF 在2021年1月26日共同宣布 WebRTC ...

  3. WebRTC 系列之视频辅流

    导读:近几年,实时音视频领域越来越热,业界很多音视频引擎都是基于 WebRTC 进行实现的.本文主要介绍 WebRTC 在视频辅流上的需求背景以及相关技术实现. 文|陶金亮 网易云信资深客户端开发工程 ...

  4. WebRTC系列--视频编码控制之BALANCED(分辨率与帧率平衡模式)

    文章目录 1. 触发流程及流开始 2. 平衡模式流程详细分析 2.1 BalancedDegradationSettings的MinFps方法调用流程 2.2 source_proxy_的Restri ...

  5. [常微分方程的数值解法系列五] 龙格-库塔(RK4)法

    龙格-库塔法 简介 基本思想 具体方法 一阶 二阶 求解参数 特殊二阶 三阶 高阶 步长选择 例子 在惯性导航以及VIO等实际问题中利用IMU求解位姿需要对IMU测量值进行积分得到需要的位置和姿态,其 ...

  6. WebRTC系列-Qos系列之发送NACK

    文章目录 1. NACK简述 2. 判断包位置的算法 2. WebRTC中NACK的处理流程 2.1 主要流程函数分析 2.2 是否丢包判断 2.3 乱序包的处理 在之前的文章 WebRTC系列-Qo ...

  7. WebRTC系列-Qos系列之接收NACK

    文章目录 1. 主要调用流程 1.1 RTCP和RTP包区分 1.2 查找丢失包 总结 在文章 WebRTC系列-Qos系列之RTP/RTCP源码分析-RTP/RTCP包解析-3的2.3.3章节介绍了 ...

  8. WebRTC系列-网络之带宽估计和码率估计(1)

    文章目录 1. 一些基本概念 1.1 协议选择 1.2 拥塞的原因现象 1.3 拥塞控制的方案 1.4 WebRTC源码实现 2. 码率控制主要流程 2.1 rtcp包处理 2.2 评估模块主要类关系 ...

  9. WebRTC系列-音频ADM播放采集的停止与开始

    文章目录 1. 媒体控制相关接口 1.1 初始化及停止 1.2 其他接口 2. 录制开始/暂停接口 3. 播放开始/暂停接口 上一篇 WebRTC系列 – iOS 音频采集播放之 ADM.APM和Au ...

最新文章

  1. java 之 异常
  2. secureCRT 下载文件
  3. 使用rqt_console和roslaunch---ROS学习第7篇
  4. 非常详尽的 Shiro 架构解析!
  5. Winform中使用OpenFileDialog选择文件打开并获取文件路径
  6. python基础期末考试_python基础试题(4)
  7. instr 函数从后往前计数 instr(spell,' ',-1)
  8. 诡异的DateTime.TryParseExact方法
  9. udp接受_UDP协议-看这篇就够了
  10. js - 让 git 上 Mint-UI 的例子跑起来 - 方法大全
  11. 收藏 | PyTorch 单机多卡操作总结
  12. GitHub上如何删除fork别人的repository
  13. ## 在webapp上使用input:file, 指定capture属性调用默认相机,摄像,录音功能
  14. 生物医学信号检测与处理实验3——1微电阻梁
  15. java前后端分离(增删查改)
  16. macmini作为远程服务器,160台Mac mini组成的终极服务器
  17. python 爬取数据(CBA所有球队数据) -爬虫
  18. RL(Chapter 6): Windy Gridworld
  19. html表头解释_1分钟内解释的html
  20. android gatekeeper(locksetting密码锁)学习这一篇就够了

热门文章

  1. 模拟量使用计算机电缆,电气线型汇总
  2. 一体化建模仿真平台20-sim v4.6.3发布丨附下载
  3. 我的SCI文章投稿记录(现已更新到第三篇)
  4. hive时间函数的使用
  5. python画小猪乔治_Python turtle 学习笔记
  6. 一文带你看懂java 泛型,史上最全面的泛型教学啦。
  7. python编程与t5哪个难_R和Python谁更好?这次让你「鱼与熊掌」兼得
  8. 基于深度学习方法实现SPECT放射性核素定量测量(三)
  9. Java判断回文数(两种方式)
  10. Python开发Web扫描器实战