关于利用原始套接字进行网络嗅探的问题
Windows内核调试
关于利用原始套接字进行网络嗅探的问题
zyq8709
2011-10-04, 08:22 上午
在看原始套接字进行sniffer的源码时发现,准备工作完成后,程序只是将数据recv到一个足够大的缓冲区,然后就以缓冲区中的起始地址作为数据包起点解析数据包结构。那这里有一个问题就是能保证一次recv的数据恰好是一个完整的IP包结构吗?如果套接字缓冲区中填满了数据,那不就有可能一次取到recv缓冲区的不是完整的结构,而是将其中一个数据包从中间断开了,造成下次的起点错误吗?那下次解析不就出错了吗?或者是一次取走了多个数据包而只是对第一个进行解析,那么不就是漏掉了数据吗?请各位老师指教一二,多谢!