TCP的request_sock与sock
生活随笔
收集整理的這篇文章主要介紹了
TCP的request_sock与sock
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
request_sock
TCP服務(wù)端在接收到SYN報(bào)文時(shí),調(diào)用conn_request回調(diào)處理,最終調(diào)用了tcp_conn_request函數(shù),其分配一個(gè)request_sock(tcp_request_sock)結(jié)構(gòu)體。request_sock之后用于TCP的三次握手,與正常的sock結(jié)構(gòu)相比,request_sock僅包含一個(gè)相同的sock_common結(jié)構(gòu):
struct request_sock {struct sock_common __req_common;... } struct inet_request_sock {struct request_sock req; } struct tcp_request_sock {struct inet_request_sock req; };int tcp_rcv_state_process(struct sock *sk, struct sk_buff *skb) {switch (sk->sk_state) {case TCP_LISTEN:// 回調(diào)函數(shù):tcp_v4_conn_request -> tcp_conn_request -> inet_reqsk_alloc// 分配一個(gè)struct tcp_request_sock結(jié)構(gòu)體,// 但是返回時(shí),轉(zhuǎn)換為嵌套在里面的request_sock結(jié)構(gòu)體。acceptable = icsk->icsk_af_ops->conn_request(sk, skb) >= 0;} }big sock
TCP服務(wù)端在三次握手完成之后,分配一個(gè)完整的新big sock(struct tcp_sock),此子sock是從監(jiān)聽的套接口clone而來。tcp_v4_syn_recv_sock函數(shù)完成分配和初始化工作:
內(nèi)核版本
linux-4.14.4
總結(jié)
以上是生活随笔為你收集整理的TCP的request_sock与sock的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Vue入门之vue框架简介库和框架的区别
- 下一篇: CHD的impala实现hive和hba