クライアントで connect() を呼び出します。クライアントは SYN_SENT 状態に入り、SYN を送信します。ここで、ACK を含まない SYN を取得するため、クライアントは SYN_RCVD 状態に入ります。
この時点で connect() は戻りますか? 技術的には、ソケットで send() および recv() を呼び出すのに十分な情報があります。RFC 自体は、SYN_RCVD 状態のソケットで SEND を呼び出すと、次のように述べています。
SYN-RECEIVED STATE
Queue the data for transmission after entering ESTABLISHED state.
そして、RECEIVE を呼び出すと、次のようになります。
LISTEN STATE
SYN-SENT STATE
SYN-RECEIVED STATE
Queue for processing after entering ESTABLISHED state. If there
is no room to queue this request, respond with "error:
insufficient resources".
したがって、私の質問は次のとおりです: SYN を取得した後に connect() が返され、recv() の呼び出しがブロックされるか、接続が完全に確立されるまで connect() 自体がブロックされますか?