【发布时间】:2017-05-11 15:49:58
【问题描述】:
将 IP 数据包(从用户空间)发送到 tun 设备和使用原始套接字有什么区别?
为了通过用户空间隧道传输 IP 数据包。为什么我要使用一种方法而不是另一种方法?
原始套接字:
s = socket(AF_INET, SOCK_RAW, IPPROTO_RAW);
send(s, ip_pkt, len, 0);
调整设备:
struct ifreq ifr;
fd = open("/dev/net/tun", O_RDWR);
ifr.ifr_flags = IFF_TUN;
ioctl(fd, TUNSETIFF, (void *) &ifr)
send(s, ip_pkt, len, 0);
【问题讨论】:
标签: linux sockets network-programming kernel tun