计算机网络
计算机网络学习笔记
从一而终
这个作者很懒,什么都没留下…
展开
-
简说linux TCPIP 11讲 TIME_WAIT
简说linux TCPIP 11讲TIME_WAIT一个数据包在网络中传输的最长时间是 2MSL(发送 MSL + 等待确认ACK MSL)当主动关闭方接收到被动方的FIN+ACK后发出确认ACK后进入TIME_WAIT状态为什么会有TIME_WAIT状态?从TCP可靠性讲,主动关闭方必须确认被动关闭方收到最后的ACK。所以必须有一个TIME_WAIT的等待时间如果最后的ACK被动关闭方没有收到,那么被动关闭方将重新发送FIN+ACK,主动关闭方将重新进入TIME_WAIT状态...原创 2022-05-19 09:45:18 · 571 阅读 · 0 评论 -
TCP选项之TCP_CORK和TCP_NODELAY的作用和意义
TCP_CORK与TCP_NODELAY这两个选项是互斥的,打开或者关闭TCP的nagle算法,下面用场景来解释典型的webserver向客户端的应答,应用层代码实现流程粗略来说,一般如下所示:if(条件1){向buffer_last_modified填充协议内容“Last-Modified: Sat, 04 May 2012 05:28:58 GMT”;send(buffer_last_modified);}if(条件2){向buffer_expires填充协议内容“Expires: M转载 2020-07-20 23:21:14 · 461 阅读 · 0 评论 -
TCP为什么三次握手
先搞一个简单的生活中的例子打电话:模拟场景:client要打电话给server在一个不可靠的信道上建立一个可靠的通话,从理论上来讲至少需要四步。原创 2021-12-02 09:27:31 · 2620 阅读 · 0 评论 -
Socket描述符选项[SOL_SOCKET]
Socket描述符选项[SOL_SOCKET] #include <sys/socket.h> int setsockopt( int socket, int level, int option_name, const void *option_value, size_t option_len); 第一个参数socket是套接字描述符。第二个参数level是被设...转载 2020-07-20 23:35:48 · 551 阅读 · 0 评论 -
struct linger 用法
Linux下tcp连接断开的时候调用close()函数,有优雅断开和强制断开两种方式。那么如何设置断开连接的方式呢?是通过设置socket描述符一个linger结构体属性。linger结构体数据结构如下:#include <arpa/inet.h>struct linger { int l_onoff; int l_linger;};三种断开方式:1. l_onoff = 0; l_linger忽略close()立刻返回,底层会将未发送完的数据发送..转载 2020-11-04 16:34:22 · 481 阅读 · 0 评论