TCP/IP
stone-jin
这个作者很懒,什么都没留下…
展开
-
Linux协议栈accept和syn队列问题
环境:Client 通过tcp连接server,server端只是listen,但是不调用accept。通过netstat -ant查看两端的连接情况。server端listen,不调用accept。client一直去connect server。问题:运行一段时间后,为什么server端ESTABLISHED连接的个数基本是固定的129个,但是client端的ESTABLIS转载 2015-12-29 11:29:15 · 630 阅读 · 0 评论 -
TCP连接中的TIME_WAI状态
1. TIME_WAIT状态的必要性上述四次握手描述的是客户端主动关闭,服务器被动关闭的流程,其一般过程如下:1)客户端发送FIN保文,进入FIN_WAIT_1状态2)服务器端收到FIN报文段,发送ACK表示确定,进入CLOSE_WAIT状态。3)客户端收到FIN的确认保文端,进入FIN_WAIT_2状态。4)服务器端发送FIN保文段,进入LAST_ACK状态。5)客户端收转载 2015-12-29 13:26:32 · 909 阅读 · 0 评论 -
网络编程socket之listen函数
listen函数使用主动连接套接口变成被连接套接口,使得一个进程可以接受其他进程的请求,从而成为一个服务器进程。在TCP服务器编程中listen函数把进程变为一个服务器,并指定相应的套接字变成被动连接。listen函数在一般在调用bind之后--调用accept之前调用,它的函数原型是:#include int listen(int sockfd, int backlog)返回:0转载 2015-12-29 19:14:49 · 608 阅读 · 0 评论 -
EPOLL事件之EPOLLRDHUP
在对系统问题进行排查时,我发现了一个奇怪的现象:明明是对方断开连接,系统却报告一个查询失败的错误,但从用户角度来看请求的结果正常返回,没有任何问题。对这个现象深入分析后发现,这是一个基于epoll的连接池实现上的问题,或者说是特性。首先解释一下导致这个现象的原因。在使用epoll时,对端正常断开连接(调用close()),在服务器端会触发一个epoll事件。在低于2.6.17版本的内核转载 2015-12-31 00:31:55 · 5751 阅读 · 0 评论 -
windows的select函数
select的大概思想:将多个套接字放在一个集合里,然后统一检查这些套接字的状态(可读、可写、异常等),调用select后,会更新这些套接字的状态,然后做判断,如果套接字可读,就执行read操作。这样就巧妙地避免了阻塞,达到同时处理多个连接的目的。当然如果没有事件发生,select会一直阻塞,如果不想一直让它等待,想去处理其它事情,可以设置一个最大的等待时间。int sel转载 2015-12-23 11:02:01 · 6433 阅读 · 0 评论