两者在收包时最大的区别是,raw socket因为是在ip_local_deliver_finish()中收包,所以只能收路由后需要入站的数据包,而packet socket是在netif_receive_skb()中收包,在网卡打开混杂模式的情况下,可以收所有到达本机网卡的包。
两者在发包时最大的区别是,raw socket设置IP_HDEINCL选项后可以在用户空间构造IP报头,而packet socket则在SOCK_RAW的情况下可以在用户空间构造以太网帧头。
两者在收包时最大的区别是,raw socket因为是在ip_local_deliver_finish()中收包,所以只能收路由后需要入站的数据包,而packet socket是在netif_receive_skb()中收包,在网卡打开混杂模式的情况下,可以收所有到达本机网卡的包。
两者在发包时最大的区别是,raw socket设置IP_HDEINCL选项后可以在用户空间构造IP报头,而packet socket则在SOCK_RAW的情况下可以在用户空间构造以太网帧头。