linux nagle tcp,在linux编程中,以下哪个TCP的套接字选项与nagle算

通用套接字选项

1)SO_BROADCAST 本选项开启或禁止进程发送广播消息的能力,只有数据报套接字支持广播,并且还必须是在支持广播消息的网络上

2)SO_DEBUG 本选项仅由TCP支持,当TCP开启该选项时,内核将为TCP在该套接字发送和接收的所有分组保留详细跟踪信息,这些信息保存在内核的某个环形缓冲区中,并可用trpt程序进行检查

3)SO_DONTROUTE 本选项规定外出的分组将绕过底层协议的正常路由机制,路由守护进程(routed和gated)经常使用本选项来绕过路由表

4)SO_ERROR 当一个套接字上发生错误时,源自Berkeley的内核中的协议模块将该套接字的明文so_error的变量设为标准的Unix_Exxx值中的一个,我们称它为该套接字的待处理错误,内核能够以下面两种方式之一立即通知该错误:

a)如果进程阻塞在对该套接字的select调用上,那么无论是检查可读条件还是可写条件,select均返回并设置其中一个或所有两个条件;

b)如果进程使用信号驱动式I/O模型,那就给进程或进程组产生一个SIGIO信号

5)SO_KEEPALIVE 设置后,如果2小时内无数据交换,TCP就会自动发送一个保活探测分节(keep-alive probe)

6)SO_LINGER 本选项指定close函数对面向连接协议如何操作,默认操作是close立即返回,但是如果有数据残留在套接字发送缓冲区中,系统将试着把这些数据发送给对端

7)SO_RCVBUF和SO_SNDBUF 这两个套接字选项允许我们改变接收缓冲区和发送缓冲区默认大小

当设置接收缓冲区大小时,函数调用顺序很重要,这时因为TCP的窗口规模选项是在建立连接时使用SYN分节与对端互换得到的。对于客户,这意味着SO_RCVBUF选项必须在connect之前设置,对于服务器,这意味着该选项必须在调用listen之前给监控套接字设置,给已连接的套接字设置该选项对于可能存在的窗口规模没有任何影响。TCP套接字缓冲区大小至少应该是相应连接MSS的四倍,为避免潜在的缓冲区空间浪费,TCP套接字缓冲区大小还必须是相应连接的MSS值的偶数倍。

8)SO_REUSEADDR 该选项起到以下四个功用:

a)允许启动一个监听服务器并捆绑其众所周知端口,即使以前建立的将该端口用作他们的本地端口的连接仍然存在。这个条件通常是这样碰到的:

I)启动一个监听服务器;

II)连接请求到达,派生一个子进程来处理客户;

III)监听服务器终止,但子进程继续为现有连接上的客户提供服务;

IV)重启监听服务器;

b)允许同一端口上启动同一服务器的多个实例,只要每个实例捆绑一个不同的本地IP即可。

c)允许单个进程捆绑同一端口到多个套接字上,只有每次捆绑指定不同的本地IP地址即可。

d)允许完全重复的捆绑:当一个IP地址和端口已经绑定到某个套接字时,如果传输协议支持,同样的IP地址和端口还可以绑定到另外一个套接字。一般来说仅UDP套接字支持该特性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值