(1)当socket函数创建一个套接字时,它被假定为一个主动套接字;listen函数把一个未连接的套接字转换成一个被动套接字;
(2)listen函数的第二个参数规定了内核应该为相应套接字排队的最大连接数
#include <sys/socket.h> int listen(int sockfd, int backlog); 返回:成功返回0,出错则为-1
(3)内核为任何一个给定的监听套接字维护两个队列:
I. 未完成队列,每个SYN分节对应其中的一项;这些套接字处于SYN_RCVD状态;
II. 已完成队列,这些套接字处于ESTABLISTEND状态
(4)TCP三路握手和监听套接字的两个队列