커널 TCP/IP 구현 - 승인 대기열 정보

커널 TCP/IP 구현 - 승인 대기열 정보

저는 최근 Linux 커널(버전 4.4)의 TCP/IP 구현에 대해 배우고 있는데 수락 대기열에 대해 매우 혼란스럽습니다. 나는 struct inet_connection_sock다음과 같은 대기열이 있다는 것을 알고 있습니다 .대기열 수락:

struct inet_connection_sock {
    ...
    /* @icsk_accept_queue:     FIFO of established children */
    struct request_sock_queue icsk_accept_queue;
    ...
}

그리고 그 안에 멤버가 있는데 qlen, 대기열 길이를 나타내는 데 사용되는 것 같아요.

LISTEN 소켓이 SYN 패킷을 수신하면 함수에서tcp_conn_request,inet_csk_reqsk_queue_hash_add이 호출은 새로 생성된 NEW_SYN_RECV 양말을 ehash 테이블에 넣습니다(가 아님 icsk_accept_queue). 그러나 지금 inet_csk_reqsk_queue_hash_add,inet_csk_reqsk_queue_addedicsk_accept_queue.len내 질문은 qlen아무것도 삽입되지 않았기 때문에 왜 증가하는 것입니까 icsk_accept_queue?

더 중요한 것은,tcp_conn_request또한 ~으로 알려진inet_csk_reqsk_queue_add빠른 여는 양말(활성화된 경우)을 추가 icsk_accept_queue하지만 이 함수는 결국 증가합니다 sk.sk_ack_backlog(호출하여).sk_acceptq_added) 대신 icsk_accept_queue.qlen...내가 무엇을 놓치고 있는 걸까요?

관련 정보