tcp/ip协议listen函数中backlog参数的含义
来源:互联网 发布:富士康科技 知乎 编辑:程序博客网 时间:2024/05/21 10:32
要明白backlog参数的含义,我们必须明白对于一个listening socket,kernel维护者两个队列:
1.一个未完成连接的队列,此队列维护着那些已收到了客户端SYN分节信息,等待完成三路握手的连接,socket的状态是SYN_RCVD
2.一个已完成的连接的队列,此队列包含了那些已经完成三路握手的连接,socket的状态是ESTABLISHED
backlog参数历史上被定义为上面两个队列的大小之和
Berkely实现中的backlog值为上面两队列之和再乘以1.5
当客户端的第一个SYN到达的时候,TCP会在未完成队列中增加一个新的记录然后回复给客户端三路握手中的第二个分节(服务端的SYN和针对客户端的ACK),这条记录会在未完成队列中一直存在,直到三路握手中的最后一个分节到达,或者直到超时(Berkeley时间将这个超时定义为75秒)
如果当客户端SYN到达的时候队列已满,TCP将会忽略后续到达的SYN,但是不会给客户端发送RST信息,因为此时允许客户端重传SYN分节,如果返回错误信息,那么客户端将无法分清到底是服务端对应端口上没有相应应用程序还是服务端对应端口上队列已满这两种情况
1.一个未完成连接的队列,此队列维护着那些已收到了客户端SYN分节信息,等待完成三路握手的连接,socket的状态是SYN_RCVD
2.一个已完成的连接的队列,此队列包含了那些已经完成三路握手的连接,socket的状态是ESTABLISHED
backlog参数历史上被定义为上面两个队列的大小之和
Berkely实现中的backlog值为上面两队列之和再乘以1.5
当客户端的第一个SYN到达的时候,TCP会在未完成队列中增加一个新的记录然后回复给客户端三路握手中的第二个分节(服务端的SYN和针对客户端的ACK),这条记录会在未完成队列中一直存在,直到三路握手中的最后一个分节到达,或者直到超时(Berkeley时间将这个超时定义为75秒)
如果当客户端SYN到达的时候队列已满,TCP将会忽略后续到达的SYN,但是不会给客户端发送RST信息,因为此时允许客户端重传SYN分节,如果返回错误信息,那么客户端将无法分清到底是服务端对应端口上没有相应应用程序还是服务端对应端口上队列已满这两种情况
- tcp/ip协议listen函数中backlog参数的含义
- tcp/ip协议listen函数中backlog参数的含义
- tcp/ip协议listen函数中backlog参数的含义
- tcp/ip协议listen函数中backlog参数的含义
- tcp/ip协议listen函数中的backlog参数的含义
- Linux中listen函数的backlog参数含义
- listen函数中backlog的含义
- listen函数中backlog参数的意义
- TCP/IP编程之listen函数backlog参数详解(linux)
- Linux中TCP listen()的backlog参数详解
- Linux中TCP listen()的backlog参数详解
- listen函数backlog参数
- listen()函数中backlog参数分析
- listen()函数中backlog参数分析
- listen()函数中backlog参数分析
- listen()函数中backlog参数分析
- listen()函数中backlog参数分析
- listen()函数中backlog参数分析
- 给IT新人的15点建议:苦逼程序员的辛酸反省与总结
- 分行柜面人员管理系统
- 过滤器与拦截器的区别
- mysql触发器
- 湖南麒麟面试 2014
- tcp/ip协议listen函数中backlog参数的含义
- JS-运动框架
- 程序与 如何与企业对面交谈待遇之道
- 如何包装你的实验结果
- 40个GitHub上最受欢迎的iOS开源项目(一)
- 【Android病毒分析报告】 - KorBankDemon “吸金幽灵”打劫银行
- C++ vector
- 40个GitHub上最受欢迎的iOS开源项目(二)
- 解决Graphical Layout不显示