获取linux链路层数据
int main()
{
int sockfd = socket(PF_PACKET, SOCK_RAW, htons(ETH_P_IP));
if (sockfd < 0)
{
perror("err:");
printf("sockfd err\n");
}
printf("sockfd:%d\n", sockfd);
close(sockfd);
return;
}
为什么socket创建失败,失败提示:err:: Operation not permitted
[解决办法]
没root权限?
[解决办法]
SOCK_RAW 要root
[解决办法]
使用SOCK_RAW绕开了传输层,直接到网络层获取数据,需要ROOT权限才能访问。