CS 공부/네트워크
Wireshark로 배우는 컴퓨터네트워크 [5장 IP 주소]
kkyoug
2025. 5. 31. 17:01
- 연결형과 비연결형 서비스
- 직접 전달과 간접 전달
- 포워딩
- 라우터의 구조
- IP 패킷을 전달하고 포워딩하는 과정에 대해 설명한다.
- 전달: 네트워크층의 제어 하에 네트워크가 패킷을 처리하는 방법을 말함
- 포워딩: 패킷을 다음 지점으로 전달하는 과정을 말한다.
1. 연결형과 비연결형 서비스
- 네트워크에서 패킷 전달은 연결형이나 비연결형 서비스를 이용하여 수행된다.
연결형 서비스
- 발신지의 네트워크층 프로토콜은 패킷을 보내기 전에 먼저 목적지의 네트워크층 프로토콜과 연결한다.
- 연결이 설정되면 발신지에서 목적지로 가는 패킷들은 순서대로 하나씩 보내진다.
- 패킷들 사이에 상관관계가 유지되어 모든 패킷은 같은 경로를 통해 전달됨
- 같은 발신지와 같은 목적지 주소를 갖는 패킷에 대한 라우팅 결정은 연결이 설정될 때 한 번 수행된다.
비연결형 서비스
- 각 패킷은 상호 독립적으로 처리한다.
- 패킷들 사이에 아무런 관계가 없으며 하나의 메시지에 속한 패킷들이 같은 목적지에 전달되더라도 서로 다른 경로로 전달될 수 있다.
2. 직접 전달과 간접 전달
- 네트워크층은 물리적인 네트워크를 통해 패킷이 처리되는 과정을 감독한다.
- **IP 패킷(데이터그램)**을 발신지에서 최종 목적지까지 전달하는 것이다.
- 패킷을 전달하는 방법을 패킷 포워딩이라고 한다.
- 직접 전달과 간접 전달이 있다
2.1 직접 전달
- 패킷의 발신지와 목적지가 같은 물리 네트워크에 위치하거나 또는 최종 라우터와 목적지 호스트 사이에 전달되는 경우에 수행된다.
- 마스크를 사용하여 목적지의 네트워크 주소를 추출
- 추출한 주소를 자신이 연결된 네트워크 주소와 비교하여 두 주소가 같을 경우 직접 전달이 수행됨
- 직접 전달의 경우 송신자는 목적지 IP 주소를 사용하여 목적지 물리 주소를 찾는다.
- 해당 목적지 IP 주소를 목적지 물리 주소와 함께 데이터 링크층으로 보내서 패킷이 실제로 전달되도록 한다.
- 이러한 과정이 IP 주소를 물리 주소로 변환하는 과정(ARP)
2.2 간접 전달
- 목적지 호스트가 전달자와 같은 네트워크에 있지 않으면 패킷은 간접적으로 전달됨.
- 패킷은 최종 목적지와 같은 물리적인 네트워크에 연결된 라우터에 도달할 때까지 여러 라우터를 경우하여 전달됨.
- 송신자는 목적지 IP 주소와 라우팅 테이블을 사용하여 패킷이 전달되어야 하는 다음 라우터의 IP 주소를 찾는다.
- 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
- 과정
- [목적지 네트워크 주소 찾기] 목적지 네트워크의 네트워크 주소는 목적지 호스트가 어디에 위치하고 있는지 알려준다.
- [라우팅 테이블 검색] 다음 홉 주소는 간접 전달의 경우 패킷이 어느 라우터에 전달되어야 하는지 알려준다. (직접 전달의 경우 이 열은 비어있음)
- 인터페이스 번호는 패킷이나가게 되는 출력 포트를 정의
사진에 대한 설명
- 패킷의 목적지 주소 추출
- 목적지 주소의 복사본을 사용하여 주소의 클래스를 알아냄
- 오른쪽으로 28 쉬프트 연산을 하면 알 수 있음
- 0 ~ 7사이면 클래스 A
- 8 ~ 11 사이면 클래스 B
- 12또는 13이면 클래스 C
- 14면 클래스 D
- 15면 클래스 E
- 클래스에 대한 결과와 목적지 주소를 사용하여 네트워크의 주소 추출
- 주소의 클래스와 네트워크 주소를 사용하여 다음 홉 주소(라우터)를 찾는다.
- 모듈이 네트워크 주소를 탐색하는데 부합되는 엔트리가 발견되면 이 엔트리에서 다음 홉 주소와 출력 포트의 인터페이스 번호를 추출
- 아니라면 디폴트가 사용됨
예제 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인 패킷을 받았다. 패킷이 어떻게 포워딩 되는지 모여라
- 목적지 주소를 2진법으로 변환
- 11000000 000100000 00000111 00001110
- 오른쪽으로 28비트 이동
- 00000000 00000000 00000000 00001100
- → 클래스 C인것을 확인 가능 (12)
- 왼쪽 24비트만 뽑아주면 192.16.7.0이 나온다.
- R2 라우터에게 맡김(ARP 변환을 위해)
예제 5.3
- 라우터 R1은 목적지 주소가 167.24.160.5인 패킷을 수신한다. 어떻게 포워딩 되는지 보여라.
- 목적지 주소를 2진법으로 변환
- 10100111 00011000 10100000 00000101
- 오른쪽으로 28비트 쉬프트 연산
- 00000000 00000000 00000000 00001010
- 클래스 B인것을 확인 가능(10)
- 왼쪽 16비트만 뽑아주면 167.24.0.0이 나옴
- 부합된 엔트리를 찾지 못해 디폴트 라우터에게 전달된다.
서브넷팅이 있는 경우 포워딩
- 클래스 기반 주소지정에서 서브넷팅은 조직 내에서 수행된다.
- 가변 길이 서브넷팅 사용 → 여러 개의 테이블 필요
- 고정 길이 → 하나의 테이블만 필요
- 모듈은 패킷의 목적지 주소를 추출
- 목적지 주소가 테이블 내의 호스트 지정 주소와 같으면, 테이블로부터 다음 홉과 인터페이스 번호를 추출
- 목적지 주소와 마스크를 사용하여 서브넷 주소 추출
- 서브넷 주소를 사용하여 테이블을 탐색하여 다음 홉 주소와 인터페이스 번호를 찾는다. 부합되는 인터페이스 없을경우 디폴트 사용
- 다음 홉 주소와 인터페이스 번호가 ARP에게 전달됨
예제 5.4
- 사이트의 주소는 145.14.0.0/16 (클래스 B 주소)
- 145.14.0.0/18 → m0 포트
- 145.14.64.0/18 → m1 포트
- 145.14.128.0/18 → m2 포트
- 145.14.192.0/18 → m3 포트
- 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개의 아이크로교환기가 있는 출력 포트 선택
배춰-배년 교환기
- 배년 교환기의 문제점인 두 개의 패킷이 같은 출력 포트로 가지 않는 경우에도 두 패킷 사이에 내부 충돌이 발생하는 문제 발생할 수 있음
- 배년 교환기 앞에 다른 교환기를 두어 입력 패킷을 최종 목적지에 따라 정렬하도록 하는 새로운 교환기