美文网首页计算机基础
tcp/ip协议listen函数中backlog参数的含义

tcp/ip协议listen函数中backlog参数的含义

作者: 随风_d6a2 | 来源:发表于2021-06-20 02:33 被阅读0次

listen函数的定义如下所示:

#include <sys/socket.h>
 
int  accept(int sockfd, struct sockaddr * restrict addr, socklen_t *restrict len);

返回值:若成功则返回文件(套接字)描述符,若出错则返回-1

int listen(int sockfd, int backlog);返回值:若成功则返回0;若出错则返回-1
之前看书的时候对listen函数的参数backlog不是很理解,今天看到一篇很不错的文章里面刚好有对这个的讲解,所以现在记录下自己的理解。
对于每一个listen socket,内核都会为维护两个队列:

SYN队列:此队列维护着那些已收到了客户端SYN网络分组,并发出了SYN/ACK网络分组,等待完成三路握手的连接,socket的状态是SYN_RCVD;
ACCEPT队列:此队列包含了那些已经完成三路握手的连接,socket的状态是ESTABLISHED。
backlog参数历史上被定义为上面两个队列的大小之和,而Berkely实现中的backlog值为上面两队列之和再乘以1.5。
调用accept函数正确返回之后,就表示TCP三次握手已完成,SYN队列中相应的分组会被加到ACCEPT队列中。

#include <sys/socket.h>
 
int  accept( int sockfd, struct sockaddr * restrict addr, socklen_t  *restrict len);

返回值:若成功则返回文件(套接字)描述符,若出错则返回-1
当客户端的第一个SYN到达的时候,TCP会在未完成队列中增加一个新的记录然后回复给客户端三路握手中的第二个分节(服务端的SYN和针对客户端的ACK),这条记录会在未完成队列中一直存在,直到三路握手中的最后一个分节到达,或者直到超时(Berkeley时间将这个超时定义为75秒)。
如果当客户端SYN到达的时候队列已满,TCP将会忽略后续到达的SYN,但是不会给客户端发送RST信息,因为此时允许客户端重传SYN分节,如果返回错误信息,那么客户端将无法分清到底是服务端对应端口上没有相应应用程序还是服务端对应端口上队列已满这两种情况。
对于应用服务器来说,如果ACCEPT队列中有已经建立好的TCP连接,却没有及时把它取出来,这样,一旦导致两个队列满之后,就会使客户端不能再建立新连接,引发严重问题。所以,一些服务器会使用一个主进程来做accept获取连接,而让其他工作进程来进行其他数据处理等工作,这样可以防止不能及时的去accept获取连接。

————————————————
原文链接:https://blog.csdn.net/wan_hust/article/details/38499743

相关文章

  • Socket TCP相关

    TCP 连接3次握手,断开连接4次握手图示 tcp/ip协议listen函数中backlog参数的含义 1、cli...

  • tcp/ip协议listen函数中backlog参数的含义

    listen函数的定义如下所示: 返回值:若成功则返回文件(套接字)描述符,若出错则返回-1 int listen...

  • listen 函数中参数 backlog

    我们该如何理解 listen 函数中的参数 backlog?如果 backlog 表示的是未完成连接队列的大小,那...

  • TCP协议中的backlog参数

    backlog参数的含义 TCP建立连接是要进行三次握手,但是否完成三次握手后,服务器就处理(accept)呢? ...

  • TCP Listen backlog

    水平有限,如有纰漏,敬请指正! TCP服务 创建TCP服务的四个基本步骤: socket – 创建socket套接...

  • TCP/IP分层模型

    TCP/IP的含义:是指TCP/IP协议族群,只是利用IP进行通信时所必须用到的协议族群的统称。包括应用协议(HT...

  • 无标题文章

    背景 TCP协议增强器,是指将TCP/IP协议栈中传输层的TCP协议进行增强,使之符合一些复杂网络环境的参数要求(...

  • 概述TCP/IP协议及其三握四挥

    概述TCP/IP协议及其三握四挥 TCP/IP基础 TCP/IP具体含义 从字面意义上讲,有人可能会认为 TCP/...

  • TCP/IP协议(壹)

    TPC/IP含义 TCP/IP 为网际协议族IP或ICMP、TCP或UDP、TELNET或FTP、以及HTTP都属...

  • 图解HTTP笔记

    TCP/IP协议族:一般认为TCP/IP指的是在IP协议通信过程中,使用到的协议族的统称 TCP/IP协议族分为五...

网友评论

    本文标题:tcp/ip协议listen函数中backlog参数的含义

    本文链接:https://www.haomeiwen.com/subject/vmjjyltx.html