码迷,mamicode.com
首页 > 其他好文 > 详细

tcp nonblock connection rst

时间:2014-06-26 17:51:36      阅读:248      评论:0      收藏:0      [点我收藏+]

标签:blog   http   com   2014   art   linux   

客户端(>5w)异步connect连接到server端,server端listen backlog设置为1024,发现存在部分客户端建立连接后,收到服务端的rst包。

先看下tcp监听套接字维护的两个队列(来自Unix网络编程)

bubuko.com,布布扣

测试模拟抓包如下:

解释:异步connect过快,导致server端listen已完成连接队列满了,后面接着来的connect请求放到未完成连接对列(SYN--->SYN,ACK, 等待客户端的ACK)中,当客户端的握手包ACK到来时,由于已完成连接队列已满,无法继续接受连接,因此丢弃该ACK,而未完成队列一段时间后仍为收到ACK,会重传SYN,ACK包,这就出现了下图所示的多次重传,默认重传5次(可通过sysct -a | grep synack查看和设置。)5次重传后,将该未完成连接从未完成连接队列移出。而客户端看来连接正常,接着发送速度,收到服务端的RST包。

bubuko.com,布布扣

详解介绍请看:http://blog.csdn.net/justlinux2010/article/details/8604676

 

 

 

tcp nonblock connection rst,布布扣,bubuko.com

tcp nonblock connection rst

标签:blog   http   com   2014   art   linux   

原文地址:http://www.cnblogs.com/good90/p/3808697.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!