IP 패킷의 전송과 라우팅

 

IP 패킷 전송과 라우팅

 

 

네트워크에서 데이터를 전송하는 과정은 전송(Delivery)과 라우팅(Routing)이 있다.

 

 

 

전송(Delivery)은 패킷을 물리적으로 전달하는 과정을 말한다.

즉, 데이터가 발신지에서 시작해 수신지까지 이동하는 실질적인 전달 과정이다.

 

 

라우팅(Routing)은 데이터그램(datagram)을 위한 경로를 결정하는 과정으로, 다음 홉(next hop)을 찾는 것이 핵심이다.

라우터는 이 정보를 이용해서 데이터가 목적지까지 효율적으로 도달할 수 있도록 도와준다.

 

 

 

 

이와 같은 과정을 통해서 데이터를 전송할 수 있는데, 이 방식에는 두 가지 유형이 있다

 

 

연결 지향 프로토콜(Connection-oriented protocol)은 경로가 고정된 방식이다.

송신자와 수신자 간에 동일한 경로를 사용하며, 연결이 설정된 후에 경로가 결정되기 때문에 모든 데이터 패킷은 동일한 경로를 따라 전달된다.

 

 

 

비연결형 프로토콜(Connectionless protocol)은 각 패킷을 독립적으로 처리하는 방식이다.

이 경우, 패킷이 각각 다른 경로를 통해 목적지에 도달할 수도 있다. 즉, 경로가 고정되어 있지 않으며 네트워크 상태에 따라 유동적으로 변경된다.

 

 

 

특히 IP 프로토콜은 비연결형 프로토콜(Connectionless protocol)을 기반으로 작동한다.

이는 인터넷과 같은 대규모 네트워크에서 효율적으로 데이터를 전송할 수 있게해준다.

각각의 IP 패킷은 독립적으로 처리되며, 목적지까지 반드시 동일한 경로를 따를 필요는 없다.

 

이러한 패킷은 최종 목적지로 직접 또는 간접적으로 전달할 수 있다.

 

 

 

 

 

 

 

직접 전달 (Direct Delivery)

 

 

패킷의 최종 목적지가 송신자와 동일한 물리적 네트워크에 있거나, 마지막 라우터와 목적지 호스트 간의 전달이 이루어질 때 사용하는 방법이다. (호스트에서 바로)

 

 

이러한 방법은 목적지 패킷의 네트워크 주소를 추출(Host ID 부분을 0으로 설정)하거나 

네트워크 주소를 비교하여 직접 전달 여부를 결정할 수 있다.

 

 

 

이와 같은 방법을 사용하면

두 호스트(Host) 간의 동일한 네트워크 내에서 데이터가 직접 전달되거나,

네트워크 내에 라우터를 통해 외부로 나가지 않고 내부에서만 통신할 수 있다.

 

 

 

 

 

 

 

 

간접 전달 (Indirect Delivery)

 

 

목적지 호스트가 송신자와 동일한 네트워크에 없을 때 사용하는 방법이다.

 

간접 전달 방법에서 패킷은 최종 목적지에 도달하기 위해 여러 라우터를 거치는데,

이 과정에서 ARP(Address Resolution Protocol)를 사용하여 다음 물리적 주소를 검색하고 다음 라우터의 IP 주소와 물리적 주소 간의 매핑을 한다.

 

 

 

이런 방식을 사용하면, 라우터를 통해 여러 네트워크를 거쳐서 데이터가 목적지에 도달하거나

소스 호스트에서 목적지 호스트까지 각 네트워크 사이에서 전달이 이어진다.

 

 

 

 

 

 

 

라우팅

 

라우팅은 네트워크를 통해 데이터를 올바른 목적지로 전달하기 위한 경로를 결정하는 프로세스다.

이를 위해서 라우팅 테이블을 사용하며, 다양한 방법으로 이를 구현할 수 있다.

 

여기에서 라우팅 테이블은 데이터를 최종 목적지로 보내기 위한 경로 정보를 저장하는 표다.

 

 

 

 

 

 

Next-Hop Routing

 

 

하나는 일반적인 전체 경로(Route) 기반 테이블, 다른 하나는 Next Hop 기반 테이블 예시이다.

여기에서 hop이란, 데이터 패킷이 네트워크를 통해 목적지로 이동하는 동안 거치는 중간 장치를 의미한다.

Next Hop은 특정 패킷이 현재 라우터를 떠나 다음으로 전달될 바로 다음 목적지(장치)를 가리킨다.

 

 

 

이 방식은 각 단계에서 다음 라우터로 데이터가 전달되기 때문에, 라우팅 테이블의 크기를 줄일 수 있다.

위의 라우팅 테이블 예시 이미지를 보면, 라우팅 테이블에는 "Host B → R1"과 같은 다음 홉 정보만 저장된다.

 

 

 

 

 

 

Network / Host-Specific Routing (네트워크 / 호스트 기반 라우팅)

 

 

위 이미지를 보면 네트워크 기반 라우팅과 호스트 기반 라우팅의 차이를 비교할 수 있다.

 

네트워크 기반 라우팅은 네트워크 자체를 대상으로 라우팅 테이블의 목적지에 정의하고 있다.

반면, 호스트 기반 라우팅은 특정 호스트에 대한 세부 경로를 라우팅 테이블에 저장한다.

 

 

네트워크 기반은 호스트 개별 주소를 생략하는 대신, 네트워크 단위로 저장하여 라우팅 테이블의 크기를 더 줄일 수 있다.

 

 

 

 

호스트 기반 라우팅은 관리자가 라우팅을 더 세밀하게 제어 가능할 수 있다.

특정 호스트로 가는 패킷의 경로를 변경할 때와 같이 더 유용하게 사용되는 경우가 있다.

 

예를들어 위 그림에서 호스트 B로 가는 모든 패킷을 R3로 보내도록 설정할 수 있다.

 

 

 

 

 

 

 

 

Default Routing (기본 라우팅)

 

 

특정 목적지 주소를 명시적으로 지정하지 않은 경우, 패킷을 기본 경로(default route)로 전달하는 라우팅 방식이다.

 

주로 단일 외부 네트워크와 연결된 소규모 네트워크에서 사용된다.

예를 들어, 인터넷 서비스 제공자(ISP)에 연결된 가정용 라우터가 있을 때, 라우터는 인터넷으로 나가는 모든 트래픽을 ISP로 전달하는 기본 경로를 사용한다.

 

 

위 이미지에서 호스트 A는 "기본 경로"를 통해 모든 패킷을 R2로 전달하고, 이후 R2가 해당 패킷의 최종 목적지로 경로를 찾는다.

 

비유하자면 길을 모를 때 "모든 차량은 고속도로로 이동"한다고 생각할 수 있다.

 

일단 모든 트래픽을 Default Route로 전달한다는 단일 경로 설정은 Default Routing이면서 Static Routing으로도 볼 수 있다.

 

 

 

 

여기에서 정적 라우팅은 

네트워크 관리자가 라우팅 테이블에 수동으로 경로를 정의하는 방식이다. (목적지가 명확)

네트워크 구조가 단순하고, 변경 사항이 거의 없을 때 적합하다.

 

하지만 네트워크가 커지면 관리가 어렵고, 경로 변경 시 수동으로 수정해야 한다.

 

 

 

반대로 동적 라우팅은 

라우터가 서로 정보를 교환하며 자동으로 경로를 학습하고 라우팅 테이블을 업데이트하는 방식이다.

주로 네트워크 규모가 크거나, 빈번한 경로 변경이 필요한 경우에 적합하다.

 

 

 

 

 

 

 

 

 

라우팅 모듈 및 라우팅 테이블 설계

 

 

 

 

위의 라우팅 경로 설정 논리를 기반으로

라우팅 모듈은 다음과 같이 동작하여 실제 데이터 패킷이 처리 및 전달된다.

 

 

  1. IP 패킷 수신
    데이터 패킷이 네트워크 계층으로 도달하면, IP 처리 모듈은 이를 분석하여 라우팅 모듈로 전달한다.
    여기서 패킷의 목적지 주소를 확인하여 적절한 경로를 찾는 작업이 시작된다.
  2. 라우팅 테이블 조회
    라우팅 모듈은 라우팅 테이블을 조회하여 패킷의 목적지 주소와 일치하는 경로를 찾는다.
    이때 아래와 같은 단계가 이루어진다.
    • Mask 적용: 목적지 IP 주소와 라우팅 테이블의 Mask를 비교하여 네트워크 또는 서브넷 주소를 식별한다.
    • Next Hop 결정: 일치하는 항목이 발견되면, 해당 경로의 Next Hop(다음 홉) 주소를 사용해 패킷을 전달할 대상 장치를 결정한다.
  3. 결정된 경로에 따라 패킷 전달
    선택된 경로에 따라 패킷은 Next Hop 주소를 참조하여 네트워크 인터페이스를 통해 전달된다.
    • 만약 G 플래그(Gateway)가 없는 경우, 목적지 주소가 동일한 네트워크에 있음을 나타내므로 직접 전달된다.
    • G 플래그가 있는 경우, 패킷은 Next Hop 주소로 전송된다.
  4. 패킷 조각화
    필요 시, 라우팅 모듈은 패킷을 조각화(Fragmentation Module)로 전달한다.
    이는 패킷 크기가 네트워크 MTU(최대 전송 단위)를 초과하는 경우 수행된다.
  5. 일치하는 경로가 없는 경우
    라우팅 테이블에 패킷의 목적지와 일치하는 경로가 없다면, 라우터는 ICMP(Internet Control Message Protocol) 오류 메시지를 생성하여 송신자에게 반환한다.

 

 

 

 

 

 

 

 

라우팅 테이블의 구조와 주요 필드

 

라우팅 테이블은 패킷 경로 결정을 위한 핵심 데이터를 포함하며, 아래와 같은 계층적 구조를 가진다.

 

  1. 직접 전달 항목 (Direct-Delivery Entries)
    동일 네트워크 내의 패킷을 직접 전달하여 처리
  2. 호스트 기반 항목 (Host-Specific Entries)
    특정 호스트(개별 IP 주소)에 대한 경로.
  3. 네트워크 기반 항목 (Network-Specific Entries)
    특정 네트워크(네트워크 ID)에 대한 경로를 통해 네트워크 단위 처리
  4. 기본 경로 항목 (Default Delivery Entry)
    다른 경로가 없을 경우 기본 경로로 패킷을 전송

 

 

 

 

 


라우팅 테이블의 필드

  • Mask: 목적지 주소와 비교하여 네트워크 또는 서브넷 주소를 식별.
  • Destination Address: 목적지 호스트 또는 네트워크 주소.
  • Next-Hop Address: 패킷을 전달할 다음 홉 라우터 주소.
  • Flags: 라우터 상태 및 목적지 정보 (예: U, G, H, D, M).
  • Reference Count: 현재 경로를 사용하는 사용자 수.
  • Use: 해당 경로를 통해 전송된 패킷 수.
  • Interface: 패킷이 전달될 네트워크 인터페이스 이름.

 

 

이 중, 라우팅 테이블의 플래그(Flags)는 경로와 관련된 추가 정보를 제공한다.

 

  • U (Up): 라우터가 작동 중임을 나타냄.
  • G (Gateway): 목적지가 다른 네트워크임을 나타냄.
  • H (Host-Specific): 목적지가 호스트 특정 주소임을 나타냄.
  • D (Added by Redirection): ICMP 리다이렉션 메시지를 통해 추가된 경로.
  • M (Modified by Redirection): ICMP 리다이렉션 메시지를 통해 수정된 경로.