Book/COMPUTER NETWORKING A TOP-DOWN-APPROACH

4.3 The Internet Protocol(IP): IPv4, Addressing, IPv6, and More

S0LL 2024. 12. 3. 17:43

이 섹션에서는 인터넷의 기본 네트워크 계층 프로토콜인 **IP(Internet Protocol)**에 대해 다룬다. IP는 인터넷에서 데이터그램을 전달하는 데 핵심적인 역할을 하며, 현재 널리 사용되는 두 가지 버전인 IPv4 IPv6를 중심으로 설명이 진행된다.

 

4.3.1 IPv4 데이터그램 포맷

 

IPv4는 오늘날 인터넷에서 가장 널리 사용되는 IP 프로토콜의 버전이다.
IPv4 데이터그램은 네트워크 계층에서 사용되는 기본 단위로, **헤더(Header)**와 **데이터(Data)**로 구성된다.

여기서 헤더는 데이터그램의 처리를 위해 필요한 제어 정보를 포함하고 있다.

 

IPv4 데이터그램 포맷(그림 4.17)

그림 4.17은 IPv4 데이터그램의 포맷을 나타낸다. 각 필드의 크기와 역할은 다음과 같다:

1. Version (4비트):

IP 프로토콜 버전을 나타낸다.

IPv4 데이터그램은 항상 0100으로 설정된다.

라우터는 이 필드를 보고 데이터그램을 올바르게 해석할 수 있다.

2. Header Length (4비트):

헤더의 길이를 나타내며, 32비트 워드 단위로 측정된다.

IPv4 헤더의 최소 길이는 20바이트이다(옵션이 없는 경우).

3. Type of Service (8비트):

데이터그램의 우선순위를 설정하거나 서비스 품질(QoS)을 제공하기 위해 사용된다.

예: 실시간 트래픽(음성 통신)과 비실시간 트래픽(이메일 전송)을 구분할 수 있다.

4. Datagram Length (16비트):

데이터그램의 전체 길이를 바이트 단위로 나타낸다.

최대 값은 65,535 바이트이지만, 대부분의 데이터그램은 1,500바이트 이하이다(이더넷의 최대 전송 단위(MTU)에 맞춤).

5. Identifier, Flags, Fragmentation Offset:

데이터그램을 분할(Fragmentation)하고 다시 조립(Reassembly)하는 데 사용된다.

대형 데이터그램이 작은 MTU를 가진 네트워크를 통과할 때 여러 조각으로 나뉘어 전송된다.

6. Time-to-Live (8비트):

데이터그램의 수명을 설정한다.

데이터그램이 라우터를 통과할 때마다 이 값이 감소하며, 0이 되면 데이터그램은 폐기된다(루프 방지).

7. Protocol (8비트):

상위 계층(예: TCP, UDP)을 나타내는 숫자를 포함한다.

예: TCP(6), UDP(17).

8. Header Checksum (16비트):

헤더의 오류를 감지하기 위한 값이다.

라우터는 데이터그램의 헤더를 처리할 때 체크섬을 계산하고 오류가 있으면 폐기한다.

9. Source and Destination IP Addresses (각각 32비트):

송신자와 수신자의 IP 주소를 포함한다.

데이터그램이 네트워크를 통해 올바른 경로로 전달될 수 있도록 한다.

10. Options (가변 길이):

추가적인 제어 정보를 포함할 수 있다.

이 필드는 일반적으로 사용되지 않으며, IPv6에서는 완전히 제거되었다.

11. Data (Payload):

데이터그램의 실제 데이터 부분으로, 상위 계층(TCP 또는 UDP)에서 생성된 데이터가 포함된다.

 

 

헤더 필드의 주요 역할

 

1. Version과 Header Length:

라우터가 데이터그램의 구조를 정확히 해석하도록 돕는다.

2. Type of Service:

QoS를 제공하거나 데이터그램 우선순위를 설정한다.

3. Time-to-Live (TTL):

무한 루프를 방지하여 네트워크 안정성을 유지한다.

4. Header Checksum:

데이터그램의 무결성을 보장한다.

5. Source/Destination IP Addresses:

송신자와 수신자의 위치를 식별한다.

 

IPv4 데이터그램의 처리 과정

 

1. 생성:

송신 호스트에서 데이터그램을 생성하고 필요한 헤더 필드를 설정한다.

2. 전송:

데이터그램은 네트워크를 통해 라우터를 거쳐 최종 목적지로 전달된다.

3. 처리:

각 라우터는 헤더 정보를 해석하여 데이터그램을 다음 홉으로 포워딩한다.

4. 도착:

목적지 호스트는 데이터를 추출하여 상위 계층(TCP 또는 UDP)으로 전달한다.

 

IPv4와 IPv6의 차이점 예고

 

IPv4는 인터넷에서 오랜 기간 사용되었지만, 주소 공간의 한계와 성능 최적화 문제로 인해 IPv6가 도입되었다. 이후 섹션에서 IPv6의 개선된 데이터그램 구조와 장점에 대해 다룰 것이다.

 

 

 

4.3.2 IPv4 주소 지정 (IPv4 Addressing)

 

IPv4 주소는 인터넷에서 데이터를 올바르게 전달하기 위해 사용된다.

이는 인터넷 통신에서 매우 중요한 요소로, 네트워크와 호스트를 식별하는 데 사용된다.

 

IP 주소와 인터페이스 (Interface)

 

1. 인터페이스란?

호스트 또는 라우터가 네트워크에 연결되는 지점을 인터페이스라고 한다.

예를 들어, 라우터는 여러 네트워크를 연결하므로 각 링크에 대해 여러 인터페이스를 가진다.

2. IP 주소의 연결

IP 주소는 호스트나 라우터 자체가 아니라 각 인터페이스에 할당된다.

따라서 하나의 라우터는 각 링크(인터페이스)마다 고유한 IP 주소를 가진다.

 

IPv4 주소 형식

 

1. 32비트 구조

IPv4 주소는 32비트(4바이트)로 구성된다.

 , 약 40억 개의 고유 IP 주소를 제공한다.

2. 10진수 점-표기법 (Dotted-Decimal Notation)

32비트를 8비트씩 나눠, 10진수로 변환하고 점(.)으로 구분한다.

예: 193.32.216.9

193: 첫 8비트

32: 다음 8비트

216: 다음 8비트

9: 마지막 8비트

이진 표현은 11000001 00100000 11011000 00001001이다.

 

IPv4 주소와 서브넷 (Subnets)

 

1. 서브넷의 정의

네트워크는 여러 호스트를 포함하며, 이를 더 작은 단위로 나눈 것을 서브넷이라 한다.

각 서브넷은 네트워크를 나누는 기준이 되는 서브넷 마스크로 정의된다.

예: 223.1.1.0/24

/24는 첫 24비트가 네트워크 주소임을 나타낸다.

네트워크 주소: 223.1.1.0

호스트 범위: 223.1.1.1부터 223.1.1.254까지.

 

그림 4.18: 인터페이스 주소와 서브넷

세 가지 서브넷:

223.1.1.0/24: 호스트 223.1.1.1, 223.1.1.2, 223.1.1.3 및 라우터 인터페이스 223.1.1.4.

223.1.2.0/24: 호스트 223.1.2.1, 223.1.2.2 및 라우터 인터페이스 223.1.2.9.

223.1.3.0/24: 호스트 223.1.3.1, 223.1.3.2 및 라우터 인터페이스 223.1.3.27.

 

서브넷의 구성

 

1. 서브넷 생성 규칙

서브넷은 네트워크를 분리하며, 모든 장치는 공통된 네트워크 접두사(prefix)를 공유한다.

예: 223.1.1.0/24는 첫 24비트가 동일하다.

2. CIDR(Classless Interdomain Routing)

CIDR은 서브넷을 효율적으로 관리하기 위한 방법으로, IP 주소를 **네트워크 부분(prefix)**과 호스트 부분으로 나눈다.

예: a.b.c.d/x

x: 네트워크 접두사의 길이.

 

그림 4.19: 서브넷 주소

세 개의 서브넷:

223.1.1.0/24

223.1.2.0/24

223.1.3.0/24

 

라우터와 서브넷 연결

 

그림 4.20: 세 라우터가 여섯 서브넷을 연결

라우터 R1, R2, R3는 서로 다른 서브넷을 연결한다.

각 라우터는 포인트-투-포인트 링크를 통해 서로 연결되며, 각 링크는 고유한 서브넷을 가진다:

223.1.9.0/24: R1과 R2 연결.

223.1.8.0/24: R2와 R3 연결.

223.1.7.0/24: R3와 R1 연결.

 

주소 집계 (Address Aggregation)

 

1. 개념

네트워크 주소를 효율적으로 관리하기 위해, 여러 서브넷을 하나의 큰 네트워크 주소로 묶는다.

예: 여러 조직의 주소가 200.23.16.0/20으로 집계될 수 있다.

 

그림 4.21: 계층적 주소 지정과 경로 집계

여러 조직(Organization 0~7)이 하나의 ISP(Fly-By-Night-ISP)를 통해 인터넷에 연결된다.

각 조직의 주소는 ISP가 집계하여 200.23.16.0/20으로 나타낸다.

 

그림 4.22: 더 구체적인 경로

ISP 간에도 구체적인 주소 범위를 기반으로 경로가 선택된다.

예: 200.23.18.0/23은 더 구체적인 경로로 선택된다.

 

브로드캐스트 주소 (Broadcast Address)

 

255.255.255.255:

동일 서브넷의 모든 호스트에 메시지를 전달하기 위해 사용된다.

 

 

IP 주소 블록 및 주소 할당

 

1. IP 주소 블록의 확보

 

ISP에서 IP 주소 블록을 얻는 과정

 

조직은 일반적으로 자신의 **인터넷 서비스 제공자(ISP)**로부터 IP 주소 블록을 할당받는다.

ISP는 더 큰 IP 주소 블록을 ICANN 또는 지역 인터넷 등록 기관(RIR)으로부터 할당받아 이를 더 작은 블록으로 나눠 각 조직에 제공한다.

 

예를 들어:

ISP의 블록: 200.23.16.0/20

이 블록은 4,096개의 주소를 포함하며, 이를 8개의 /23 서브넷으로 나눌 수 있다.

각 조직에 할당된 블록:

조직 0: 200.23.16.0/23

조직 1: 200.23.18.0/23

조직 2: 200.23.20.0/23

… (최대 조직 7까지)

 

ICANN의 역할

 

IP 주소는 **인터넷 할당 번호 관리기관(ICANN)**에 의해 관리된다.

ICANN은 주소를 지역 인터넷 등록 기관(RIR)에 할당하며, 주요 RIR로는 ARIN, RIPE, APNIC, LACNIC 등이 있다.

 

2. 호스트 주소의 할당

 

정적 할당 vs. 동적 할당

 

정적 할당:

관리자가 수동으로 호스트 및 인터페이스에 주소를 할당.

동적 할당:

**DHCP(Dynamic Host Configuration Protocol)**를 사용하여 자동으로 할당.

 

3. DHCP: 동적 호스트 구성 프로토콜

DHCP는 네트워크 관리자 없이 호스트가 네트워크에 연결되었을 때 자동으로 IP 주소를 할당한다.

**플러그 앤 플레이(Plug-and-Play)**로도 알려진 DHCP는 특히 모바일 환경에서 유용하다.

 

DHCP의 작동 과정

 

DHCP는 네 단계로 이루어진다. 그림 4.24를 보며 설명한다.

1. DHCP Discover:

새로 네트워크에 연결된 호스트는 DHCP 서버를 찾기 위해 브로드캐스트 패킷을 전송한다.

이 패킷의 목적지 IP는 255.255.255.255, 송신자 IP는 0.0.0.0이다.

2. DHCP Offer:

DHCP 서버는 응답으로 DHCP Offer 메시지를 브로드캐스트로 전송.

메시지에는 제안된 IP 주소와 리스 기간(임대 기간) 정보가 포함된다.

3. DHCP Request:

호스트는 선택한 DHCP 서버에 자신의 IP 주소를 요청하는 DHCP Request 메시지를 전송한다.

4. DHCP ACK:

DHCP 서버는 요청을 승인하고, IP 주소, 서브넷 마스크, 게이트웨이 등의 네트워크 정보를 포함한 ACK 메시지를 반환한다.

 

DHCP와 네트워크 환경

 

그림 4.23은 DHCP 서버가 여러 서브넷에 걸쳐 IP 주소를 할당하는 방식을 보여준다.

DHCP 릴레이 에이전트는 DHCP 요청을 적절한 서브넷의 DHCP 서버로 전달한다.

 

4. 네트워크 주소 변환(NAT)

 

NAT(Network Address Translation)는 하나의 공용 IP 주소를 통해 여러 장치가 인터넷에 연결될 수 있도록 한다. 이는 특히 가정 및 소규모 네트워크(SOHO)에서 많이 사용된다.

 

NAT 작동 방식

 

1. 내부 네트워크 장치는 **사설 IP 주소(예: 10.0.0.1)**를 사용.

2. NAT 라우터는 공용 IP 주소(예: 138.76.29.7)를 사용하여 외부와 통신.

3. NAT 변환 테이블을 사용해 송신 및 수신 패킷의 IP 주소와 포트 번호를 매핑.

 

그림 4.25: NAT 작동

 

호스트 10.0.0.1에서 웹 서버(128.119.40.186:80)에 요청을 전송.

NAT 라우터는:

1. 송신 IP를 138.76.29.7로 변경.

2. 소스 포트를 5001로 설정하고, 이를 NAT 변환 테이블에 기록.

수신 패킷이 도착하면 NAT 라우터는 변환 테이블을 사용하여 패킷을 올바른 내부 장치로 전달.

 

NAT의 장단점

 

1. 장점:

공용 IP 주소 절약.

네트워크 보안 강화(내부 IP 주소 숨김).

2. 단점:

P2P 또는 서버-클라이언트 모델에서 문제 발생.

IP 계층 설계를 변경, 네트워크 계층의 순수성 위배.

 

보안: 방화벽과 침입 탐지 시스템(IDS)

 

NAT와 함께 **방화벽(Firewall)**과 **IDS(Intrusion Detection System)**는 네트워크 보안을 강화한다.

방화벽: IP 주소 및 포트를 기반으로 불법 트래픽 차단.

IDS: 심층 패킷 검사(Deep Packet Inspection)를 통해 악성 트래픽 탐지.


 

IPv6의 탄생 배경

 

IPv4 주소 공간(32비트)이 점차 고갈됨에 따라, 1990년대 초반에 IETF(Internet Engineering Task Force)는 IPv6를 설계하기 시작했다.

IPv4 주소 공간 고갈 예상 시점: 2011년 IANA가 마지막 IPv4 주소 블록을 할당.

IPv6는 128비트 주소 공간을 도입하여 전 세계적인 인터넷 확장을 지원한다.

 

IPv6 데이터그램 포맷

 

IPv6 데이터그램은 IPv4와 비교하여 다음과 같은 주요 변경 사항을 포함한다:

 

IPv6 데이터그램의 구성 (그림 4.26)

1. Version (4비트):

IP 프로토콜 버전을 나타내며, IPv6에서는 값이 6이다.

2. Traffic Class (8비트):

IPv4의 Type of Service(TOS)와 유사하며, 흐름 내에서 패킷 우선순위를 설정.

3. Flow Label (20비트):

특정 플로우(Flow)에 속하는 패킷을 식별.

예: 실시간 스트리밍 트래픽을 플로우로 설정하여 특별한 처리 제공.

4. Payload Length (16비트):

데이터그램의 페이로드(데이터)의 크기를 바이트 단위로 나타냄.

5. Next Header (8비트):

다음에 올 상위 계층 프로토콜(예: TCP, UDP)을 나타냄.

6. Hop Limit (8비트):

IPv4의 TTL(Time-to-Live)과 동일하며, 패킷이 라우터를 통과할 때마다 감소.

7. Source/Destination Address (각각 128비트):

송신자와 수신자의 IPv6 주소를 포함.

8. Data:

실제 페이로드로, 상위 계층 프로토콜 데이터가 포함된다.

 

IPv6의 주요 특징

 

1. 주소 공간 확장

IPv4(32비트)에서 IPv6(128비트)로 확장.

지구 상의 모든 모래알에도 고유 IP 주소를 할당할 수 있을 정도로 방대한 공간.

2. 헤더 단순화

IPv4에서 사용되던 Fragmentation, Header Checksum, Options 필드를 제거.

고정 크기(40바이트)의 헤더로 라우터의 처리 속도 개선.

3. 플로우 레이블링

트래픽의 플로우를 식별하여 특정 서비스 품질(QoS)을 제공.

4. 멀티캐스트 및 애니캐스트 지원

멀티캐스트: 그룹으로 데이터를 전송.

애니캐스트: 가장 가까운 노드로 데이터를 전송.

 

IPv4와 IPv6의 주요 차이점

 

1. 헤더 비교

IPv4는 복잡한 헤더 필드를 포함했지만, IPv6는 단순한 구조를 채택.

IPv6는 체크섬이 없어 라우터의 계산 부담을 줄임.

2. 주소 표현

IPv4: 192.168.1.1 같은 10진수 점-표기법.

IPv6: 2001:0db8:85a3:0000:0000:8a2e:0370:7334 같은 16진수로 표현.

 

IPv6 전환: IPv4에서 IPv6로

 

전환의 어려움

 

IPv4 기반의 인터넷에서 IPv6로 전환하는 데는 두 가지 주요 문제점이 있다:

1. 호환성 부족

IPv4 시스템은 IPv6 패킷을 이해하지 못함.

2. 기존 네트워크의 방대한 규모

모든 네트워크 장비를 한 번에 IPv6로 업그레이드할 수 없음.

 

해결 방안: 터널링 (Tunneling)

 

터널링은 IPv4 네트워크를 통해 IPv6 패킷을 캡슐화하여 전송하는 방법이다. 그림 4.27을 보며 설명하겠다.

 

그림 4.27: 터널링

 

논리적 관점:

IPv6 노드 간의 데이터그램이 IPv4 네트워크를 통해 캡슐화되어 전송.

물리적 관점:

1. 송신자(A)는 IPv6 패킷을 생성.

2. 노드 B가 IPv6 패킷을 IPv4 데이터그램에 캡슐화.

3. IPv4 라우터(C, D)를 통해 전달.

4. 수신자(E)는 캡슐화를 해제하여 원래의 IPv6 패킷을 추출.

 

IPv6의 도입 현황

 

1. 초기 도입 속도는 느렸으나, 최근 몇 년간 가속화.

2. Google 보고서에 따르면 클라이언트의 약 25%가 IPv6를 통해 Google 서비스에 접속.

 

결론

 

IPv6는 인터넷의 미래 확장을 위한 필수 요소이다. 그러나 전환 과정은 느리며, 네트워크 레이어에서의 변화는 애플리케이션 레이어에 비해 훨씬 더 오래 걸릴 것으로 예상된다.

 

'Book > COMPUTER NETWORKING A TOP-DOWN-APPROACH' 카테고리의 다른 글

4.5 Middleboxes  (0) 2024.12.03
4.4 Generalized Forwarding and SDN  (0) 2024.12.03
4.2 What's Inside a Router?  (0) 2024.12.03
4.1 An Overview of Network Layer  (2) 2024.12.03
3.7 TCP Congestion Control  (3) 2024.11.24