网络抓包原理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了网络抓包原理相关的知识,希望对你有一定的参考价值。

参考技术A 本文以App作为例子,实际应用不限于App范围。

大部分场合都可以通过程序调试来定位问题,但有些场景使用抓包来定位接口问题更准确、更方便,如以下场景:

要实现对App的网络数据抓包,需要监控App与服务器交互之间的网络节点,监控其中任意一个网络节点(网卡),获取所有经过网卡中的数据,对这些数据按照网络协议进行解析,这就是抓包的基本原理。

但是中间网络节点,不受我们控制,所以基本无法实现抓包的,只能在客户端和服务端进行抓包。

通常我们监控本地网卡数据,如下图:

本地网络 指的是WIFI的路由,如果直接抓路由器的包还是比较麻烦的,因此我们会在 手机 和 本地路由 之间加一层 代理服务 ,这样只要抓代理服务的网络数据即可:

虽然在 手机 侧也可实现抓包,但和 本地路由 一样,抓包比较麻烦,如果不是没有办法,尽量还是不在手机侧抓包。但是有一种情况必须在手机端抓包,那就是在4G网络情况下:

4G网络状态下如何抓包,以及它的劣势,我们后面章节再细讲。

抓包实际上是分析网络协议的一种过程,尽管繁琐的细节劳动都让抓包工具做了,但我们还是需要了解下基础的网络协议,好帮助我们更好的分析问题。

首先需要了解下经典的OSI七层网络模型,以及每层的作用,其次对TCP、HTTP协议简单了解。

HTTPS是基于HTTP协议的一种改进,在 TCP之上 的会话层增加安全处理。对于应用层来说,HTTPS和HTTP没有什么不同,也就是说,HTTPS是保证网络传输的安全性,对业务数据无侵入。

简化理解大概是这个样子:

SSL和TLS是保证安全传输的协议,包括证书认证、加解密和数字签名。

项目中HTTPS的链路:

因此,客户端与后台,编写网络接口时,不需要关心SSL或TLS,按照HTTP协议处理即可。

既然HTTPS在网络传输是经过加密的,那么抓包抓到的数据就是密文,不经过解密是无法看到报文的。针对这个问题,如上图WIFI环境下设置代理的方式可以解决,具体思路是:

所以整个网络链路依然是HTTPS在传输,但代理服务自己可以获取到明文数据。

比较常用的抓包工具大概有4个,主要用作互补,配合使用基本所有平台、所有抓包需求都能满足:

需要说明的是,tcpdump可将数据保存成文件,直接用wireShark打开分析,针对后台或手机抓包使用起来十分方便。

几个工具间的使用关系:

为什么要真机抓包?必定是没有办法设置代理服务了,如4G网络情况下直接和移动基站链接,没法设置代理服务。凡是非4G网络状态下,都不建议真机抓包。

ios 5后,apple引入了RVI remote virtual interface的特性,它只需要将iOS设备使用USB数据线连接到mac上,然后使用rvictl工具以iOS设备的UDID为参数在Mac中建立一个虚拟网络接口rvi,就可以在mac设备上使用tcpdump,wireshark等工具对创建的接口进行抓包分析。

具体步骤:

android是linux系统,和后台一样可以使用tcpdump命令来抓包,但是需要root权限,因为一般手机系统不带有抓包命令 tcpdump ,需要自行安装。

安装tcpdump:

使用tcpdump:

这是就已经进入抓包状态,手机所有的网络请求都会被捕获,并保存到capture文件中。

导出capture文件:

原文: 网络抓包

抓包的原理

https://blog.csdn.net/bytxl/article/details/45397967

 

网络抓包的原理解析,在看网络收包的代码时,有个关键的结构体叫packet_type,这个结构体就是网络收包时对包的各种乱七八糟的操作函数的链表,这篇文章解析了该函数。  

https://blog.csdn.net/dean_gdp/article/details/34427609

下面这篇博客有两个使用AF_PACKET的例子:

https://www.cnblogs.com/Anker/p/6040873.html

例子中有recvmsg函数,对这类函数一直会有个疑问,如果信息太多满了咋办,其实内核中许多地方都遇到这个这个问题,perf的buffer缓冲区满了咋办,满了就是你用户态的事情了,你没有及时地从buffer中把数据给读出来,这个buffer要么被覆盖,要么多的部分被丢弃;

【测试:一个server,一个client,server不断给clinet发信息,把clinet端的buffer设计得非常小,看看client端的收包的结果】

 

以上是关于网络抓包原理的主要内容,如果未能解决你的问题,请参考以下文章

wireshark工具,抓包网络原理中,在交换机环境下端口镜像怎么实现,其功能是啥?

iOS系统网络抓包方法

抓包的原理

浅谈Web Debugging与网络抓包

winpcap抓包原理

Kali Linux --《网络安全》-- 使用 WireShark 对常用协议抓包并分析原理