socket套接字选项

本文写作背景基于对多网卡的配置,要求实现多个网卡同时上网,并且能指定
仅针对linux下的socket选项进行整理分析。

SOL_SOCKET	1

SO_DEBUG:启用套接字调试,只允许具备CAP_NET_ADMIN权限或有效进程ID为0的进程使用
SO_REUSEADDR:
    <1>允许启动一个监听服务器并捆绑其众所周知端口,即使以前建立的将此端口用做他们的本地端口的连接仍存在。
    <2>允许在同一端口上启动同一服务器的多个实例,只要每个实例捆绑一个不同的本地IP地址即可。
    <3>允许单个进程捆绑同一端口到多个套接口上,只要每个捆绑指定不同的本地IP地址即可。
    <4>允许完全重复的捆绑,一般来说,这个特性仅支持多播的系统,而且只对UDP套接口。
SO_TYPE:获取套接字类型(诸如SOCK_STREAM)
SO_ERROR:获取并清除未决的套接字错误。只读选项,返回一个整数值。
SO_DONTROUTE:不通过网关转发,直接发送给直接连接的主机。
SO_BROADCAST	6

SO_SNDBUF	7
SO_RCVBUF	8
SO_SNDBUFFORCE	32
SO_RCVBUFFORCE	33 
    设置接收和发送区缓存大小,文件位于/proc/sys/net/core/目录下的wmem_default,wmem_max,rmem_default,rmem_max。*FORCE的区别在于可以修改最大值的限制。
    
SO_KEEPALIVE:在面向连接的套接字上启用keep-alive消息发送
SO_OOBINLINE:如果启用此选项,带外数据直接放置在数据流中;否则,带外数据只能以MSG_OOB调用recv传递
SO_NO_CHECK	11
SO_PRIORITY	12
SO_LINGER:如果启用,close或shutdown调用将阻塞直到所有排队的消息被成功发送或者超时。
SO_BSDCOMPAT	14
SO_REUSEPORT	15

SO_PASSCRED	16
SO_PEERCRED	17

SO_RCVLOWAT	
SO_SNDLOWAT	
    指定套接层传递数据到协议(SO_SNDLOWAT)或用户接收(SO_RCVLOWAT)时,缓冲区至少应该有多少字节数。两个值都初始化为1。SO_SNDLOWAT在Linux下是不可修改的。SO_RCVLOWAT从Linux 2.4开始可以修改。现行的select和poll系统调用并不理会Linux上的SO_RCVLOWAT设置,哪怕只有1字节可用也会标记套接字可读,接着的读取会被阻塞,直到SO_RCVLOWAT字节数可用。 

SO_RCVTIMEO	
SO_SNDTIMEO	
    指定接收或发送报告错误之前的超时值。参数是一个timeval结构。如果一个输入或输出函数在这段时间内阻塞,数据也已经被发送或接收,则其返回值将是传输的数据量;如果没有传输任何数据而超时,则其返回-1并设置EAGAIN或EWOULDBLOCK,就好像套接字是非阻塞的一样。如果超时值设置为0,则操作将一直阻塞。超时只是针对执行套接字I/O的系统调用如read,recvmsg,send,sendmsg有效,对select,poll,epoll_wait等则无效。


SO_SECURITY_AUTHENTICATION		22
SO_SECURITY_ENCRYPTION_TRANSPORT	23
SO_SECURITY_ENCRYPTION_NETWORK		24

SO_BINDTODEVICE:
     将套接字绑定到一个特定设备,通过接口名称诸如“eth0”指定。如果名称是一个空字符串或长度为0,则移除设备。传递的选项是一个可变长度的,空字符结尾的本地接口名称字符串,最大长度是IFNAMSIZ。如果一个套接字绑定到一个接口,则它只能处理特定接口上接收的包。注意,只能在几种套接字类型上工作,特定于AF_INET。


SO_ATTACH_FILTER	26
SO_DETACH_FILTER	27
SO_GET_FILTER		SO_ATTACH_FILTER

SO_PEERNAME		28
SO_TIMESTAMP		29
SCM_TIMESTAMP		SO_TIMESTAMP

SO_ACCEPTCONN:只能用于getsockopt。0代表套接字不是监听套接字,1则代表是。

SO_PEERSEC		31
SO_PASSSEC		34
SO_TIMESTAMPNS		35
SCM_TIMESTAMPNS		SO_TIMESTAMPNS

SO_MARK			36

SO_TIMESTAMPING		37
SCM_TIMESTAMPING	SO_TIMESTAMPING

SO_PROTOCOL		38
SO_DOMAIN		39

SO_RXQ_OVFL             40

SO_WIFI_STATUS		41
SCM_WIFI_STATUS	SO_WIFI_STATUS
SO_PEEK_OFF		42


SO_NOFCS		

SO_LOCK_FILTER	

SO_SELECT_ERR_QUEUE	

SO_BUSY_POLL		

SO_MAX_PACING_RATE	

SO_BPF_EXTENSIONS	

SO_INCOMING_CPU	
SO_ATTACH_BPF	
SO_DETACH_BPF		SO_DETACH_FILTER
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

酷咪哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值