网络数据包的获取与libpcap应用
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
载波监听
指在以太网中的每个站点都具有同等的权利, 指在以太网中的每个站点都具有同等的权利,在传输自己 的数据时,首先监听信道是否空闲,如果空闲, 的数据时,首先监听信道是否空闲,如果空闲,就传输自 己的数据,如果信道被占用,就等待信道空闲。 己的数据,如果信道被占用,就等待信道空闲。 冲突检测 为了防止发生两个站点同时监测到网络没有被使用时而产 生冲突。以太网采用广播机制 广播机制, 生冲突。以太网采用广播机制,所有与网络连接的工作站 都可以看到网络上传递的数据。 都可以看到网络上传递的数据。
数据包接收过程
二、以太网
以太网最初是由XEROX公司研制 并且在 公司研制,并且在 以太网最初是由 公司研制 并且在1980年由数据 年由数据 设备公司DEC(DIGIAL EQUIPMENT CORPOR ATION)、 设备公司 、 INTEL公司和 公司和XEROX公司共同使之规范成形。后来它被作 公司共同使之规范成形。 公司和 公司共同使之规范成形 802.3标准为电气与电子工程师协会 IEEE)所采纳。 标准为电气与电子工程师协会( 为802.3标准为电气与电子工程师协会(IEEE)所采纳。 以太网是最为流行的网络传输系统之一。 以太网是最为流行的网络传输系统之一。以太网的基本 特征是采用一种称为载波监听多路访问 冲突检测CSMA/CD 载波监听多路访问/冲突检测 特征是采用一种称为载波监听多路访问 冲突检测 (Carrier Sense Multiple Access/ Collision Detection)的 的 共享访问方案。 共享访问方案。
TCP/IP与以太网 TCP/IP与以太网
以太网和TCP/IP可以说是相辅相成的。 可以说是相辅相成的。 以太网和 可以说是相辅相成的 以太网在一二层提供物理上的连线,使用48位的 以太网在一二层提供物理上的连线,使用 位的MAC地址 地址 位的 TCP/IP工作在上层,使用 位的 地址 工作在上层, 位的IP地址 工作在上层 使用32位的 两者间使用ARP和RARP协议进行相互转换。 协议进行相互转换。 两者间使用 和 协议进行相互转换
数据包捕获流程
一、libpcap的数据类型定义 libpcap的数据类型定义
struct pcap_addr:网卡地址描述 网卡地址描述 { pcap_addr * next; sockaddr * addr; sockaddr * netmask; sockaddr *broadaddr; sockaddr *dstaddr; }; pcap_addr * next; 如果非空,指向链表中一个元素的指针;空表示链表中的最后一个元素。 如果非空,指向链表中一个元素的指针;空表示链表中的最后一个元素。 sockaddr * addr; 指向包含一个地址的sockaddr的结构的指针。 的结构的指针。 指向包含一个地址的 的结构的指针 sockaddr * netmask; 如果非空,指向包含相对于addr指向的地址的一个网络掩码的结构。 指向的地址的一个网络掩码的结构。 如果非空,指向包含相对于 指向的地址的一个网络掩码的结构 sockaddr * broadaddr; 如果非空,指向包含相对于addr指向的地址的一个广播地址,如果网络不支 指向的地址的一个广播地址, 如果非空,指向包含相对于 指向的地址的一个广播地址 持广播可能为空。 持广播可能为空。 sockaddr * dstaddr; 如果非空,指向一个相对于addr指向的源地址的目的地址,如果网络不支持 指向的源地址的目的地址, 如果非空,指向一个相对于 指向的源地址的目的地址 点对点通讯,则为空。 点对点通讯,则为空。
网卡来说一般有四种接收模式: 网卡来说一般有四种接收模式: 广播方式:该模式下的网卡能够接收网络中的广播信息。 ① 广播方式:该模式下的网卡能够接收网络中的广播信息。 组播方式:设置在该模式下的网卡能够接收组播数据。 ② 组播方式:设置在该模式下的网卡能够接收组播数据。 直接方式:在这种模式下,只有目的网卡才能接收该数据。 ③ 直接方式:在这种模式下,只有目的网卡才能接收该数据。 混杂模式:在这种模式下的网卡能够接收一切通过它的数据, ④ 混杂模式:在这种模式下的网卡能够接收一切通过它的数据, 而不管该数据是否是传给它的。 而不管该数据是否是传给它的。 总结一下 首先,我们知道了在以太网中是基于广播方式传送数据的, 广播方式传送数据的 首先,我们知道了在以太网中是基于广播方式传送数据的, 也就是说,所有的物理信号都要经过我的机器, 也就是说,所有的物理信号都要经过我的机器, 其次,广播模式下,网卡的一种模式叫混杂模式 其次,广播模式下,网卡的一种模式叫混杂模式 ),在这种模式下工作的网卡能够接收到一 (promiscuous),在这种模式下工作的网卡能够接收到一 ), 切通过它的数据,而不管实际上数据的目的地址是不是它。 切通过它的数据,而不管实际上数据的目的地址是不是它。 再次, 通过设置交换机监听端口。监听端口带宽要大于 大于所监 再次, 通过设置交换机监听端口。监听端口带宽要大于所监 听的端口带宽,防止丢包。 听的端口带宽,防止丢包。
CSMA/CD过程
以太网的广播通讯
在以太网中,所有的通讯都是广播的, 在以太网中,所有的通讯都是广播的, 通常在同一个网段的所有网络接口都可以访问在物理媒 体上传输的所有数据 网卡的MAC地址 地址 网卡的 每一个网络接口都有一个唯一的硬件地址 唯一的硬件地址, 每一个网络接口都有一个唯一的硬件地址,这个硬件地 址也就是网卡的MAC地址 。 址也就是网卡的 地址 大多数系统使用48比特的地址 比特的地址, 大多数系统使用 比特的地址,这个地址用来表示网络 中的每一个设备 一般来说每一块网卡上的MAC地址都是不同的 一般来说每一块网卡上的 地址都是不同的 每个网卡厂家得到一段地址, 每个网卡厂家得到一段地址,然后用这段地址分配给其 生产的每个网卡一个地址。 生产的每个网卡一个地址。
2 网络数据包捕获技术
基于socket的网络的编程方法 基于socket的网络的编程方法 数据链路提供者接口(DLPI) 数据链路提供者接口(DLPI) 旁路处理机制 伯克利数据包过滤器(BPF) Lipcap 伯克利数据包过滤器(BPF) 零拷贝技术……… 零拷贝技术………
libnet 提供的接口函数主要实现和封装了数据 包的构造和发送过程。 包的构造和发送过程。 libpcap 提供的接口函数主要实现和封装了与 数据包截获有关的过程。 数据包截获有关的过程。 libnids 提供的接口函数主要实现了开发网络 入侵监测系统所必须的一些结构框架。 入侵监测系统所必须的一些结构框架。 libicmp 等相对较为简单,它封装的是 等相对较为简单,它封装的是ICMP数 数 据包的主要处理过程(构造 发送、接收等)。 构造、 据包的主要处理过程 构造、发送、接收等 。
struct pcap_file_header { bpf_u_int32 magic; u_short version_major; u_short version_minor; bpf_int32 thiszone; /* gmt to local correction */ bpf_u_int32 sigfigs; /* accuracy of timestamps */ bpf_u_int32 snaplen; /* max length saved portion of each pkt */ bpf_u_int32 linktype; /* data link type (LINKTYPE_*) */ }; u_short version_major; Libpcap的主版本号。 的主版本号。 的主版本号 u_shart version_minor; Libpcap的从版本号。 的从版本号。 的从版本号 bpf_u_int32 sigfigs; 时间戳描述。 时间戳描述。 bpf_u_int32 snaplen; 保存的每个pkt的分片号的最大值。 的分片号的最大值。 保存的每个 的分片号的最大值 bpf_u_int32 linktype; 数据链的类型。 数据链的类型。 细节说明: 细节说明: libpcap dump文件头; 文件头; 文件头 libpcap dump文件中的第一个记录包含了一些标志的保存值,这些标志在打 文件中的第一个记录包含了一些标志的保存值, 文件中的第一个记录包含了一些标志的保存值 印阶段用到。这儿的很多域都是32位的 位的int,所以compilers不用进行转化;这 不用进行转化; 印阶段用到。这儿的很多域都是 位的 ,所以 不用进行转化 些文件需要具有跨层次的可交换性。 些文件需要具有跨层次的可交换性。 无论如何不要改变结构的层次(包括仅仅改变这个结构中域的长度); 无论如何不要改变结构的层次(包括仅仅改变这个结构中域的长度);
2 网络数据包捕获技术
不同的操作系统实现的底层包捕获机制可能是不一 样的,但从形式上看大同小异。 样的,但从形式上看大同小异。数据包常规的传输路 径依次为网卡接口、设备驱动层、数据链路层、IP层、 径依次为网卡接口、设备驱动层、数据链路层、 层 网卡接口 传输层、最后到达应用程序。而包捕获机制是在数据 传输层、最后到达应用程序。而包捕获机制是在数据 应用程序 链路层增加一个旁路处理, 链路层增加一个旁路处理,对发送和接收到的数据包 增加一个旁路处理 过滤/缓冲等相关处理,最后直接传递到应用程序。 缓冲等相关处理 做过滤 缓冲等相关处理,最后直接传递到应用程序。
网络数据获取方法
1 网络信息获取
网络信息获取是指通过物理线路接入到 实际的网络中, 实际的网络中,实现获取该网络当前传 输的所有信息, 输的所有信息,即获取当前传输的数据 并根据信息的源主机、目标主机、 包,并根据信息的源主机、目标主机、 服务协议和端口等信息简单过滤掉不关 心的垃圾数据,然后提交给上层应用程 心的垃圾数据,然后提交给上层应用程 进行进一步处理。 序进行进一步处理。
一、TCPห้องสมุดไป่ตู้IP体系结构 TCP/IP体系结构
---------------------------------------------------| SMTP | DNS | HTTP | FTP | TELNET| ---------------------------------------------------| TCP | UDP | ---------------------------------------------------| IP | ICMP | ARP RARP | --------------------------------------------------| IEEE 802 以太网 SLIP/PPP PDN etc| --------------------------------------------------应用层 传输层 网络层 数据链路层
在正常的情况下,网络接口应该只响应这样的两种数据帧: 在正常的情况下,网络接口应该只响应这样的两种数据帧: 1.与自己硬件地址相匹配的数据帧。 与自己硬件地址相匹配的数据帧。 与自己硬件地址相匹配的数据帧 2.发向所有机器的广播数据帧。 发向所有机器的广播数据帧。 发向所有机器的广播数据帧 数据的收发是由网卡来完成的 网卡接收到传输来的数据, 网卡接收到传输来的数据,网卡内的单片程序接收数据 帧的目的MAC地址,根据计算机上的网卡驱动程序设置 地址, 帧的目的 地址 的接收模式判断该不该接收。 的接收模式判断该不该接收。 认为该接收就接收后产生中断信号通知CPU 中断信号通知 认为该接收就接收后产生中断信号通知 认为不该接收就丢掉不管, 认为不该接收就丢掉不管,所以不该接收的数据网卡就 截断了,计算机根本就不知道. 截断了,计算机根本就不知道 CPU得到中断信号产生中断,操作系统就根据网卡的驱 得到中断信号产生中断, 得到中断信号产生中断 动程序设置的网卡中断程序地址调用驱动程序接收数据 动程序设置的网卡中断程序地址调用驱动程序接收数据 驱动程序接收数据后放入信号堆栈让操作系统处理。 驱动程序接收数据后放入信号堆栈让操作系统处理。