linux中提供了PF_PACKET接口可以操作链路层的数据
来源:互联网 发布:美橙互联域名如何备案 编辑:程序博客网 时间:2024/05/18 13:26
http://blog.sina.com.cn/s/blog_82f2fc28010132og.html
sock_raw(注意一定要在root下使用)原始套接字编程可以接收到本机网卡上的数据帧或者数据包,对于监听网络的流量和分析是很有作用的.一共可以有3种方式创建这种socket
1.socket(AF_INET, SOCK_RAW, IPPROTO_TCP|IPPROTO_UDP|IPPROTO_ICMP)发送接收ip数据包,不能用IPPROTO_IP,因为如果是用了IPPROTO_IP,系统根本就不知道该用什么协议。
2.socket(PF_PACKET, SOCK_RAW, htons(ETH_P_IP|ETH_P_ARP|ETH_P_ALL))发送接收以太网数据帧
3.socket(AF_INET, SOCK_PACKET, htons(ETH_P_IP|ETH_P_ARP|ETH_P_ALL))过时了,不要用啊
1.介绍
在linux中提供了PF_PACKET接口可以操作链路层的数据。
2.使用方法
定义一个pf_packet = socket(PF_SOCKET, SOCK_RAW, htons(ETH_P_RARP));
就可以利用函数sendto和recefrom来读取和发送链路层的数据包了(当然,发送ARP包,上面第三个参数要变为 htons(ETH_P_ARP),或者IP的包为ETH_P_IP,可查看文件/usr/include/linux/if_ether.h文件看到所有支持的协议)。
3.在使用SOCK_RAW, SOCK_DGRAM和SOCK_PACKET的区别
在socket的第一个参数使用PF_PACKET的时候,上述三种socket的类型都可以使用。但是有区别。
(1)使用SOCK_RAW发送的数据必须包含链路层的协议头,接受得到的数据包,包含链路层协议头。而使用SOCK_DGRAM则都不含链路层的协议头。
(2)SOCK_PACKET也是可以使用的,但是已经废弃,以后不保证还能支持,不推荐使用。
(3)在使用SOCK_RAW或SOCK_DGRAM和SOCK_PACKET时,在sendto和recvfrom中使用的地址类型不同,前两者使用sockaddr_ll类型的地址,而后者使用sockaddr类型的地址。
(4)如socket的第一个参数使用PF_INET,第二个参数使用SOCK_RAW,则可以得到原始的IP包。
- linux中提供了PF_PACKET接口可以操作链路层的数据
- Spring框架中提供了它自己的标签库,可以和相关的组建相结合,可以提供页面表单组件、错误信息的数据绑定等功能。
- 在sharepoint中提供了一个Webservice,通过该接口可以直接得到当前用户的基本信息.
- kernel中 PF_PACKET 的流程
- socket与File类似,都是 对底层操作抽象后提供的可以调用的接口。
- linux实用PF_PACKET接收原始链路层数据包
- linux实用PF_PACKET接收原始链路层数据包
- 想在自己的android应用中获得当天的天气情况,这该怎么做呢?不用担心。中国国家气象局提供了获取所在城市天气预报信息接口。通过这个接口,我们就可以获取天气信息了。
- 短信平台(提供数据接口,可以与任何软件扩展)
- Android中提供的HttpURLConnection和HttpClient接口可以用来开发HTTP程序
- python中的shelve模块,可以提供一些简单的数据操作
- IBatis.Net中提供了方便的日志处理,可以输出sql语句等调试信息。
- Java -- JNI提供的操作接口
- linux中通用GPIO接口的操作
- linux中通用GPIO接口的操作
- linux中通用GPIO接口的操作
- 提供两个可以免费测试使用的问service接口
- 为了简化操作,SQL Server 2008中为表分区提供了相关的操作
- python取得IMAP服务器邮件
- android notification 的总结分析
- Lotus 迁移到Exchange 之 Lotus 与Exchange 路由设置!
- iOS 使用Quartz 2D画虚线
- 设计一个堆栈,函数min、push 以及pop 的时间复杂度都是O(1)
- linux中提供了PF_PACKET接口可以操作链路层的数据
- 大话数据结构开篇:时间复杂度和空间复杂度
- UVA 10236 The Fibonacci Primes
- make传递给Makefile参数
- 才高行厚的hibernate(3)---对象状态&常用接口
- 常用算法设计技巧
- struts整合spring
- Cheapest Palindrome 简单dp
- MYSQL子查询的五种形式