공부 기록/네트워크 보안

[네트워크 보안] IP 패킷 전달과 포워딩

도도히히 2025. 11. 10. 22:07

연결형과 비연결형 서비스

연결형 서비스

  • 패킷을 보내기 전에 목적지의 네트워크층 프로토콜과 연결 설정(경로 설정에 의해)
  • 연결 설정되면 발신지에서 목적지로 패킷들 전달
    • 순서대로 하나씩 전달
    • 모든 패킷은 같은 경로를 통해 전달
  • 메시지에 속한 모든 패킷이 전달되면 연결 해제

비연결형 서비스

  • 각 패킷은 서로 독립적으로 처리
  • 같은 목적지에 전달되더라도 서로 다른 경로로 전달될 수 있음
  • IP 프로토콜은 비연결형 프로토콜

 

전달

전달을 위한 네트워크층의 역할

  • 물리적인 네트워크에 의해 패킷이 처리되는 과정 감독
  • 패킷 포워딩을 통해 발신지에서 목적지까지의 전달 이루어짐

전달 방법

  • 직접 전달
  • 간접 전달

 

직접 전달

특징

  • 최종 목적지가 전달자와 같은 네트워크에 연결되어 있는 호스트
    • 패킷의 발신지와 목적지가 같은 네트워크에 위치
    • 최종 라우터와 목적지 호스트 사이에 수행
  • 직접 전달여부 확인 방법
    • 목적지 주소에서 netid 추출한 후 현 네트워크 주소와 비교
    • 같은 경우 송신자는 목적지 IP 주소를 이용해 목적지 물리 주소를 찾아서(ARP 이용) 데이터 링크층으로 보내어 패킷 직접 전달

 

간접 전달

특징

  • 최종 목적지가 발신지와 같은 네트워크에 속해있지 않은 호스트
  • 여러 라우터를 경유해서 전달 (최종 목적지와 같은 네트워크에 연결된 라우터에 도달할 때까지)
  • 목적지 IP주소와 라우팅 테이블 이용해 다음 라우터의 IP 주소 찾기

 

포워딩

포워딩이란

  • 패킷을 목적지로 가는 경로상에 놓는 것
    • 패킷을 다음 홉(최종 목적지 또는 중간 연결 장치)으로 전달하는 것을 의미함
  • 비연결형 vs 연결형 프로토콜에서의 포워딩
    • 비연결형 프로토콜: 목적지 주소 기반
    • 연결형 프로토콜: 레이블 기반

방법

  • 목적지 주소 기반 포워딩
    • next-hop method
    • network-specific method
    • host-specific method
    • default method
  • 레이블 기반 포워딩

 

next-hop method

라우팅 테이블을 가장 작게 만드는 기술

다음 홉 주소만 저장 (전체 경로 정보 대신)

 

network-specific method

같은 네트워크에 연결된 모든 호스트 별 엔트리 대신 네트워크 주소 지정

  • 라우팅 테이블 작게 만드는 효과 제공
  • 검색 과정 간단해짐

 

host-specific method

라우팅 테이블에 목적지 주소 저장

  • network-specific method의 반대

관리자가 네트워크 제어 시 효과적

  • 개별 호스트를 별도로 관리해야 하는 경우 사용

 

default method

명시되지 않은 목적지 처리 방법

  • next hop 지정이 가능한 목적지 외의 나머지 목적지를 처리하는 경우 default로 명시하고 next hop 지정

 

서브넷팅 없는 클래스 기반 주소 지정에서 포워딩 모듈

 

클래스 기반 주소체계에서 인터넷의 라우터들은 서브넷팅에 관여하지 X

  • 서브넷팅은 조직 내에서 일어남

라우팅 테이블에서 관리되는 테이블 정보

  • 클래스 A, B, C별로 하나씩 전체적으로 3개의 테이블 사용
    • 라우터가 멀티캐스팅 지원 시 D 클래스 처리를 위한 테이블 한 개 추가됨
  • 각 테이블에 필요한 정보
    • 네트워크 주소: 목적지 호스트가 어디에 위치하고 있는지 알려줌
    • 다음 홉 주소: 간접 전달의 경우 패킷이 어느 라우터에 전달되어야 하는지 알려줌
    • 인터페이스 번호: 패킷이 나가는 출력 포트를 정의함

 

패킷 포워딩 과정

  1. 클래스 찾기 (by 목적지 주소)
  2. 네트워크 주소 찾기 (by 클래스, 목적지 주소)
    • 매칭되는 네트워크 주소가 라우팅 테이블에 없을 경우 디폴트 라우터로 포워딩
  3. 다음 홉 주소 추출 (by 클래스, 네트워크 주소)
    • 간접 연결일 경우에는 다음 홉 주소가 따로 있지만, 직접 연결일 경우에는 목적지 주소가 다음 홉 주소가 됨
  4. 다음 홉 주소와 인터페이스 번호를 ARP에 보냄

 

ex) 라우팅 테이블 작성하기

클래스 B

네트워크 주소 다음 홉 주소 인터페이스
145.80.0.0 - m1
170.14.0.0 - m2

 

디폴트 라우터

default: 110.30.31.18, m0

예제

라우터 R1이 목적지 주소 192.16.7.14를 가진 패킷을 받은 경우 패킷이 포워딩 되는 과정을 보이기

답(풀이)

클래스는 C (192로 시작)

네트워크 주소는 192.16.7.0

일치하는 주소를 찾았다면 다음 홉 주소와 인터페이스 번호를 ARP에 보냄

(여기서는 다음 홉 주소: 111.15.17.32, 인터페이스 번호: m0)

 

예제 (위의 예제와 같은 네트워크 구조도)

라우터 R1이 목적지 주소 167.24.160.5를 가진 패킷을 받은 경우 패킷이 포워딩 되는 과정을 보이기

답(풀이)

클래스는 B (167로 시작)

네트워크 주소는 167.24.0.0

일치하는 주소가 라우팅 테이블에 없으므로 패킷은 디폴트 라우터로 포워딩

다읍 홉 주소: 111.30.31.18, 인터페이스 번호: m0

 

서브넷팅이 있는 경우 클래스 기반 주소 지정에서 포워딩 모듈

 

서브넷팅은 조직 내에서 수행

  • 서브넷팅을 처리하는 라우터는 조직 사이트와 외부와의 경계에 존재
  • 가변 길이의 서브넷팅을 사용하면 여러 개의 테이블이 필요
    • 고정 길이 서브넷팅을 수행하면 하나의 테이블만 필요

패킷 포워딩 과정

  1. 클래스 찾기 (by 목적지 주소)
  2. 서브넷 주소 찾기 (by 마스크)
    • 일치하는 주소가 테이블에 없을 경우, 디폴트 라우터 주소를 사용해 패킷을 라우터에 전달
  3. 다음 홉 주소와 인터페이스 번호를 ARP에 보내기
    • 이때, 서브넷팅의 경우 라우터와 직접 연결되어 있어 목적지 주소가 다음 홉 주소가 됨

ex) 라우팅 테이블 작성

네트워크 주소 다음 홉 주소 인터페이스
145.14.0.0 - m0
145.14.64.0 - m1
145.14.128.0 - m2
145.14.192.0 - m3
0.0.0.0 default router m4

 

예제

라우터가 목적지 주소 145.14.32.78를 가진 패킷을 처리하는 과정 보이기

답(풀이)

서브넷 마스크: 255.255.192.0 (18개의 1과 14개의 0)

네트워크 주소는 145.14.0.0

패킷은 다음 홉 주소 145.14.32.78와 출력 인터페이스 m0 두 값을 ARP에 보냄

 

예제

145.14.0.0 내의 호스트가 주소 7.22.67.91인 호스트로 보내는 패킷을 수신했는데 패킷이 어떻게 전달되는지 보이기

답(풀이)

그림을 보았을 때 마스크는 /18

네트워크 주소는 7.22.64.0

테이블에서 일치하는 주소가 없으므로 디폴트 라우터로 포워딩

디폴트 라우터 주소를 사용해 패킷을 라우터에 전달 (다음 홉 주소가 디폴트 라우터를 향하는 주소인데 그림에 나와있진 않고 인터페이스 번호는 m4)

 

클래스 없는 주소체계에서 포워딩

 

클래스 없는 주소체계에서 전체 주소 공간은 한 개의 개체

cf. 클래스가 있는 주소체계에서는 클래스 별로 테이블을 나누기 때문에 네트워크 id의 길이를 명시적으로 알 수 있지만, 클래스가 없는 주소체계에서는 한 개의 개체로 보기 때문에 테이블도 한 개로 나타냄

 

특징

  • 테이블은 네트워크 주소(블록의 첫 번째 주소)에 기반하여 탐색
  • 패킷의 목적지 주소는 네트워크 주소에 대한 힌트를 주지 X
    • 테이블에 추가적으로 마스크(/n) 정보가 필요
    • 결과적으로 적어도 테이블은 4개의 열이 필요

패킷 포워딩 방법

  1. 마스크 길이가 긴 것부터 목적지 주소에 적용해 네트워크 주소 구하기
  2. 부합되는 주소 있는지 테이블에서 체크 (아예 없으면 디폴트 마스크로)
  3. 다음 홉 주소(직접 연결일 경우 목적지 주소가 될 수도 O), 인터페이스 번호를 ARP에 보냄

ex) 라우팅 테이블 작성

마스크 네트워크 주소 다음 홉 주소 인터페이스
/26 180.70.65.192 - m2
/25 180.70.65.128 - m0
/24 201.4.22.0 - m3
/22 201.4.16.0 - m1
default default 180.70.65.200 m2

 

예제

R1에 목적지 주소 180.70.65.140를 가진 패킷이 도착한 경우, 해당 패킷의 포워딩 과정 보이기

답(풀이)

목적지 주소에 /26 적용 → 네트워크 주소는 180.70.65.128 (일치하는 네트워크 주소 X)

목적지 주소에 /25 적용 → 네트워크 주소는 180.70.65.128 (일치하는 네트워크 주소 O)

다음 홉 주소인 180.70.65.140와 인터페이스 m0을 ARP에 보냄

 

예제

라우터 R1에 목적지 주소 201.4.22.35를 가진 패킷이 도착한 경우 포워딩 처리 과정 보이기

답(풀이)

목적지 주소에 /26 적용 → 네트워크 주소는 201.4.22.0 (일치하는 네트워크 주소 X)

목적지 주소에 /25 적용 → 네트워크 주소는 201.4.22.0 (일치하는 네트워크 주소 X)

목적지 주소에 /24 적용 → 네트워크 주소는 201.4.22.0 (일치하는 네트워크 주소 O)

다음 홉 주소인 201.4.22.35와 인터페이스 m3을 ARP에 보냄

 

예제

R1에 목적지 주소 18.24.32.78를 가진 패킷이 도착한 경우 포워딩 처리 과정 보이기

답(풀이)

목적지 주소에 /26, /25, /24, /22를 모두 적용해도 일치하는 네트워크 주소를 찾을 수 X

(디폴트 라우터를 통해 외부 인터넷으로 보내야 함)

180.70.65.200와 인터페이스 m2를 ARP에 보냄

 

예제

라우팅 테이블을 기반으로 네트워크 구조도 그리기

마스크 네트워크 주소 다음 홉 주소 인터페이스
/26 140.6.12.64 180.14.2.5 m2
/24 130.4.8.0 190.17.6.2 m1
/16 110.70.0.0 - m0
/16 180.14.0.0 - m2
/16 190.17.0.0 - m1
default default 110.70.4.6 m0

 

다음 홉 주소가 없는 경우, 라우터에 직접 연결됨

다음 홉 주소가 있다는 것은 간접 연결이라는 의미

인터페이스 번호가 같은 것끼리 묶어서 생각하기

→ /16 110.70.0.0의 경우 이 뒤에 디폴트 라우터가 올 것임 (디폴트 인터페이스가 m0으로 동일하므로)

→ /16 180.14.0.0의 경우 이 뒤에 라우터가 오는데 이 라우터는 같은 인터페이스 m2인 /26 140.6.12.64와 연결될 것임

→ /16 190.17.0.0의 경우 이 뒤에 오는 라우터는 같은 인터페이스 m1인 /24 130.4.8.0과 연결될 것임

이러한 힌트를 기반으로 그리기

 

주소 집단화

같은 인터페이스를 사용하는 주소 중 집단으로 처리할 수 있는 경우

테이블 크기가 증가하고 탐색 시간이 증가하는 것을 완화해줌

 

이때, 집단으로 처리할 때의 마스크는 네트워크 주소의 길이를 의미하는 것은 아님

→ /24 140.24.7.0의 경우 네트워크 주소가 24비트라는 것을 의미 X

 

가장 긴 마스크 부합

유사한 네트워크 주소를 가지나 같은 라우팅 경로를 가지지 않는 경우를 위한 대응 방법

  • 마스크 길이가 긴 것부터 부합 적용
  • “긴 마스크 = 높은 일치도”

묶어서 처리할 수 없는 것(이면서 마스크 길이가 가장 긴 것)을 테이블의 맨 위에 작성하기

묶어서 처리할 수 있는 것들은 공통된 부분까지만 쓰고 그 부분까지의 n을 마스크로 작성

ex)

마스크 네트워크 주소 다음 홉 주소 인터페이스
/26 140.24.7.192 - m1
/24 140.24.7.0 - m0
/? ? ? m1
/0 0.0.0.0 default router m2

 

긴 길이를 읽어 개별적으로 관리해야 하는 네트워크를 우선하여 처리

마스크 네트워크 주소 다음 홉 주소 인터페이스
/26 140.24.7.0 - m0
/26 140.24.7.64 - m1
/26 140.24.7.128 - m2
/0 0.0.0.0 default router m3