af_packet_arp程序 AF_INET和AF_PACKET区别

AF_PACKET_ARP程序讨论了AF_INET和AF_PACKET在处理网络数据包时的不同。AF_INET无法获取以太头部信息,而AF_PACKET(原始套接字)允许用户在设备驱动级别接收或发送原始数据包,实现用户空间的协议模块。原始套接字允许访问链路层数据,可以用于创建链路层的数据操作,如密码窃取器。使用原始套接字时,需要注意内核如何处理不同协议类型的数据包,以及bind和connect对其接收数据的影响。
摘要由CSDN通过智能技术生成

http://blog.csdn.net/kzm2008/article/details/5372834

man 7 ip

man 7

packet

Packet  sockets  are

used to receive or send raw packets at the device driver (OSI Layer

2) level. They allow the

user to implement protocol modules in user space on top of the

physical layer. 用AF_INET,上层代码无法获取以太头部信息。

1.原始套接字(raw

socket)1.1

原始套接字工作原理与规则原始套接字是一个特殊的套接字类型,它的创建方式跟TCP/UDP创建方法几乎是一摸一样,例如,通过

CODE:

[Copy to clipboard]

int sockfd;

sockfd =

socktet(AF_INET, SOCK_RAW, IPPROTO_ICMP);

这两句程序你就可以创建一个原始套接字.然而这种类型套接字的功能却与TCP或者UDP类型套接字的功能有很大的不同:TCP/UDP类型的套接字只能够访问传输层以及传输层以上的数据,因为当IP层把数据传递给传输层时,下层的数据包头已经被丢掉了.而原始套接字却可以访问传输层以下的数据,,所以使用

raw套接字你可以实现上至应用层的数据操作,也可以实现下至链路层的数据操作.

比如:通过

CODE:

[Copy to clipboard]

sock = socket(PF_PACKET, SOCK_RAW, htons(ETH_P_IP))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值