CS 공부/네트워크

Wireshark로 배우는 컴퓨터네트워크 [5장 IP 주소]

kkyoug 2025. 5. 31. 17:01
  1. 연결형과 비연결형 서비스
  2. 직접 전달과 간접 전달
  3. 포워딩
  4. 라우터의 구조

  • IP 패킷을 전달하고 포워딩하는 과정에 대해 설명한다.
  • 전달: 네트워크층의 제어 하에 네트워크가 패킷을 처리하는 방법을 말함
  • 포워딩: 패킷을 다음 지점으로 전달하는 과정을 말한다.

1. 연결형과 비연결형 서비스

  • 네트워크에서 패킷 전달연결형이나 비연결형 서비스를 이용하여 수행된다.

연결형 서비스

  • 발신지의 네트워크층 프로토콜은 패킷을 보내기 전에 먼저 목적지의 네트워크층 프로토콜과 연결한다.
    • 연결이 설정되면 발신지에서 목적지로 가는 패킷들은 순서대로 하나씩 보내진다.
    • 패킷들 사이에 상관관계가 유지되어 모든 패킷은 같은 경로를 통해 전달됨
  • 같은 발신지와 같은 목적지 주소를 갖는 패킷에 대한 라우팅 결정은 연결이 설정될 때 한 번 수행된다.

비연결형 서비스

  • 각 패킷은 상호 독립적으로 처리한다.
    • 패킷들 사이에 아무런 관계가 없으며 하나의 메시지에 속한 패킷들이 같은 목적지에 전달되더라도 서로 다른 경로로 전달될 수 있다.

 

 

2. 직접 전달과 간접 전달

  • 네트워크층은 물리적인 네트워크를 통해 패킷이 처리되는 과정을 감독한다.
    • **IP 패킷(데이터그램)**을 발신지에서 최종 목적지까지 전달하는 것이다.
  • 패킷을 전달하는 방법을 패킷 포워딩이라고 한다.
    • 직접 전달간접 전달이 있다

2.1 직접 전달

  • 패킷의 발신지와 목적지가 같은 물리 네트워크에 위치하거나 또는 최종 라우터와 목적지 호스트 사이에 전달되는 경우에 수행된다.

  1. 마스크를 사용하여 목적지의 네트워크 주소를 추출
  2. 추출한 주소를 자신이 연결된 네트워크 주소와 비교하여 두 주소가 같을 경우 직접 전달이 수행됨
  • 직접 전달의 경우 송신자는 목적지 IP 주소를 사용하여 목적지 물리 주소를 찾는다.
    • 해당 목적지 IP 주소를 목적지 물리 주소와 함께 데이터 링크층으로 보내서 패킷이 실제로 전달되도록 한다.
    • 이러한 과정이 IP 주소를 물리 주소로 변환하는 과정(ARP)

2.2 간접 전달

  • 목적지 호스트가 전달자와 같은 네트워크에 있지 않으면 패킷은 간접적으로 전달됨.
  • 패킷은 최종 목적지와 같은 물리적인 네트워크에 연결된 라우터에 도달할 때까지 여러 라우터를 경우하여 전달됨.

 

 

 

  1. 송신자는 목적지 IP 주소와 라우팅 테이블을 사용하여 패킷이 전달되어야 하는 다음 라우터의 IP 주소를 찾는다.
  2. ARP 프로토콜을 사용하여 다음 라우터의 물리 주소를 찾는다.
  • 패킷 전달 과정에 반드시 하나의 직접 전달 과정이 있으나 간접 전달은 없거나 또는 여러 개가 있을 수도 있다.

3. 포워딩

  • 패킷을 목적지로 가는 경로 상에 올려놓는 것을 의미한다.
    • 다음 홉으로 패킷을 전달하는 것을 의미하기도 함
      • 라우터에 전달하는 것
  • IP가 비연결형 프로토콜로 사용되면 포워딩은 IP 데이터그램의 목적지 주소를 기반으로 수행되고 IP가 연결형 프로토콜로 사용되면 포워딩은 IP 데이터그램에 부착된 레이블을 기반으로 수행된다.

3.1 목적지 주소 기반 포워딩(비연결형)

다음-홉 방법

  • 라우팅 테이블은 전체 경로에 대한 정보 대신 다음 홉의 주소만 저장하고 있다.

 

네트워크-지정 방법

  • 같은 네트워크에 연결된 모든 호스트는 하나의 개체로 취급된다.
  • 1000개의 호스트가 같은 연결되어 있다면, 1000개의 엔트리 대신 라우팅 테이블에는 한 개의 엔트리만 저장하면 된다.

 

호스트-지정 방법

  • 특정 개별 호스트에 대한 경로를 라우팅 테이블에 직접 저장하는 방법
  • 라우팅 테이블에 목적지 호스트의 주소가 저장되어 있다.
  • 네트워크-지정 라우팅의 반대이다.
  • 호스트 b로 가는 패킷이 라우터 R1을 대신해 R3를 통해 전달되기를 원한다면 호스트 A의 라우팅 테이블에는 이러한 경로를 정의하는 한 개의 엔트리를 저장한다.
  • 경로 점검 or 보안성 제공할 때만 사용

 

디폴트 방법

  • 라우팅을 간단하게 만드는 방법
  • 인터넷 상의 모든 네트워크를 나열하는 대신에 호스트 A는 네트워크 주소가 0.0.0.0으로 되어 있는 디폴트 엔트리 하나만 가지고 있으면 됨
    • 아무것도 연결될게 없을 경우 사용

3.2 클래스 기반 주소지정에서 포워딩

서브넷팅이 없는 경우의 포워딩

  • 서브넷팅이 없다는 것은 IP주소를 클래스별로 나누는 것을 의미(A,B,C) +D,E
  • 과정
  1. [목적지 네트워크 주소 찾기] 목적지 네트워크의 네트워크 주소는 목적지 호스트가 어디에 위치하고 있는지 알려준다.
  2. [라우팅 테이블 검색] 다음 홉 주소는 간접 전달의 경우 패킷이 어느 라우터에 전달되어야 하는지 알려준다. (직접 전달의 경우 이 열은 비어있음)
  3. 인터페이스 번호는 패킷이나가게 되는 출력 포트를 정의

사진에 대한 설명

  1. 패킷의 목적지 주소 추출
  2. 목적지 주소의 복사본을 사용하여 주소의 클래스를 알아냄
    1. 오른쪽으로 28 쉬프트 연산을 하면 알 수 있음
    2. 0 ~ 7사이면 클래스 A
    3. 8 ~ 11 사이면 클래스 B
    4. 12또는 13이면 클래스 C
    5. 14면 클래스 D
    6. 15면 클래스 E
  3. 클래스에 대한 결과와 목적지 주소를 사용하여 네트워크의 주소 추출
  4. 주소의 클래스네트워크 주소를 사용하여 다음 홉 주소(라우터)를 찾는다.
    1. 모듈이 네트워크 주소를 탐색하는데 부합되는 엔트리가 발견되면 이 엔트리에서 다음 홉 주소와 출력 포트의 인터페이스 번호를 추출
    2. 아니라면 디폴트가 사용됨

예제 5.1

  • 0~127: 클래스 A
    • m0와 바로 연결되어 있음
  • 128~191: 클래스 B
    • m1, m2와 바로 연결되어 있음
  • 192~223: 클래스 C
    • R2로 연결되어 있는 주소가(111.15.17.32)이며 기본적으로 연결된 곳은 m0
  • Default Route: 111.30.31.18
    • 테이블에 없는 모든 네트워크는 R2로 보내라는 뜻

 

예제 5.2

  • 라우터 R1은 목적지 주소가 192.16.7.14인 패킷을 받았다. 패킷이 어떻게 포워딩 되는지 모여라
  1. 목적지 주소를 2진법으로 변환
    1. 11000000 000100000 00000111 00001110
  2. 오른쪽으로 28비트 이동
    1. 00000000 00000000 00000000 00001100
    2. → 클래스 C인것을 확인 가능 (12)
  3. 왼쪽 24비트만 뽑아주면 192.16.7.0이 나온다.
  4. R2 라우터에게 맡김(ARP 변환을 위해)

예제 5.3

  • 라우터 R1은 목적지 주소가 167.24.160.5인 패킷을 수신한다. 어떻게 포워딩 되는지 보여라.
  1. 목적지 주소를 2진법으로 변환
    1. 10100111 00011000 10100000 00000101
  2. 오른쪽으로 28비트 쉬프트 연산
    1. 00000000 00000000 00000000 00001010
    2. 클래스 B인것을 확인 가능(10)
  3. 왼쪽 16비트만 뽑아주면 167.24.0.0이 나옴
  4. 부합된 엔트리를 찾지 못해 디폴트 라우터에게 전달된다.

서브넷팅이 있는 경우 포워딩

  • 클래스 기반 주소지정에서 서브넷팅은 조직 내에서 수행된다.
    • 가변 길이 서브넷팅 사용 → 여러 개의 테이블 필요
    • 고정 길이 → 하나의 테이블만 필요

 

  1. 모듈은 패킷의 목적지 주소를 추출
  2. 목적지 주소가 테이블 내의 호스트 지정 주소와 같으면, 테이블로부터 다음 홉과 인터페이스 번호를 추출
  3. 목적지 주소와 마스크를 사용하여 서브넷 주소 추출
  4. 서브넷 주소를 사용하여 테이블을 탐색하여 다음 홉 주소와 인터페이스 번호를 찾는다. 부합되는 인터페이스 없을경우 디폴트 사용
  5. 다음 홉 주소와 인터페이스 번호가 ARP에게 전달됨

예제 5.4

  1. 사이트의 주소는 145.14.0.0/16 (클래스 B 주소)
    1. 145.14.0.0/18 → m0 포트
    2. 145.14.64.0/18 → m1 포트
    3. 145.14.128.0/18 → m2 포트
    4. 145.14.192.0/18 → m3 포트
  2. 4개의 서브넷 (모두 /18)

예제 5.5

  • 라우터가 목적지 주소가 145.14.32.78인 패킷을 수신하였다. 패킷이 어떻게 포워딩되는지 보여라
    • 마스크는 /18이므로 마스크를 적용한 서브넷 주소는 145.14.0.0이 된다. (m0와 매칭)
    • 다음 홉 주소는 145.14.32.78과 출력 인터페이스 m0와 함께 ARP로 전달된다
  • 연결된 라우팅 테이블이 있으므로 다음홉은 자신의 네트워크가 된다.

예제 5.6

  • 145.14.0.0 네트워크 내의 호스트가 주소가 7.22.67.91인 호스트에 보낼 패킷을 가지고 있다. 패킷이 어떻게 전달되는지 보여라.
    • 마스크 /18을 적용하더라도 네트워크 7.22.64.0이다. 따라서 부합되는 주소가 없기 때문에 디폴트 라우터의 주소를 사용하여 패킷을 라우터에 보낸다.
    • 00000111.00010110.01000000.00000000 → 마스크 결과

3.3 클래스 없는 주소지정에서 포워딩

  • 클래스 없는 주소지정에서 전체 주소 공간은 한 개의 개체이다.
    • 마스크 부분이 테이블 탐색과 함께 수행된다.

예제 5.7

예제 5.8

[그림 5.13]에서 R1에 목적지 주소가 180.70.65.140인 패킷이 도착한 후의 포워딩 과정을 설명하라.

  • 목적지 주소에 두 번째 마스크 /25가 적용된다. 결과는 180.70.65.128이 되므로 일치한다.
    • 패킷의 목적지 주소와 인터페이스 번호 m0는 ARP에게 전달됨
  • /26일 경우는 일치하지 않기 때문에 매칭안되서 실패

예제 5.9

  • [그림 5.13]에서 R1에 목적지 주소가 201.4.22.35 패킷이 도착하면 이 패킷이 어떻게 처리되는지 보여라
    • 세 번째 마스크 /24가 목적지 주소에 적용되며 결과는 201.4.22.0이고 행 3에 있는 네트워크 주소와 부합된다.
    • 패킷의 목적지 주소와 인터페이스 번호 m3는 ARP에게 전달됨

예제 5.10

  • R1에 목적지 주소가 18.24.32.78인 패킷이 도착하면 이 패킷이 어떻게 처리되는지 설명하라
    • 부합되는 네트워크 주소가 없기 때문에 디폴트..
    • 다음 홉 주소는 180.70.65.200이고 인터페이스 번호 m2를 ARP에 전달

예제 5.11

  • 라우팅 테이블의 내용만 알면 라우터 구성을 알 수 있는가? 라우터 R1의 라우팅 테이블이 <표5.2>에 주어져있다 접속형태를 그릴 수 있는가?

이 라우팅 테이블에서는 접속형태에 따른 정보량의 차이를 보여줍니다.

라우터 R1은 세 개의 인터페이스(m0, m1, m2)를 가지고 있으며, 각 네트워크와의 연결 방식에 따라 알 수 있는 정보량이 다르다

직접 연결된 네트워크의 경우 라우터가 해당 네트워크의 모든 호스트 정보를 알 수 있어서 Next-hop 주소 없이 바로 전송할 수 있습니다.

반면 간접 연결된 네트워크는 다른 라우터를 통해 연결되어 있기 때문에 네트워크 주소만 알고 개별 호스트 정보는 모르므로, 반드시 Next-hop 주소(중간 라우터)를 통해 패킷을 전송해야 한다.

예를 들어 140.6.12.64 네트워크는 R1과 직접 연결되어 있지 않아서 호스트별 세부 정보를 알 수 없고, 180.14.2.5라는 Next-hop 라우터를 통해서만 접근할 수 있다. 이처럼 네트워크 접속 형태가 라우터가 보유할 수 있는 정보의 범위를 결정합니다.

주소 집단화

  • 테이블의 크기가 증가하면 테이블 검색 시간도가 증가하게 됨. 이러한 문제를 완화하기 위해 사용함

  • R1은 각각 64개의 주소를 사용하는 네 개의 기관과 연결(/26 → 6)
    • R2는 R1에서 먼 곳에 위치
  • R2에서는 목적지 주소가 140.24.7.0 ~ 140.24.7.255사이에 있는 패킷 모두 m0 인터페이스를통해 송신된다.
    • 네 기관의 주소 블록이 한 개의 큰 블록으로 집단화되므로 주소 집단화라고 한다.
  • 서브넷팅 개념과 유사하지만 주소 집단화에서는 각 기관의 네트워크는 상호 독립적이다.

가장 긴 마스크 부합

  • 클래스 없는 주소지정에서 라우팅은 가장 긴 마스크 부합이라는 다른 원리를 사용하므로 블록 할당이 가능함.
  • 원리는 라우팅 테이블이 가장 긴 마스크에서 가장 짧은 마스크의 순으로 정렬되어 있는 것을 의미
  • 140.24.7.200 예시
    • 64개의 주소 적용
    • R2에서는 첫 번째 마스크가 적용되어 140.24.7.192가 나옴 → m1을 통해 경로 지정되고 기관 4로 전달됨

계층적 라우팅

  • 라우팅 테이블이 커지는 문제를 해결하기 위하여 라우팅 테이블에 계층 구조를 도입할 수 있다.
    • 백본, 지역 ISP, 로컬 ISP 로 나뉨
  • 백본, 지역 ISP , 로컬 ISP 모두 더 작게 블록을 자름

예제 5.12

  • 지역 ISP는 120.14.64.0부터 시작하는 16,384개의 주소를 부여받음
  • 각 크기가 4,094개의 주소인 네 개의 서브블럭으로 나누기로 결정
    • 이 중 세 개의 서브블록은 세 개의 로컬 ISP에 할당
    • 마스크가 /20이 된 이유는 /18인 원래 블록이 넷으로 분할되었기 때문이다.
  • 첫 번째 로컬 ISP의 재분할
  • 받은 블록을 → 8개의 더 작은 블록으로 각각 128개 주소씩 (H001~H128까지) 마스크: /20 → /23
  • 두 번째 로컬 ISP의 재분할
    • 4개로 분할
    각 기관(LOrg01~LOrg04)에게 할당
    각 기관: 1,024개 주소
    마스크: /22
    
  • 세 번째 로컬 ISP의 재분할
    • 16개로 분할
    각 블록을 작은 기관(SOrg01~SOrg15)에게
    각 기관: 256개 주소  
    마스크: /24
    

 

 

지리적 라우팅

  • 계층적 라우팅의 개념을 확장한 것
  • 전체 주소 공간을 작은 수의 큰 블록으로 나눈 후 대륙별로 한 개의 블록을 할당

3.4 라우팅 테이블 검색 알고리즘

  • 클래스 기반 주소지정에서 검색
    • 라우팅 테이블 급속 증가: 모든 클래스별 네트워크를 개별 저장
    • 유연성 부족: A, B, C 클래스로 고정되어 비효율적 주소 할당
    • 주소 낭비: 실제 필요량과 클래스 크기가 맞지 않아 낭비 발생

클래스 없는 주소지정에서 검색

  • 1. 가장 긴 프리픽스 매칭
    • 여러 경로가 매칭될 때 가장 구체적인 경로(긴 마스크) 선택
    • 라우팅 정확성과 효율성 향상
  • 2. 주소 집약 (Address Aggregation)
    • 여러 네트워크를 하나의 큰 블록으로 묶어서 광고
    • 라우팅 테이블 크기 대폭 감소
    • 상위 계층에서는 세부 네트워크 구분 불필요
  • 3. 이진 트리 구조
    • 효과적인 주소 검색을 위한 계층적 검색 구조
    • 빠른 라우팅 결정 가능

레이블 기반 포워딩

  • 라우팅은 기본적으로 테이블 내용에 대한 검색을 기반으로 하는 반면, 교환은 인덱스를 사용한 테이블 접근에 의해 수행된다.

예제 5.13

  • 가장 긴 부합 알고리즘을 사용하는 라우팅 테이블의 예시

 

예제 5.14

  • [그림 5.19]는 레이블을 사용하여 교환 테이블에 접근하는 간단한 예를 보여준다. 레이블이 테이블에 대한 인덱스로 사용되므로 테이블 내에서 정보를 신속하게 찾을 수 있다.

3.5.1 MPLS

  • 라우터로 목적지 주소에 기반하여 패킷을 포워드하고 교환기로 동작할 때는 레이블에 기반하여 패킷을 포워딩한다.

새로운 헤더

  • 새로운 필드를 패킷에 추가하기 위해서는 IPv4 패킷에 확장이 필요하다.
    • 확장하기 위해서는 IPv4 패킷을 마치 MPLS가 데이터 링크층과 네트워크층 사이에 있는 계층인 것처럼 MPLS 패킷으로 캡슐화하는 것이다.

  • 길이가 32비트인 MPLS 헤더의 형식

  • 레이블 (Label) - 20비트
    • 라우터 내의 라우팅 테이블을 인덱스하기 위한 레이블
    • 빠른 패킷 처리를 위한 식별자 역할
  • Exp (Experimental) - 3비트
    • 실험 목적으로 예약된 필드
    • 향후 확장이나 특별한 용도로 사용 가능
  • S (Stack) - 1비트
    • 스택 내의 서브헤더의 상황을 정의
    • 값이 1인 경우: 해당 헤더가 스택 내에서 가장 마지막임을 의미
  • TTL (Time To Live) - 8비트
    • IP 데이터그램의 TTL 필드와 유사한 기능 (7장 참조)
    • 방문된 라우터는 이 필드의 값을 1 감소시킴
    • 값이 0이 되면 무핑(looping)을 방지하기 위해 패킷을 폐기

계층적 교환

  • MPLS 내의 레이블스택은 게층적 교환이 가능
    • 예를 들어, 패킷이 두 개의 레이블을 가진 경우 상위 레이블은 조직 외부의 교환기를 통하여 패킷을 포워딩하기 위해 사용하고 하위 레이블은 조직 내에서 패킷을 목적지 서브넷까지 전달하기 위하여 사용가능.

4. 라우터의 구조

4.1 구성 요소

  • 입력 포트, 출력 포트, 라우팅 처리기, 교환 조직

입력 포트

  • 라우터에서 물리층과 데이터 링크층의 기능을 수행
  • 물리층 처리 - 물리적 신호를 디지털 데이터로 변환
  • 오류 탐지 및 수정 - 전송 중 발생한 오류 처리
  • 데이터 링크층 처리 - 프레임 단위 처리 및 패킷 추출
  • 패킷 분석 - 네트워크층에 의해 포워딩될 수 있도록 준비

출력 포트

  • 입력 포트와 같은 기능 수행하나 수행 순서가 반대
  • 출력되는 패킷이 큐에 저장 → 패킷이 캡슐화 → 물리층 기능에 의해 회선으로 보낼 신호로 변경

라우팅 처리기

  • 네트워크층의 기능을 수행
  • 목적지 주소를 사용하여 다음 홉 주소를 찾는 역할
  • 라우팅 테이블 검색 과정(table lookup) 담당
  • 최신 라우터에서는 하드웨어적으로 구현하여 고속 처리

교환 조직 (크로스바, 배년, 배춰-배년)

  • 라우터에서 가장 복잡한 업무를 담당
  • 입력 큐에서 출력 큐로 이동시키는 핵심 역할
  • 속도: 입력/출력 큐의 크기에 직접적인 영향

크로스바 교환기

  • 각 접점에서 전자 마이크로교환기를 사용하여 n개의 입력과 n개의 출력을 격자 형태로 연결한다.

배년 교환기

  • 각 단계에서 제어 마이크로교환기가 가진 상태에 따라 교환기능 결정
  • 마이크로교환기는 2상태로 표현 (닫힘/열림 포트 변환)
  • 입력이 해당하는 log₂(n)개의 단계를 알맞게 연결하여 n/2개의 아이크로교환기가 있는 출력 포트 선택

 

배춰-배년 교환기

  • 배년 교환기의 문제점인 두 개의 패킷이 같은 출력 포트로 가지 않는 경우에도 두 패킷 사이에 내부 충돌이 발생하는 문제 발생할 수 있음
  • 배년 교환기 앞에 다른 교환기를 두어 입력 패킷을 최종 목적지에 따라 정렬하도록 하는 새로운 교환기