linux – TCP_NEW_SYN_RECV的含义是什么?
发布时间:2020-12-13 23:29:04 所属栏目:Linux 来源:网络整理
导读:我知道TCP_SYN_RECV,但TCP_NEW_SYN_RECV的含义是什么?他们之间有什么区别? https://github.com/torvalds/linux/blob/5924bbecd0267d87c24110cbe2041b5075173a25/include/net/tcp_states.h enum { TCP_ESTABLISHED = 1,TCP_SYN_SENT,TCP_SYN_RECV,TCP_FIN_W
我知道TCP_SYN_RECV,但TCP_NEW_SYN_RECV的含义是什么?他们之间有什么区别?
https://github.com/torvalds/linux/blob/5924bbecd0267d87c24110cbe2041b5075173a25/include/net/tcp_states.h enum { TCP_ESTABLISHED = 1,TCP_SYN_SENT,TCP_SYN_RECV,TCP_FIN_WAIT1,TCP_FIN_WAIT2,TCP_TIME_WAIT,TCP_CLOSE,TCP_CLOSE_WAIT,TCP_LAST_ACK,TCP_LISTEN,TCP_CLOSING,/* Now a valid state */ TCP_NEW_SYN_RECV,TCP_MAX_STATES /* Leave at the end! */ }; 另外我看到以下代码“sk-> sk_state == TCP_NEW_SYN_RECV”,为什么不使用“sk-> sk_state == TCP_SYN_RECV”? https://github.com/torvalds/linux/blob/8fa3b6f9392bf6d90cb7b908e07bd90166639f0a/net/ipv4/tcp_ipv4.c#L16485 if (sk->sk_state == TCP_NEW_SYN_RECV) { struct request_sock *req = inet_reqsk(sk); struct sock *nsk; 解决方法
我发现了这个:
TCP_SYN_RECV state is currently used by fast open sockets. Initial TCP requests (the pseudo sockets created when a SYN is received) are not yet associated to a state. They are attached to their parent,and the parent is in TCP_LISTEN state. This commit adds TCP_NEW_SYN_RECV state,so that we can convert TCP stack to a different schem gradually. 来源,作者承诺:http://git.kernel.org/linus/10feb428a504 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |