原理上只有 raw_socket 应该设置网口,正常的 socket 会根据路由来选择出口。
如果需要指定网口,需要设置 SO_BINDTODEVICE,步骤如下:
填写结构体 struct ifreq ifr 的 ifr.ifr_name 为指定的网口,如 "eth1"
setsockopt(sd, SOL_SOCKET, SO_BINDTODEVICE, (void *)&ifr, sizeof(ifr))
另外,如果只是需要进行测试,不防直接构包,用 libpcap 等库来进行发送。而不要用系统的 socket 库来发送。
方法/步骤
1、进入linux,使用“ cat /etc/services ”命令,可以查看所有服务默认的端口列表信息。
2、使用“netstat”命令,查看正在连接的端口【连接】列表信息。
3、使用“nestat -a”命令,查看所有服务端口【监听、连接】列表信息。
4、套接字的种类除了t(TCP)、u(UDP)之外,还有w(RAW)、x(UNIX)套接字。
5、使用" netstat -ap"查看所有服务端口和对应的程序名称。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)