TCP listen()函数内幕
函数原型:
1 int listen(int sockfd,int backlog);
第二个参数规定了内核应该为相应套接字排队的最大连接个数,
为了理解其中的backlog 参数,我们必须认识到内核为任何一个给定的监听套接字维护着两个队列!
(1):未完成连接队列。每个这样的syn分节对应其中一项:已由某个客户发出到达服务器,而服务器正在等待完成相应的TCP三鹿握手的过程,这些套接字处于SYN_RCVD状态。
(2):已完成连接队列。每个已经完成的三路握手的客户对应其中的一员,这些套接字处于ESTABLISHED状态。
当来自客户的syn到达的时候,TCP在未完成连接队列创建一个新项,当三次握手全部正常完成的时候,该项就从未完成队列离开,移到已连接队列的队尾,当进程下次调用accept的时候,已完成连接队列的对头将返回给调用进程,如果队列为空,那么进程将被投入睡眠,直到有新的数据项到来才唤醒他。
对于backlog的最大值的问题,其值是可以修改的,指定一个很大的甚至大于内核所支持的值也是可以接受的,不过,内核会把该值设置成为自己能够支持的最大值。而不返回错误。
转载于:https://www.cnblogs.com/coversky/p/7847009.html
TCP listen()函数内幕相关推荐
- LwIP tcp/ip socket编程listen函数分析
函数原型为: [cpp] view plain copy int listen(int sockfd, int backlog); <span style="font-family ...
- C语言网络编程:listen函数详解
文章目录 前言 函数描述 代码实例 TCP服务器为什么调用listen 前言 根据TCP编程模型中我们可以看到之前的socket和bind接口是tcp服务器在为接收客户端的链接做准备,保证tcp的面向 ...
- 几个经典的TCP通信函数
前言 在TCP通信中要使用到几个非常经典的函数( 点这里参考一个关于它们作用的形象比方 ),本文将对这几个函数进行一个简短的使用说明. socket函数 函数作用:创建一个网际字节流套接字 包含头文件 ...
- listen()函数中backlog参数分析
背景知识 Unix网络编程描述如下: 总结 0. accept()函数不参与三次握手,而只负责从已建立连接队列中取出一个连接和sockfd进行绑定: 1. backlog参数决定了未完成队列和已完成队 ...
- C语言 socket listen()函数(socket()函数创建的socket(套接字描述符)默认是一个主动类型的,listen函数将socket变为被动类型的,等待客户的连接请求)
摘要:listen函数使用主动连接套接口变为被连接套接口,使得一个进程可以接受其它进程的请求,从而成为一个服务器进程.在TCP服务器编程中listen函数把进程变为一个服务器,并指定相应的套接字变为被 ...
- linux网络编程之Listen函数参数介绍
1.listen()函数介绍 listen函数使用主动连接套接口变为被连接套接口,使得一个进程可以接受其它进程的请求,从而成为一个服务器进程.在TCP服务器编程中listen函数把进程变为一个服务器, ...
- 网络编程之 listen()函数的使用与三次握手的理解
listen()函数 在进入我们的函数讲解前大家再回顾一下编写服务器端的流程 服务器端:socket()-->bind( )-->listen()-->accept()-->r ...
- listen()函数中的SOMAXCONN含义
导读:在linux中,/proc/sys/net/core/somaxconn这个参数,linux中内核的一个不错的参数somaxconn 看下其解析: 对于一个TCP连接,Server与Client ...
- listen函数的第二个参数_signal(SIGPIPE,?SIG_IGN)listen函数中backlog参数分析
signal(SIGPIPE, SIG_IGN); TCP是全双工的信道, 可以看作两条单工信道, TCP连接两端的两个端点各负责一条. 当对端调用close时, 虽然本意是关闭整个两条信道, 但本端 ...
最新文章
- 带有BERT模型代码的BILSTM+BERT+CRF
- 日期格式化为yyyymmdd_大厂日期时间处理最佳实践
- IDOC实例, Inbound IDOC
- Scala分支控制 if-else之单分支的使用
- 正则表达式及shell
- CentOS/RHEL6.5中使用WordPress快速建站
- Mware HA实战攻略之五VMwareHA测试验收
- zxing二维码的生成与解码(C#)
- cameraraw预设_169个PS预设 ACR一键调出胶片效果 城市黑金效果 复古胶片色调
- 8 | Spatial-based GNN/convolution模型之GAT(受欢迎)
- ios开发--企业帐号发布
- au计算机内录音乐,win10 audition怎么内录_win10 audition如何录制声音
- 微信小程序uniapp实现小图标转成SVN代码
- ACC测试理论--google软件测试之道
- maven complie报错汇总
- mysql 是否支持Unix系统_在UNIX系统下安装MySQL
- 项目02_TalkingData Mobile User Demographics R代码
- -1-1 java 基础语法 java关键字 java 注释 常量 语句 运算符 函数 数组定义
- SIMD——MMX指令的溢出处理
- CpG ODN丨艾美捷ODN 1982 (synthetic)参数说明