Linux用户态下利用原始套接字接收和发送自定义链路帧
2012-03-26 10:28
330 查看
Linux下对链路层的监听的方法和一些点评:
1.socket(AF_INET, SOCK_PACKET, ETH_P_ALL) //旧方法发送接收以太网数据帧
2.socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL)) //新方法发送接收以太网数据帧
3.libnet // 网络嗅探工具集
4…… //BSD 等其他平台的数据包捕获工具
Linux利用原始套接字发送自定义链路帧的方法和一些点评:
1.libpcap // 默认链路帧最长为1514(ETH_LEN_MAX) ,若要发送jumbo frame(巨型帧),需重定义ETH_MAX_LEN。发送接口经过层层封装,效率可能会低。还有评论说不便于移植。
2.sendto() // 此接口的第1个参数为套接字描述符,且此描述符必须由旧方法socket(PF_PACKET, SOCK_PACKET, htons(ETH_P_ALL))建立,新方法会失败(提示 invalid argument ,具体什么原因我也不清楚。)
3…… // Linux 下发送原始链路帧的方法我还没有接触到。
/*
*
*Written by Zuocheng Liu
*/
1.socket(AF_INET, SOCK_PACKET, ETH_P_ALL) //旧方法发送接收以太网数据帧
2.socket(PF_PACKET, SOCK_RAW, htons(ETH_P_ALL)) //新方法发送接收以太网数据帧
3.libnet // 网络嗅探工具集
4…… //BSD 等其他平台的数据包捕获工具
Linux利用原始套接字发送自定义链路帧的方法和一些点评:
1.libpcap // 默认链路帧最长为1514(ETH_LEN_MAX) ,若要发送jumbo frame(巨型帧),需重定义ETH_MAX_LEN。发送接口经过层层封装,效率可能会低。还有评论说不便于移植。
2.sendto() // 此接口的第1个参数为套接字描述符,且此描述符必须由旧方法socket(PF_PACKET, SOCK_PACKET, htons(ETH_P_ALL))建立,新方法会失败(提示 invalid argument ,具体什么原因我也不清楚。)
3…… // Linux 下发送原始链路帧的方法我还没有接触到。
/*
*
*Written by Zuocheng Liu
*/
相关文章推荐
- Linux 原始套接字发送接收示例
- linux原始套接字(3)-构造IP_TCP发送与接收
- Linux下使用RAW SOCKET原始套接字构造UDP原始数据帧广播到局域网,在局域网的另一台计算机上显示UDP发送的信息
- 原始套接字收发MAC数据包完整历程--发送Codes & 接收Codes
- Linux 网络编程——原始套接字实例:发送 UDP 数据包
- linux原始套接字(1)-arp请求与接收
- linux原始套接字-发送ARP报文
- Linux利用Esmtp 选择邮件服务器发送邮件(解决手机接收乱码) 推荐
- linux原始套接字(2)-icmp请求与接收
- linux原始套接字(1)-arp请求与接收
- linux原始套接字-arp请求与接收
- linux原始套接字-发送ICMP报文
- linux原始套接字(2)-icmp请求与接收
- linux原始套接字(1)-arp请求与接收
- linux原始套接字(1)-arp请求与接收
- Linux下使用RAW SOCKET原始套接字构造UDP原始数据帧广播到局域网,在局域网的另一台计算机上显示UDP发送的信息
- Linux 网络编程——原始套接字实例:发送 UDP 数据包
- 【Linux网络编程】原始套接字实例:发送 UDP 数据包
- [linux]网络报文发送、接收调用链
- Linux下发送与接收组播数据(socket编程)