七、通过listen系统调用查看三次握手四次挥手

一、基本说明

(一)listen参数说明

TCP网络编程我们详细讲解了如何利用系统调用实现一个TCP服务器,客户端。今天我们主要说一下listen这个系统调用,它特殊的地方在于第二个参数:

【backlog参数:】

  • 表示内核监听队列的最大长度,监听队列的长度如果超过backLog,服务器将不受理新的客户连接,客户端也将收到ECONNREFUSED错误信息。backlog参数的典型值是5。
  • 在内核版本2.2之前的Linux中backlog参数是指所有处于半连接状态(未完成三次握手的SYN_RCVD),和完全连接状态(完成三次握手的ESTABLISHED)的socket的上限
  • 但自内核版本2.2之后,它只表示处于完全连接状态的socket的上限,处于半连接状态的socket的上限由/pro/sys/net/ipv4/tcp_max_syn_backlog内核参数定义。

【backlog参数的作用:】

  • 监听队列中完整连接的上限通常比backlog值略大,可能多1个,也可能多两个,Linux上完整连接最多为(backlog+1)个,即如果backlog的值为5,那么在监听队列中,处于ESTABLISHED的客户端完全连接状态的连接有6个,如果还有其他连接,当6个满了后,服务端都会处于SYN_RCVD半连接状态。
  • 服务端通过listen调用来被动接受连接,我们把执行过listen调用,处于LISTEN状态的套接字称为监听socket;所有处于ESTABLISHED状态的socket则称为连接socket,表示和服务器完成三次握手的服务端。

所以listen第二个参数的大小决定了一个服务器和几个客户端完成三次握手,决定了客户端处于三次握手的哪个阶段。

(二)netstat命令详解</

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值