表1 套接字选项列表 表中SOL_PACKET 选项等级用于 AF_PACKET 类型套接字的选项,这些选项将在下一篇文章中 详细介绍:
int err,sock_reuse=1; err=setsockopt(sockfd,SOL_SOCKET,SO_REUSEADDR,(char *)&sock_reuse,sizeof(sock_reuse)); if(err!=0){ printf("套接字可重用设置失败!/n"); exit(1); } my_addr.sin_family=AF_INET; my_addr.sin_port=htons(SERVPORT); my_addr.sin_addr.s_addr=INADDR_ANY; bzer...
_, err := C.setsockopt(h.fd, C.SOL_PACKET, C.PACKET_FANOUT, unsafe.Pointer(&arg), C.socklen_t(unsafe.Sizeof(arg)))returnerr } 开发者ID:ldnvnbl,项目名称:gopacket,代码行数:14,代码来源:afpacket.go 示例3: setTPacketVersion ▲点赞 3▼ // setTPacketVersion asks the kernel to set ...
除非遇到特别声明的协议,一般你可以用ETH_P_IP来处理IP的一组协议(TCP,UDP,ICMP,raw IP等等)因为它们容易受到一些很严重的安全问题的牵连(比如你可以伪造一个MAC地址),所以只有具有root权限才可以使用PF_PACKET-familysocket.这也就是为什么只有具有root权限后才能运行嗅探器的原因!
The PF_PACKET协议簇支持两个稍微有点不同的SOCKET类型,SOCK_DGRAM和SOCK_RAW。 前者让内核处理添加或者去除以太网报文头部工作,而后者则让应用程序对以太网报文头部 有完全的控制!在SOCKET调用中的协议类型必须符合/usr/include/linux/if_ether.h 中定义的以太网IDs中的一个,除非遇到特别声明的协议,一般你可以用ET...
setsockopt, TCP_NODELAY and Packet Aggregation I一般情况下,系统瓶颈由延时决定,而不是吞吐量。然而 TCP 套接字默认开启了所谓的"nagle算法",会延缓发包时间,以便和后面(需要发送)的网络包合并在一起发送。这个算法主要用于减少网络包的数量,从而减少TCP报文头的吞吐量开销。 锁和阻塞操作历来都是后台编程的忌讳,...
int rc; int s; int option_value; struct linger l; int setsockopt(int s, int level, int option_name, char *option_value, int option_len); ⋮ /* I want out of band data in the normal input queue */ option_value = 1; rc = setsockopt(s, SOL_SOCKET, SO_OOBINLINE, (char *) ...
有三个参数: level:选项定义的层次。支持SOL_SOCKET、IPPROTO_TCP、IPPROTO_IP和IPPROTO_IPV6。 optname:需设置的选项。 value:设置选项的值。
对于SOL_BINDTODEVICE的总结如下: (1) 对于TCP套接口、UDP套接口、RAW套接口,可以通过SO_BINDTODEVICE套接口选项将套接口绑定到指定的网络接口上。绑定之后,套接口的所有数据包收发都只经过指定的网络接口; (2) 对于PF_PACKET类型的套接口,不能通过SO_BINDTODEVICE绑定到指定的网络接口上,而要通过bind(2)来与特...
level= SOL_SOCKET ValueTypeDescription SO_BROADCASTBOOLAllows transmission of broadcast messages on the socket. SO_DONTLINGERBOOLDoes not block close waiting for unsent data to be sent. Setting this option is equivalent to setting SO_LINGER with l_onoff set to zero. ...