본문 바로가기
네트워크

인터넷 프로토콜(IP) : IPv4, 주소체계, IPv6

by SpearZero 2024. 3. 4.

IPv4 데이터그램 포맷

  • 버전 번호 : 4비트로 데이터그램의 IP 프로토콜 버전을 명시한다. 라우터는 버전 번호를 확인하여 데이터그램의 나머지 부분을 어떻게 해석할지 결정한다.
  • 헤더 길이 : IPv4 데이터그램은 헤더에 가변 길이 옵션을 포함한다.
    • 이 네 비트로 IP 데이터그램에서 실제 페이로드가 시작하는 곳을 결정한다.
      • ex) 데이터그램에 캡슐화된 트랜스포트 계층 세그먼트가 시작하는 곳
  • 서비스 타입 : 각기 다른 유형의 IP 데이터그램을 구분한다. 예를 들어 실시간 데이터그램과 비실시간 트래픽을 구분하는데 유용하다.
  • 데이터그램 길이 : 바이트로 계산한 IP 데이터그램(헤더와 데이터)의 전체 길이다. 16비트이므로 IP 데이터그램의 이론상 최대 길이는 65,553바이트이지만 1,500바이트보다 큰 경우는 거의 없다.
    • 이더넷의 최대 전송단위는 1,500이므로 최대 크기의 이더넷 프레임의 페이로드 필드에 IP 데이터그램이 장착될 수 있다.
  • 식별자, 플래그, 단편화 오프셋 : IP 단편화와 관련이 있다.큰 IP 데이터그램은 여러개의 작은 IP 데이터그램으로 분할된 다음 목적지로 독립적으로 전달되며, 최종 호스트의 트랜스포트 계층으로 전달되기 전에 다시 모인다. IPv6은 단편화를 허용하지 않음
  • TTL(time-to-live) : 네트워크에서 데이터그램이 무한히 순환되지 않도록 한다. 이 필드값은 라우터가 데이터그램을 처리할 때마다 감소한다. TTL 필드가 0이 되면 라우터가 데이터그램을 폐기한다.
  • 프로토콜 : 일반적으로 IP 데이터그램이 최종 목적지에 도착했을 때만 사용된다. IP 데이터그램에서 데이터 부분이 전달될 목적지의 트랜스포트 계층의 특정 프로토콜을 명시한다.
    • 6은 데이터 부분을 TCP로, 17은 UDP로 데이터를 전달하라는 뜻이다.
  • 헤더 체크섬 : 라우터가 수신한 IP 데이터그램의 비트 오류를 탐지하는 데 도움을 준다.
  • 출발지와 목적지 주소 : 출발지가 데이터그램을 생성할 떄, 자신의 IP 주소를 출발지 IP 주소 필드에 삽입하고 목적지 IP주소를 목적지 IP 주소 필드에 삽입한다.
  • 옵션 : IP 헤더를 확장한다. 거의 사용되지 않음
  • 데이터(페이로드) : TCP나 UDP같은 페이로드 데이터를 담고 있다.

IPv4 주소 체계

호스트는 일반적으로 네트워크와 연결되는 하나의 링크를 갖는다. 호스트 IP가 데이터그램을 보낼 때 이 링크를 통해 데이터링크를 보낸다. 호스트와 물리적 링크 사이의 경계를 인터페이스(interface)라고 부른다.

 

 

라우터는 여러개의 인터페이스를 갖는다. 호스트는 일반적으로 한개 또는 두개의 인터페이스를 가진다.(이더넷, 802.11)

 

서브넷을 결정하려면 먼저 호스트나 라우터에서 각 인터페이스를 분리하고 고립된 네트워크를 만든다. 이 고립된 네트워크의 종단점은 인터페이스의 끝이 된다. 이렇게 고립된 네트워크 각각을 서브넷이라고 부른다.

 

/24는 서브넷 마스크(subnet mask)라고 불는데, 32비트 주소의 왼쪽 24비트가 서브넷이라는 것을 가리킨다.

 

CIDR(Classless InterDomain Routing)

  • 서브넷 주소체계 표기를 일반화한다.
  • 32비트 주소는 두 부분으로 나누고, 이것은 다시 점으로된 십진수 형태의 a.b.c.d./x를 가진다.
  • x는 최상위 비트(most significant bit, MSB)를 의미하는데 x는 IP 주소의 네트워크 부분을 구성한다.
    • 이를 해당 주소의 프리픽스(prefix)또는 네트워크 프리픽스라고 부른다.
  • 주소의 나머지 32-x 비트들은 기관 내부에 같은 네트워크 프리픽스를 갖는 모든 장비를 구별한다.
  • ex) a.b.c.d/21에서 첫 21비트들은 기관의 네트워크 프리픽스를 나타내고, 나머지 11비트들은 기관 내부의 특정 호스트들을 식별한다.

클래스 주소체계(classful addressing)

  • IP 주소의 네트워크 부분을 8,16,24비트로 제한하고 각각을 A,B,C 클래스 네트워크로 분류한다.
  • 클래스 C는 254(2개의 주소는 예약된 주소)의 호스트만을 제공한다.
  • 클래스 B는 65,534개의 주소 공간을 제공한다.
    • 2,000개의 호스트를 사용하는 조직이 클래스 B를 사용하면 63,000개의 주소를 낭비하게 됨

브로드 캐스트 주소 255.255.255.255

  • 호스트가 목적지 주소가 255.255.255.255인 데이터그램을 보내면, 이 메시지는 같은 서브넷에 있는 모든 호스트에게 전달된다.

호스트 주소 획득 : 동적 호스트 구성 프로토콜

동적 호스트 구성 프로토콜(Dynamic Host Configuration Protocol)

  • DHCP는 호스트가 IP 주소를 자동으로 얻을 수 있게 한다.
  • 네트워크 관리자는 해당 호스트가 네트워크에 접속하고자 할 때마다 동일한 IP 주소를 받도록 하거나, 다른 임시 IP 주소를 할당하도록 DHCP를 설정한다.

DHCP 서버 동작

  • DHCP 서버 발견 : 새롭게 도착한 호스트는 상호작용할 DHCP를 발견한다. 호스트는 DHCP 발견 메시지(DHCP discover message)를 사용하여 수행되며, 클라이언트는 포트 67번으로 UDP 패킷을 보낸다. 호스트는 DHCP 서버 주소를 모르기 때문에 브로드캐스트 255.255.255.255를 목적지 IP 주소로 설정하고, 출발지 IP 주소를 0.0.0.0으로 설정한다.
  • DHCP 서버 제공 : DHCP 발견 메시지를 받은 DHCP 서버는 DHCP 제공 메시지(DHCP offer message)를 클라이언트로 응답한다. 목적지 주소를 255.255.255.255로 설정해 서브넷의 모든 노드로 메시지를 브로드캐스트 한다.
    • 서브넷에 여러 DHCP가 있기 때문에, 클라이언트는 여러 DHCP 제공 메시지중 가장 최적에 있는 DHCP를 선택한다.
    • DHCP 제공 메시지에는 트랜잭션ID, 클라이언트에 제공된 IP 주소, 네트워크 마스크, IP 주소 임대 기간을 포함한다.
  • DHCP 요청 : 클라이언트는 하나의 DHCP를 선택할 것이고 DHCP 요청 메시지(DHCP request message)로 응답할것이다.
  • DHCP ACK : 서버는 DCP 요청 메시지에 대해 요청된 파라미터를 확인하는 DHCP ACK 메시지(DHCP ACK message)로 응답한다.

네트워크 주소 변환(NAT)

홈 네트워크 내부에서는 10.0.0.0/24 주소체계를 이용하여 서로 패킷을 송수신 할 수 있다. 그러나 홈 네트워크를 벗어나 글로벌 인터넷으로 가는 패킷 전달은 이 주소들을 사용할 수 없다. 왜냐하면 이 주소들의 블록을 사용하는 수십만 개의 네트워크가 있기 떄문이다.

 

10.0.0.0/24 주소들은 주어진 홈 네트워크 내부에서만 의미가 있다. 패킷의 유일한 주소가 필요한 글로벌 인터넷과 송수신을 하려면 NAT가 필요하다.

 

NAT라우터는 홈 네트워크가 아닌외부 세계에서 하나의 IP 주소를 갖는 하나의 장비로 동작한다.

 

WAN에서 같은 목적지 IP 주소를 갖는 NAT 라우터에 모든 데이터그램이 도착하면, 라우터는 NAT 변환 테이블(NAT translation table)을 이용해서 내부 호스트를 식별할 수 있다. NAT 변환 테이블은 IP 주소와 포트번호를 포함하고 있다.

 

위의 그림은 NAT 동작 예시를 보여준다.

IPv6

IPv4의 주소 고갈의 소지가 있어서 IPv6이 등장하게 되었다.

IPv6 데이터그램 포맷

IPv6의 도입된 중요한 변화

  • 확장된 주소 기능
    • IP 주소를 32비트에서 128비트로 확장했다.
    • 애니캐스트 주소(anycast address)를 도입했다. 애니캐스트 주소로 명시된 데이터그램은 호스트 그룹의 어떤 이에게도 전달될 수 있다.
  • 간소화된 40바이트 헤더
    • IPv4의 많은 필드가 생략되거나 옵션으로 남겨졌다. 40바이트 고정 길이 헤더는 라우터가 IP 데이터그램을 더 빨리 처리하게 해준다.
  • 흐름 레이블링
    • IPv6는 흐름을 가지고 있다.
    • RFC 2460은 "비 디폴트 품질 서비스나 실시간 서비스 같은 특별한 처리를 요청하는 송신자에 대해 특정 흐름에 속하는 레이블링"을 가능하게 한다고 설명한다.
    • 흐름의 정확한 의미는 아직 정의되지 않았다.

IPv6의 포맷

  • 버전 : 4비트 필드는 IP 버전 번호를 인식한다. IPv6의 필드값은 6이다.
  • 트래픽 클래스(그림에서 pri) : 8비트 필드, 흐름 내의 데이터그램에 우선순위를 부여하는데 사용한다.
  • 흐름 레이블 : 20비트 필드, 데이터그램의 흐름을 인식하는데 사용된다.
  • 페이로드 길이 : 16비트, IPv6 데이터그램에서 고정길이 40바이트 패킷 헤더 뒤에 나오는 바이트 길이
  • 다음 헤더 : 데이터그램의 내용이 전달될 프로토콜을 구분한다.(TCP, UDP 등)
  • 홉 제한 : 라우터가 데이터그램을 전달할 때마다 1씩 감소하는 값, 홉 제한수가 0보다 작아지면 라우터는 데이터그램을 버려야 한다.
  • 출발지와 목적지주소
  • 데이터

IPv6에서 존재하지 않는 필드

  • 단편화/재결합 : IPv6에서 단편화와 재결합은 출발지와 목적지만이 수행한다. 라우터에서 단편화와 재결합을 하지 않으므로 네트워크에서 IP 전달 속도가 증가한다.
  • 헤더 체크섬 : 트랜스포트 계층 프로토콜과 데이터 링크 프로토콜은 체크섬을 수행하므로 네트워크 계층의 체크섬 기능을 생략했다. IPv4는 헤더 체크섬을 모든 라우터마다 수행한다.
  • 옵션 : 옵션 필드는 더 이상 표준 IP 헤더 필드가 아니다. 대신 옵션 필드는 IPv6 헤더에서 '다음 헤더'중 하나가 될 수 있다.

IPv4에서 IPv6로의 전환

IPv4 데이터그램과 호환 가능한 IPv6 시스템이 있는 반면에, 이미 IPv4로 구축된 시스템은 IPv6 데이터그램을 처리할 수 없다.

이를 해결하기 위한 방법

  • 플래그 데이 선언
    • 모든 인터넷 장비를 끄고 IPv4에서 IPv6으로 전환하기
    • 사실상 불가능하다.
  • 터널링
    • 실제로 사용하는 방법이다.

'네트워크' 카테고리의 다른 글

인터넷에서의 AS 내부 라우팅: OSPF  (0) 2024.03.12
네트워크 계층 : 제어 평면  (1) 2024.03.07
네트워크 계층 개요  (0) 2024.02.23
혼잡 제어  (1) 2024.02.19
연결지향형 트랜스포트 : TCP  (1) 2024.02.14