TCP协议随笔

走远了吗. 提交于 2020-01-28 11:31:05

相关知识点记录:

listen中blog参数介绍

listen_blog介绍

  /* limit the "backlog" parameter to fit in an u8_t */
  backlog = LWIP_MIN(LWIP_MAX(backlog, 0), 0xff);
  err = netconn_listen_with_backlog(sock->conn, (u8_t)backlog);
1、其backlog是一个建议值,用于指定内部的队列大小,以控制同时建立的连接请求数量。
2、针对控制连接这个需求,有两种方法实现这个backlog:
(1)单一队列来控制连接。队列中既包含了SYN_RCVD的状态,也包含了ESTABLISHED状态。accept只处理后面一种状态。如果三次握手中的ACK到来,则会在队列中直接改其状态。显然,这时backlog为这一队列的长度。
(2)两个单独队列来控制。两种状态分别实现单独的队列。显然这种情况下,两个队列都必须有明确的大小限制,backlog只能限制其中一个。

tcp状态迁移图

tcpip协议栈相关知识链接:

lwip socket探秘之listen
lwip socket探秘之bind
lwip socket探秘之socket创建
lwip socket探秘之accept
lwip socket探秘之recv

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!