PF_PACKET sockets(Packet Socket):基于 Device Driver(设备驱动),支持对底层数据包的捕获和注入,常用于网络安全、网络监测等场景,例如:网络嗅探、协议分析、数据包过滤等。 PF_NETLINK sockets(Netlink Socket):支持 Kernel Space 和 User Space 之间的通信,常用于网络管理和网络监测等场景,例如:获取内核中的网络信...
1.socket(PF_INET, SOCK_RAW, IPPROTO_TCP|IPPROTO_UDP|IPPROTO_ICMP)发送接收ip数据包 2.socket(PF_PACKET, SOCK_RAW, htons(ETH_P_IP|ETH_P_ARP|ETH_P_ALL))发送接收以太网数据帧 3.socket(PF_PACKET, SOCK_DGRAM, htons(ETH_P_IP|ETH_P_ARP|ETH_P_ALL))发送接收以太网数据帧(不包括以太网头部...
在linux中提供了PF_PACKET接口可以操作链路层的数据。 定义一个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/...
struct arp_msg arp; sock_send = socket ( PF_PACKET , SOCK_PACKET , htons ( ETH_P_ARP) ) ; if ( sock_send == - 1) { perror ( "raw_socket" ) ; return - 1; } if ( setsockopt_broadcast( sock_send ) == - 1) { perror ( "cannot enable bcast on raw socket" ) ; goto r...
type:指定Socket类型。常用的socket类型有SOCK_STREAM、SOCK_DGRAM、SOCK_RAW、SOCK_PACKET、SOCK_SEQPACKET等。流式Socket(SOCK_STREAM)是一种面向连接的Socket,针对于面向连接的TCP服务应用。数据报式Socket(SOCK_DGRAM)是一种无连接的Socket,对应于无连接的 UDP服务应用。
sock = socket(PF_PACKET, SOCK_PACKET, ETH_P_IP); memset(&addr, 0x00, sizeof(addr)); addr.sa_family = PF_PACKET; strncpy(addr.sa_data, "eth0", sizeof(addr.sa_data)); bind(sock, &addr, sizeof(addr)); 针对SO_BINDTODEVICE套接口选项,man(7)手册有如下说明: ...
pck_fd = socket(PF_PACKET, int socket_type, int protocol);其中socket_type有两种类型:一种为SOCK_RAW;另一种SOCK_DGRAM。protocol:其送交的上层的协议号(如IP:0x0800),当其为hotns(ETH_P_ALL)(宏定义为0)时表示收发所有协议。(2)SOCK_RAW:它包含了MAC层头部信息的原始分组。当收到一个 SOCK...
协议簇是网络层的协议。一种是处理IP层即其上的数据,通过指定socket第一个参数为AF_INET来创建这种套接字。有两种原始套接字。另一种是处理数据链路层即其上的数据,通过指定socket第一个参数为AF_PACKET来创建这种套接字。 PF_PACKET支持SOCK_DGRAM和SOCK_RAW两种socket类型。
AF_INET和PF_INET效果相同。 l套接字类型: SOCK_STREAM、SOCK_DGRAM、SOCK_RAW、SOCK_PACKET、SOCK_SEQPACKET等 常见的2个类型的套接字: 流套接字和数据包套接字 流套接字(在某些方面类似域标准的输入/输出流)提供的是一个有序,可靠,双向字节流的连接。 提供面向连接的服务。
SOCK_RDM: 提供可靠的数据包连接。 SOCK_PACKET: 与网络驱动程序直接通信。 参数protocol用来指定socket所使用的传输协议编号。这一参数通常不具体设置,一般设置为0即可。 参考:https://baike.baidu.com/item/socket%28%29 上面的解释要是结合CocoaAsyncSocket的源码再去理解,会理解的更透彻 ...