深度剖析WinPcap之(九)——数据包的发送过程
2009-10-17 00:00:00 来源:WEB开发网NPF允许把原始数据包发送到网络上,而且针对不同的应用提供了下列四种发送方式:
n应用软件每次发送一个数据包一次;
n应用软件每次发送一个数据包大于一次,次数预先设定;
n应用软件每次发送一个数据包队列,并根据时间戳发送各数据包;
n应用软件每次发送一个数据包队列,不根据时间戳,而是尽所能得快速发送各数据包;
数据包被发送到网络时,NPF并不对数据包作任何协议封装,因此应用程序必须构建每个数据包的不同协议头。一般情况下应用程序不需要生成FCS,它通常由网络适配器硬件计算,并在发送到网络前自动添加到每个数据包的尾部。
图9-1函数调用关系图
1.1 wpcap.dll导出的相应函数接口
首先,wpcap.dll为了完成数据包发送的任务,提供了下列函数:
int pcap_sendpacket(pcap_t *p,u_char * buf,int size);
pcap_send_queue* pcap_sendqueue_alloc(u_int memsize);
void pcap_sendqueue_destroy(pcap_send_queue *queue);
int pcap_sendqueue_queue(pcap_send_queue *queue,const struct pcap_pkthdr *pkt_header, const u_char *pkt_data);
u_int pcap_sendqueue_transmit(pcap_t *p,pcap_send_queue *queue,int sync);
使用 pcap_sendpacket函数发送单个原始数据包一次。其中参数p是用来发送数据包的一个pcap_t类型描述符(可通过pcap_open函数所获得的描述符),参数buf包含所要发送数据包的数据(包含各种协议头),参数size是buf所指缓冲区的大小,也就是所要发送数据包的大小。无需包含MAC CRC,因为它被网络接口的驱动程序计算并附加。该函数如果成功就返回0,否则返回-1。
- ››深度解释攻击linux服务器的四种级别
- ››剖析java.util.concurrent锁
- ››剖析Android智能手机系统的更多功能
- ››深度分析地方社区网站的内容定位
- ››剖析Windows Azure Platform框架与组成
- ››剖析使用 ObjectOutputStream 可能引起的内存泄漏...
- ››剖析EWebEditor编辑器漏洞攻击案例
- ››剖析开源云:构建 Infrastructure as a Service 块...
- ››深度剖析 Android 和 iPhone OS
- ››深度分析:HTML5能否成为Flash终结者
- ››深度挖掘 更多Windows 7快捷模式
- ››深度挖掘 Windows 7快捷模式
更多精彩
赞助商链接