커널이 TCP 수신 패킷의 소켓을 찾는 방법

eunduk.log·2026년 9월 6일

백엔드

목록 보기
3/6

4-튜플 키를 통해 소켓을 찾는다.

  • 4-튜플 키
    • src_ip (원격 IP 주소)
    • src_port (원격 포트 번호)
    • dst_ip (목적지 IP 주소)
    • dst_port (로컬 포트 번호)

established된 소켓을 먼저 찾고, 없으면 리스닝 소켓으로

  • 커널은 4-튜플 키를 통해 기존 연결이 있는지 먼저 확인한다.
  • 서버의 리스닝 소켓이든 established된 child소켓이든 4-튜플에 대한 정보를 가지고 있기 때문에, tcp 패킷을 수신했을 때 소켓을 look up할 수 있는 것이다.
    • 리스닝 소켓
      • 로컬: 0.0.0.0:443 (또는 특정IP:443)
      • 상태: TCP_LISTEN
      • 상대(원격) 정보는 특정 연결에 묶여 있지 않음
    • child 소켓 (established)
      • 로컬: 서버IP:443
      • 원격: 클라이언트IP:53001
      • 상태: TCP_ESTABLISHED
  • 수신 패킷의 4 튜플 키로 같은 정보의 child 소켓이 있으면 해당 소켓과 매핑된다.
    • 매핑된다고는 했지만, sk를 찾고 sk를 가지고 이후의 진행 함수를 호출하는 방식이다.
  • child 소켓이 없고 리스닝 소켓을 찾고 있다면 해당 소켓과 매핑된다.

0개의 댓글