TCP头部
TCP头部的选项部分是为了TCP适应复杂的网络环境和更好地服务于应用层而设计的。TCP头部中除了TCP选项的部分为固定20字节,TCP选项部分最长40字节,所以TCP的最长头部可达60字节。
1. SO_REUSEADDR
作用:
一般来说,一个端口释放会后等待连分钟左右才能再被使用,而使用SO_REUSEADDR则可以让端口释放后立即就可以再被使用。
使用对象:
SO_REUSEADDR用于对TCP套接字处于TIME_WAIT状态下的socket,才可以重复绑定使用。在所有TCP服务器中,在调用bind之前设置SO_REUSEADDR套接字选项。
2. TCP_NODELAY/TCP_CHORK
Nagle算法:
用于改进愚蠢窗口症候群:有效载荷利用率极其低下的情况(如:传送一个只拥有1Byte有效数据的数据包,却要花费40Byte包头的额外开销),如果发送端欲多次发送包含少量字符的数据包(小包),则发送端会先将第一个小包发送出去,而将后面到达的少量字符数据都缓存起来而不立即发送,直到收到接收端对前一个数据包报文段的ACK确认为止,或当前字符属于紧急数据,或者积攒到了一定数量的数据等多种情况才将其组成一个较大的数据包发送出去。
作用:
TCP_NODELAY和TCP_