네트워크 계층에서 IP 패킷이 전달되는 과정

2025. 2. 2. 23:21Linux*security/Network

반응형

 

IP 패킷 흐름 (Linux Kernel Network Stack 기준)

  1. 패킷 수신 (Inbound)
    • net_rx → ip_rcv → NF_IP_PRE_ROUTING (Netfilter) → ip_rcv_finish
    • 목적지가 로컬이면: ip_local_deliver → ip_local_deliver_finish
    • 목적지가 다른 노드(Forwarding): ip_forward → NF_IP_FORWARD → ip_forward_fin/ish
  2. 패킷 전송 (Outbound)
    • ip_queue_xmit → ip_finish_output → NF_IP_POST_ROUTING
    • 인터페이스를 통해 전송: dev_queue_xmit
  3. Forwarding (라우터 역할)
    • ip_forward → NF_IP_FORWARD → ip_forward_finish

이 흐름을 통해 패킷이 수신(Ingress)되거나 송신(Egress)되며, 필요 시 포워딩될 수도 있다.

 

 


IP 패킷 흐름 (Linux Kernel Network Stack 기준)

1. 패킷 수신 (Inbound)

  1. NIC에서 패킷 수신
    • net_rx: 네트워크 인터페이스 카드(NIC)에서 패킷을 수신
  2. IP 프로토콜 핸들링
    • ip_rcv: 수신된 패킷을 IP 계층에서 처리
    • NF_IP_PRE_ROUTING: Netfilter 훅으로, 패킷 필터링(iptables) 등의 기능 수행
    • ip_rcv_finish: 패킷 헤더 검증이 끝난 후 처리
  3. 로컬 전달 여부 결정
    • 목적지가 현재 호스트라면 ip_local_deliver → ip_local_deliver_finish
    • 목적지가 다른 네트워크 노드라면 ip_forward로 전달

2. 패킷 전달 (Forwarding, 라우터 기능 수행 시)

  1. ip_forward: 라우팅 테이블을 확인하여 패킷을 전달할지 결정
  2. NF_IP_FORWARD: Netfilter 훅을 거쳐 패킷 필터링 적용
  3. ip_forward_finish: 다음 홉(Next Hop)으로 패킷을 전송

3. 패킷 전송 (Outbound)

  1. ip_queue_xmit: 패킷을 네트워크 인터페이스로 전송 준비
  2. ip_finish_output: 패킷의 마지막 처리
  3. NF_IP_POST_ROUTING: Netfilter 훅에서 NAT 등의 작업 수행
  4. dev_queue_xmit: 실제 네트워크 인터페이스를 통해 패킷 전송

 


IP 패킷 흐름 (Linux Kernel Network Stack 기준)

1. 패킷 수신 (Inbound)

  1. NIC에서 패킷 수신
    • net_rx: 네트워크 인터페이스 카드(NIC)에서 패킷을 수신
  2. IP 프로토콜 핸들링
    • ip_rcv: 수신된 패킷을 IP 계층에서 처리
    • NF_IP_PRE_ROUTING: Netfilter 훅으로, 패킷 필터링(iptables) 등의 기능 수행
    • ip_rcv_finish: 패킷 헤더 검증이 끝난 후 처리
  3. 로컬 전달 여부 결정
    • 목적지가 현재 호스트라면 ip_local_deliver → ip_local_deliver_finish
    • 목적지가 다른 네트워크 노드라면 ip_forward로 전달

2. 패킷 전달 (Forwarding, 라우터 기능 수행 시)

  1. ip_forward: 라우팅 테이블을 확인하여 패킷을 전달할지 결정
  2. NF_IP_FORWARD: Netfilter 훅을 거쳐 패킷 필터링 적용
  3. ip_forward_finish: 다음 홉(Next Hop)으로 패킷을 전송

3. 패킷 전송 (Outbound)

  1. ip_queue_xmit: 패킷을 네트워크 인터페이스로 전송 준비
  2. ip_finish_output: 패킷의 마지막 처리
  3. NF_IP_POST_ROUTING: Netfilter 훅에서 NAT 등의 작업 수행
  4. dev_queue_xmit: 실제 네트워크 인터페이스를 통해 패킷 전송

이와 같은 구조를 통해 IP 패킷이 네트워크 스택을 거쳐 전달된다.
추가적인 질문이 있으면 알려주세요! 😊

 

 

 
 

 

 

반응형