(4.4)listen()队列剖析、阻塞非阻塞、同步异步

一:listen()队列剖析

    //listen():监听端口,用在 TCP连接中的服务器端 角色;
    //listen()函数调用格式: 
    //int listen(int sockfd, int backlog); 
    //要理解好backlog这个参数,我们需要先谈一谈 “监听套接字 队列”的话题;

 

//(1.1)监听套接字的队列


    //对于一个调用listen()进行监听的套接字,操作系统会给这个套接字 维护两个队列;
    //a)未完成连接队列 【保存连接用的】
         //当客户端 发送tcp连接三次握手的第一次【syn包】给服务器的时候,服务器就会在未完成队列中创建一个 跟这个               syn包对应的一项,
         //其实,我们可以把这项看成是一个半连接【因为连接还没建立起来呢】,这个半连接的状态会从LISTEN变成                     SYN_RCVD状态,同时给客户端返回第二次握手包【syn,ack】
         //这个时候,其实服务器是在等待完成第三次握手;

    //b)已完成连接队列 【保存连接用的】
    //当第三次握手完成了,这个连接就变成了ESTABLISHED状态,每个已经完成三次握手的客户端 都放在这个队列中作为一项;
    //backlog曾经的含义:已完成队列和未完成队列里边条目之和 不能超过 backlog;

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值