🖥️ Computer Science/Network

[CN] 4장: IP: the Internet Protocol (Datagram Format, Addressing)

kyxxn 2024. 7. 11. 16:18

IP: the Internet Protocol (Datagram Format, Addressing)

Datagram Format

네트워크 계층 기능 & IP Datagram Format

네트워크 계층 기능

네트워크 계층은 비 신뢰적임

  • 경로선택 알고리즘
    • 라우팅 프로토콜 (RIP, OSPF, BGP)
    • SDN 컨트롤러
  • IP 프로토콜
    • Datagram Format
    • Addressing
    • Packet Handling Rules
  • ICMP 프로토콜
    • 상태 진단/디버깅
    • 패킷 손실의 위치를 찾음

IP Datagram Format

IP 헤더는 20byte

IP 단편화/재결합

링크 계층마다 MTU가 달라서
네트워크 계층에서 IP 데이터그램을 단편화(분할)함
목적지 호스트에서 재결합하여 데이터그램을 합침

단편화

  • 식별자
    • 원본 데이터그램 구분
  • 플래그 - 3bit
    • 첫 번째 비트 - 미사용
    • 두 번째 비트 - 1이면 단편화 불가능
    • 세 번째 비트 - 마지막 조각이면 0
  • 오프셋
    • 조각의 순서를 나타냄

단편화 예시

Addressing

IP Addressing

IP 주소

호스트 또는 라우터의 인터페이스와 관련된 32비트 식별자

인터페이스

호스트/라우터와 물리적 링크 간의 연결

  • 라우터에는 다수의 인터페이스가 있음
  • 호스트에는 하나 혹은 두 개의 인터페이스 (랜선, 와이파이)

서브넷

중계 라우터를 통과하지 않고,
물리적으로 도달할 수 있는 장치의 인터페이스들로 구성된 네트워크

IP 주소의 구조

  • Subnet Part: 서브넷 식별 (n bit)
    • 같은 서브넷에 있는 장치는 동일한 상위 비트를 가짐
    • 서브넷 마스크와 AND 연산으로 식별
  • Host Part: 나머지 하위 비트 (32-n bit)
    • 서브넷 안에서 인터페이스를 식별
    • 호스트를 구별함

서브넷 마스크

/24 라면, 상위 24비트 = IP 주소의 서브넷 부분

11111111 11111111 11111111 00000000

CIDR (Classless Inter Domain Routing, 사이다)

CIDR = 서브넷 주소체계 표기를 일반화

클래스로 나누지 않고,
서브넷 부분의 길이가 임의로 변경함

주소형식: a.b.c.d/x (x는 네트워크 프리픽스의 비트 수)

예약된 IPv4 주소

  • This-host 주소: 0.0.0.0/32

    [DHCP] 호스트가 패킷 보낼 때, 자신의 IP주소를 모르는 경우

  • 제한된 브로드캐스트 주소: 255.255.255.255/32

    [DHCP] 서브넷의 모든 장치로 패킷을 보낼 때 사용

  • 루프백 주소: 127.0.0.1/8 (SW 테스트용)

    패킷이 호스트를 벗어나지 않음

  • 사설 주소: 192.168.0.0/16

호스트가 어떻게 IP주소의 호스트 부분을 획득하는가 ? (DHCP)

  1. 네트워크 관리자가 IP 주소를 수동적으로 할당 → 고정적임

  2. DHCP, 동적 호스트 구성 프로토콜 (자동)

    → 서버에서 동적으로 주소를 획득함

DHCP: 서버에서 동적으로 주소를 획당

Dynamic Host Configuration Protocol

  • UDP에서 사용
  • 사용중인 임시 IP 주소를 임대
  • IP 주소 재사용 허용 (연결/켜진 동안에만 IP주소를 유지함)
  • 여러 네트워크에 접속하고 떠나는 이동중인 사용자를 지원 (모바일)

  1. Discover: 호스트는 DHCP 발견 메세지를 브로드캐스트
  2. Offer: DHCP 서버는 DHCP 제공 메세지로 응답
  3. Request: 호스트는 DHCP 요청 메세지로 IP 주소를 요청함
  4. ACK: DHCP는 DHCP ACK 메세지로 IP주소를 줌

DHCP 서버는 라우터에 함께 배치되어
라우터가 연결된 모든 서브넷에 서비스를 제공함

추가 정보 제공

  • 서브넷 마스크
    IP 주소의 네트워크 부분과 호스트 부분을 구별
  • DNS 서버의 이름 및 IP 주소

DHCP 예시

발견

  1. 노트북이 네트워크에 연결되어 DHCP를 사용하려 함
  2. 노트북은 DHCP 발견 메세지를 생성하고 캡슐화되어 브로드캐스트 됨

제공

  1. 서버가 메세지를 수신하고, 사용 가능한 IP 주소를 포함한 DHCP 메세지를 생성
  2. 위 DHCP 메세지는 캡슐화되어 클라이언트에게 제공 (브로드캐스트)

요청

  1. 클라이언트는 Offer 메세지를 수신 후, 특정 IP를 얻고자, DHCP 서버의 정보를 포함하여 브로드캐스트로 Request 요청

ACK

  1. 선택된 DHCP 서버는 클라이언트의 요청을 확인하고, IP 주소 할당을 확정하는 ACK 메세지 생성
  2. ACK에는 IP 주소.. 등이 포함되어 캡슐화되어 클라이언트에게 전달
  3. 클라이언트는 수신하고, 이제 IP주소를 사용하게 됨

네트워크가 어떻게 IP주소의 서브넷 부분을 획득하는가 ?

ISP로부터 할당 받은 IP 주소 공간 (주소블록)의 일부분을 사용

ISP가 제공해준 IP 주소

11001000 00010111 00010000 00000000 (200.23.16.0/20)

만약 8개의 서브넷을 생성하길 원한다면 3비트가 필요

서브넷 20비트 + 프리픽스 3비트 = 23

계층적 주소체계: 경로집약

계층적 주소 지정을 하면,
네트워크 프리픽스만으로 구별 → 포워딩 테이블 크기 감소

만약 A-ISP의 조직 1이 다른 ISP로 넘어간다면 ?

최장 프리픽스 매칭을 통해 구체적으로 전송

ISP는 어떻게 주소 블록을 획득하는가 ?

ICANN에서 할당해줌

  • IP 주소 할당
  • DNS 루트 서버 관리
  • 도메인 이름 할당 및 도메인 이름 분쟁 해결

32비트 길이의 IPv4주소가 충분한가 ?

현재 주소의 개수가 250억개 정도라 함

IPv4는 42억개까지 표현 가능한데, 이는 불가능

→ DHCP와 NAT를 통해 문제를 완화시킴

NAT: Network Address Translation

사설망 내 모든 장치는 공인망의 하나의 IP 주소를 공유함
호스트의 사설망 IP는 하나의 공유중인 IP 주소로 나감

138.76.29.7

→ 사설망에서 출발하는 모든 데이터그램은 동일한 출번지를 가짐

단, 출발지 포트번호는 다름 !

192.168.0/24

→ 사설망 내에서 데이터그램의 출발지 또는 목적지 IP 주소

NAT 장점

  1. 단 하나의 공인 IP 주소로, 사설망의 모든 장치가 인터넷 접속 가능
  2. 외부에 알리지 않고, 사설망의 호스트 IP 주소 변경 가능
    외부에 보이는 건 공인망 NAT 라우터밖에 없음
  3. 사설망에 있는 호스트 IP 주소를 변경하지 않고, ISP 변경 가능
  4. 보안 강화 - 외부에서 사설망 내부가 보이지 않음

NAT 라우터의 필수 구현 기능

호스트의 IP를 NAT의 IP로 어떻게 바꿨는지 기억해야 함
이를 NAT 변환 테이블에서 저장하고 있음

  1. 데이터그램 송신
    모든 송신 데이터그램의 [출발지 IP 주소, 포트번호] → [NAT IP 주소, 새 포트번호]로 변환
  2. 모든 [출발지 IP 주소, 포트번호]에서 [NAT IP 주소, 새 포트번호] 변화 쌍을 NAT 변환 테이블에서 기억
  3. 데이터그램 수신
    모든 수신 데이터그램의 목적지 필드에 있는 [NAT IP 주소, 새 포트번호]를 NAT 테이블에 저장된 [출발지 IP 주소, 포트번호]로 변환

포트번호 필드

포트번호는 16비트 길이를 지님

Q. 외부에서 사설망을 접속하는 방법은 ?

→ 라우터 관리 페이지에서 포트 포워딩 설정

IPv6

IPv4 주소 공간이 고갈되어 사용됨
빠른 처리 및 전달 가능
’흐름’에 대한 다양한 네트워크 계층 처리 가능

IPv6 Datagram format

  • 헤더는 무조건 40바이트 고정
  • 사라진 필드
    • 다음 헤더 프로토콜 필드 사용가능
    • 체크섬 - 버리는게 효율적이다
    • 단편화와 재결합

IPv4 → IPv6 (터널링)

터널링: IPv6 데이터그램은 IPv4 라우터 사이에서 IPv4 데이터그램의 페이로드로써 전달됨 (패킷 안의 패킷)

IPv6인 A 입장에서는 목적지가 F임

근데 IPv6은 B와 E에서 IPv4의 페이로드로 전달됨

그래서 B → C와 C → D, D → E를 보면 IPv6내용이 페이로드로 전달됨

B와 E에 대한 연결이 빨간색

일반화된 포워딩, SDN

각 라우터에는 포워딩 테이블이 존재했다.

헤더에서 목적지 IP 주소를 읽고,
포워딩 테이블에 의해 목적지 라우터를 지정하는 방식
  • 목적지 기반 전달
    : 목적지 IP 주소 기반으로 전달
  • 일반화된 포워딩
    • 다양한 헤더 필드가 액션을 결정할 수 있음
    • 다양한 액션이 가능: drop/copy/modify/log packet
    • 패킷 스위치, 플로우 테이블: 일반화된 포워딩 테이블

Flow table 추상화

  • 흐름
    • 출발지부터 목적지까지 일련의 데이터그램의 흐름
    • 다양한 헤더필드 값으로 정의 (링크, 네트워크, 트랜스포트 계층 필드들)
  • 일반화된 포워딩
- match
- actions
- priority
- counters

OpenFlow

: SDN을 구현하는 대표적인 기술

Match + Action: 추상화를 통해 다양한 종류의 장치를 통합