socket是什么
linux中的一切皆文件, 即把struct 对象的数据写入文件,用文件来记录每个对象的数据
socket间的数据关系
每个客户端的socket都会在服务端映射一个socket对象, 这个socket对象放在serverSocket的链接队列中, 在linux内核中, 每个socket对象对应一个内核对象sock。
struct sock {// 其他成员...struct sk_buff_head sk_write_queue;struct sk_buff_head sk_receive_queue;wait_queue_head_t sk_sleep;struct request_sock_queue *sk_reqsk_queue;// 其他成员...
};
request_sock_queue(syn_table 和 accept_queue)
定义:request_sock_queue 是一个结构体,用于管理 syn_table 和 accept_queue。
作用:
syn_table:用于存储处于 SYN-RECV 状态的连接请求。
accept_queue:用于存储已经完成三次握手的连接请求。
每个客户端单独维护一个socket对象在服务端。如下图: