国内最专业的IT技术学习网

UI设计

当前位置:主页 > UI设计 >

关于TCP全连接队列和半连接队列

发布时间:2019/09/16标签:   队列    点击量:

原标题:关于TCP全连接队列和半连接队列
在TCP的三次握手中存在着两个行列、backlog、tcp_abort_on_overflow等观点常识点。罕见的衔接效劳异样有许多,如Connection refused等成绩。经过对这些常识的懂得有助于联合一些排查手腕无效地处理一些出产上呈现的衔接效劳异样成绩。上面将对这些停止探讨剖析。1、TCP三次握手握手进程: 第一次:client发送syn到server停止握手 第二次:server收到syn后复兴syn+ack给client同时效劳端将相干信息放在半衔接行列中。 第三次:client收到syn+ack后复兴server一个ack,表现收到了server的syn+ack,server收到client的ack后将更具差别的情形停止差别的处置(这与tcp_abort_on_overflow参数和accept queue全衔接行列能否已满无关)三次握手中Socket状况罗列: LISTEN:侦听来自远方TCP端口的衔接恳求 SYN-SENT:在发送衔接恳求后等候婚配的衔接恳求 SYN-RECEIVED:在收到和发送一个衔接恳求后等候对衔接恳求确实认 ESTABLISHED:代表一个翻开的衔接,数据能够传递给用户2、全衔接行列和半衔接行列关于TCP全连接队列和半连接队列在握手阶段存在两个行列: 全衔接行列(accept queue) 半衔接行列(syns queue)剖析:当第一次握手(client客户真个SYN达到server效劳端时)TCP会在未实现衔接行列中创立一个新项,这一项会始终保存在未实现衔接行列中直到第三次握手(客户对效劳器SYN的ACK)停止为止。假如三次握手全体畸形实现,该项则会从未实现衔接行列移到已实现衔接行列的队尾。当过程挪用accept()时,已实现衔接行列中的队头项将前往给过程。3、第三次握手时server详细的处置方法关于TCP全连接队列和半连接队列场景1:当全衔接未满当server收到client的ack后会先推断全衔接行列accept queue能否已满,假如行列未满则从半衔接行列拿出相干信息寄存入全衔接行列中,以后效劳端accept()处置此恳求。场景2:当全衔接已满且tcp_abort_on_overflow = 0server会抛弃client 发过去的ack。以后隔一段时光server会重发握手第二步的syn+ack包给client,假如客户端衔接始终列队不下等待超时则会报超时异样。场景3:全衔接已满且tcp_abort_on_overflow = 1时server会发送一个reset包给client,表现废止这个握手进程和这个衔接(客户端会报connection reset by peer异样)4、对于backlogbacklog表现全衔接行列(已衔接未处置行列)的巨细,该值默许为50。关于TCP全连接队列和半连接队列当全衔接行列满时则会依据tcp_abort_on_overflow的值做出响应的处置方法//Linux检查tcp_abort_on_overflow值cat/proc/sys/net/ipv4/tcp_abort_on_overflow

版权信息Copyright © 银河官网 版权所有    ICP备案编号:鲁ICP备09013610号