第七章 监听连接请求
7.1 内核的监听函数
struct listen_sock { //专用于监听的结构. 记录监听队列信息
......
};
struct request_sock { //连接请求
};
struct {...} icsk_ack; //连接过程中的"应答"目的.
sys_socketcall()-->sys_listen()-->inet_listen()-->inet_csk_listen_start()-->reqsk_quene_alloc()
-->inet_csk_delack_init()
reqsk_quene_alloc()为接收队列分配对应连接国数量的监听结构
inet_csk_delack_init()调用memset()将icsk_ack结构内容清零.
7.2 内核的监听队列
sys_socketcall()-->sys_listen()-->inet_listen()-->inet_csk_listen_start()-->inet_hash()-->__inet_hash()-->__inet_hash_nolisten()-->__sk_add_node()
-->inet_listen_wlock()
__inet_hash_nolisten()将sock结构链入确定连接的哈希桶中.
__inet_hash()处理一个struct sock结构数据. 将sock结构链入到TCP的绑定哈希结构tcp_hashinfo中.
__sk_add_node()将服务器的sock结构链入到监听队列
阅读(470) | 评论(0) | 转发(0) |