Temp

20210203, Network (1)

ezn 2021. 2. 8. 01:23

인터넷 프로토콜

인터넷 프로토콜(IPInternet Protocol)은 송신 호스트와 수신 호스트가 패킷 교환 네트워크(패킷 스위칭 네트워크, Packet Switching Network)에서 정보를 주고받는 데 사용하는 정보 위주의 규약(프로토콜, Protocol)이며, OSI 네트워크 계층에서 호스트의 주소지정과 패킷 분할 및 조립 기능을 담당한다. 줄여서 아이피(IP)라고도 한다.

IP의 정보는 패킷 혹은 데이터그램이라고 하는 덩어리로 나뉘어 전송된다. IP에서는 이전에 통신한 적 없는 호스트에 패킷을 보낼 때 경로 설정이 필요없다.

IP는 비신뢰성(unreliability)과 비연결성(connectionlessness)이 특징이다. 비신뢰성은 흐름에 관여하지 않기 때문에 보낸 정보가 제대로 갔는지 보장하지 않는다는 뜻이다. 예를 들어 전송과정에서 패킷이 손상될 수도 있고, 같은 호스트에서 전송한 패킷의 순서가 뒤죽박죽이 될 수도 있고, 같은 패킷이 두 번 전송될 수도 있으며, 아예 패킷이 사라질 수도 있다. 패킷 전송과 정확한 순서를 보장하려면 TCP 프로토콜과 같은 IP의 상위 프로토콜을 이용해야 한다.

현재 인터넷에서 사용하는 표준 프로토콜은 인터넷 프로토콜의 4번째 판인 IPv4이다. 그러나 IPv4는 주소공간 고갈 문제를 겪고 있어 조만간 6번째 판인 IPv6가 대중화될 것으로 보인다. 마이크로소프트 윈도우 7OS X리눅스 등 현재 널리 쓰이고 있는 대부분의 운영 체제는 IPv6 프로토콜을 지원한다.

IP 주소

IP 주소(Internet Protocol address, IP address, 인터넷규약주소)는 컴퓨터 네트워크에서 장치들이 서로를 인식하고 통신을 하기 위해서 사용하는 특수한 번호이다. 만약 서버가 들어가지 않으면 IP가 안전하지 않다고 한다. 네트워크에 연결된 장치가 라우터이든 일반 서버이든, 모든 기계는 이 특수한 번호를 가지고 있어야 한다. 이 번호를 이용하여 발신자를 대신하여 메시지가 전송되고 수신자를 향하여 예정된 목적지로 전달된다. IP주소를 줄여서 IP라고 부르기도 하나 IP는 인터넷 규약 자체를 가리키는 말이기 때문에 엄밀하게는 구별해야 한다.

IP 주소는 5036이나 5047, 인터넷에서만 사용되는 전화번호라고 생각할 수 있다. 한편, 이런 번호는 사람이 외우기 어렵기 때문에, 전화번호부와 같은 역할을 하는 서비스가 필요하다. DNS가 이런 역할을 하며 이런 서비스를 "도메인 이름 분석" (domain name resolution) 혹은 "이름 분석" (name resolution)이라고 한다.

오늘날 주로 사용되고 있는 IP 주소는 IP 버전 4(IPv4) 주소이나 이 주소가 부족해짐에 따라 길이를 늘린 IP 버전 5(IPv6)주소가 점점 널리 사용되는 추세이다. 수사를 할 때도 아이피추적을 자주한다.

IP 할당

고정된 IP 주소를 할당받아 사용하는 방법 이외에도 DHCP를 이용하여 동적으로 IP 주소를 할당받는 방법도 있다.

IP version 4 주소

IP version 4 주소, 줄여서 IPv4 주소는 오늘날 일반적으로 사용하는 IP 주소이다. 이 주소의 범위는 32비트로 보통 0~255 사이의 십진수 넷을 쓰고 .으로 구분하여 나타낸다. 따라서 0.0.0.0부터 255.255.255.255까지가 된다. 이론적으로 42억9496만7296개의 IP가 존재한다. 중간의 일부 번호들은 특별한 용도를 위해 예약되어 있다. 이를테면 127.0.0.1은 localhost(로컬 호스트)로 자기 자신을 가리킨다. (사실 127로 시작하는 모든 IPv4 주소가 마찬가지다)

IP version 6 주소

모든 단말에 주소를 부여하기에 32비트로는 부족해짐에 따라 IP의 새로운 버전인 버전 6에서는 주소 길이를 128비트로 늘렸다. IPv6 주소는 보통 두 자리 16진수 여덟 개를 쓰고 각각을 : 기호로 구분한다.


IPv4

IPv4는 인터넷 프로토콜의 4번째 판이며, 전 세계적으로 사용된 첫 번째 인터넷 프로토콜이다. 과거에 인터넷에서 사용되는 유일한 프로토콜이였으나 오늘날에는 IPv6이 대중화되었다.

IPv4는 패킷 교환 네트워크 상에서 데이터를 교환하기 위한 프로토콜이다. 데이터가 정확하게 전달될 것을 보장하지 않고, 중복된 패킷을 전달하거나 패킷의 순서를 잘못 전달할 가능성도 있다. 데이터의 정확하고 순차적인 전달은 그보다 상위 프로토콜인 TCP에서(그리고 UDP에서도 일부) 보장한다.

IPv4의 주소체계는 총 12자리이며 네 부분으로 나뉜다. 각 부분은 0~255까지 3자리의 수로 표현된다. IPv4 주소는 32비트로 구성되어 있으며, 현재 인터넷 사용자의 증가로 인해 주소공간의 고갈에 대한 우려가 높아지고 있다. 이에 따라 대안으로 128비트 주소체계를 갖는 IPv6가 등장하였다. 중국의 경우 주소공간 고갈을 우려하여 일부에서 독자적으로 IPv9(십진제 인터넷 주소체계)과 숫자도메인(Digital Domain Name System, DDNS)이 결합된 개념인 IP 주소와 도메인 이름이 동일한 네트워크 체제인 All-Digital-Domain-Address (ADDA)를 사용하기도 한다.

2011년 2월 4일부터 모든 IPv4 주소가 소진되어 IPv4 할당이 중지되었다.

구성 단위

A 클래스

  • A Class는 최고위의 Class로서, 1~126 (0, 127 예약됨)범위의 IP주소를 가진다. 두 번째, 세 번째 그리고 네 번째 단위의 세 숫자는 A Class가 자유롭게 네트워크 사용자에게 부여가 가능한 아이피이다.

B 클래스

  • B Class는 두 번째로 높은 단위의 Class로써, 아이피 구성에서 첫 번째 단위의 세 숫자는 128 - 191 가운데 하나를 가지며 (위의 예에서 181), 두 번째 단위의 세 숫자는 B Class가 접속할 수 있는 네트워크를 지시한다.

C 클래스

  • C Class는 최하위의 Class로써, 아이피 구성에서 첫 번째 단위의 세 숫자는 192 - 223 가운데 하나를 가지며 (위의 예에서 221), 두 번째와 세 번째 단위의 세 숫자는 C Class가 접속할 수 있는 네트워크를 지시한다. C Class가 자유로이 부여할 수 있는 아이피는 마지막 네 번째 단위의 254 개이다. (2개는 예약)

특수 용도 주소


IPv6

IPv6(Internet Protocol version 6)는 인터넷 프로토콜 스택 중 네트워크 계층의 프로토콜로서 버전 6 인터넷 프로토콜(version 6 Internet Protocol)로 제정된 차세대 인터넷 프로토콜을 말한다. 인터넷은 IPv4 프로토콜로 구축되어 왔으나 IPv4 프로토콜의 주소가 32비트라는 제한된 주소 공간 및 국가별로 할당된 주소가 거의 소진되고 있다는 한계점으로 인해 지속적인 인터넷 발전에 문제가 예상되어, 이에 대한 대안으로서 IPv6 프로토콜이 제안되었으며, 국제 표준이 RFC를 통해서 확정되었고, 실제로 IPv6 주소는 휴대폰 및 컴퓨터에 할당되어 적용되고 있다.

역사


2012년 1월 30일 기준으로 IPv4의 2^32인 4,294,967,296개 중에

3,410,303,904개가 할당,

588,514,560개가 특수용도,

296,148,832개가 미할당이다.

IPv6은 팰로앨토 연구소에서 개발하고, 1994년 IETF(국제 인터넷 표준화 기구)가 채택하였다. 처음에는 IP Next Generation(IPng)라고 불렀다.

현재 IPv6의 사용량은 매우 적은 편이며, 인터넷의 나머지 부분은 아직도 IPv4 프로토콜로 작동하고 있다.

2012년 1월 30일 기준으로 IPv6의 2^128인 약 3.4x10^38개(340,282,366,920,938,463,464,374,607,431,768,211,456개 가운데 21,131,922개의 주소만 전 세계에서 할당되어 사용중이고 이 중에 20,971,520개의 주소는 특수목적용으로 할당되어 있으므로 실제 160,402개의 주소만 실제 사용되고 있다. 대한민국에서는 현재 5,219개의 IPv6 주소를 할당받아 사용중이다.

특성


IPv6와 기존 IPv4 사이의 가장 큰 차이점은 바로 IP 주소의 길이가 128비트로 늘어났다는 점이다. 이는 폭발적으로 늘어나는 인터넷 사용에 대비하기 위한 것이다. 또한 IPv6는 여러가지 새로운 기능을 제공하는 동시에 기존 IPv4와의 호환성을 최대로 하는 방향으로 설계되었다. 때문에 몇몇 예외(FTP, NTPv3 등)를 제외하고 대부분의 네트워크 수준 상위 프로토콜들은 큰 수정 없이 IPv6 상에서 동작할 수 있다. IPv6 프로토콜은 다음과 같은 특성을 지니는 프로토콜로 개발되었다.

  • IP 주소의 확장 : IPv4의 기존 32비트 주소공간에서 벗어나, IPv6는 128비트 주소공간을 제공한다.
  • 호스트 주소 자동 설정 : IPv6 호스트는 IPv6 네트워크에 접속하는 순간 자동으로 네트워크 주소를 부여받는다. 이는 네트워크 관리자로부터 IP 주소를 부여받아 수동으로 설정해야 했던 IPv4에 비해 중요한 이점이다.
  • 패킷 크기 확장 : IPv4에서 패킷 크기는 64킬로바이트로 제한되어 있었다. IPv6 점보그램 옵션을 사용하면 특정 호스트 사이에는 임의로 큰 크기의 패킷을 주고받을 수 있도록 제한이 없어지게 된다. 따라서 대역폭이 넓은 네트워크를 더 효율적으로 사용할 수 있다.
  • 효율적인 라우팅 : IP 패킷 처리를 신속하게 할 수 있도록 고정크기의 단순한 헤더를 사용하는 동시에, 확장헤더를 통해 네트워크 기능에 대한 확장 및 옵션기능의 확장이 용이한 구조로 정의하였다.
  • 플로 레이블링 (Flow Labeling) : 플로 레이블(flow label) 개념을 도입, 특정 트래픽은 별도의 특별한 처리(실시간 통신 등)를 통해 높은 품질의 서비스를 제공할 수 있도록 한다.
  • 인증 및 보안 기능 : 패킷 출처 인증과 데이터 무결성 및 비밀 보장 기능을 IP 프로토콜 체계에 반영하였다. IPv6 확장헤더를 통해 적용할 수 있다.
  • 이동성 : IPv6 호스트는 네트워크의 물리적 위치에 제한받지 않고 같은 주소를 유지하면서도 자유롭게 이동할 수 있다. 이와 같은 모바일 IPv6는 RFC 3775와 RFC 3776에 기술되어 있다. (IPv4에도 모바일 IP가 정의되어 있지만 아직 많이 사용되지 않는다.)

IPv6 무상태 주소 자동 설정

  • IPv6 무상태의 의미는 어떠한 상태에서도 (Stateless) 자동으로 주소를 설정할 수 있다는 의미가 된다. 요약하면 일반적으로는 주소를 할당 받기 위해서는 RA 메시지를 기다려서 주소를 구성해야 하지만, 해당 링크의 고유성을 보장된 주소를 미리 예약된 알고리즘에 의해서 자동으로 구성할 수 있는 기능이다.
  • IPv6 노드의 모든 인터페이스에는 위에 기술된 것처럼 두가지 이상의 주소가 할당되는데 글로벌 주소 및 링크 로컬 주소가 있어야 한다. 링크 로컬 주소는 대개 인터페이스 및 링크 로컬 접두어 FE80 :: / 10 식별자로 자동 구성 된다.
  • 링크 로컬 주소는 노드가 링크의 다른 노드와 통신 할 수 있게 하고 노드를 추가 구성하는 데 사용될 수 있다.

노드는 수동 구성이나 DHCP (Dynamic Host Configuration Protocol) 서버와 같은 서버의 도움 없이도 네트워크에 연결하여, 인터넷과 연결될 수 있는 글로벌(전역) IPv6 주소를 자동으로 생성할 수 있다. IPv6을 사용하는 링크의 장치는 라우터 알림(Router Advertisement, RA) 메시지의 모든 글로벌 접두사를 알리고 링크의 기본 장치로서의 기능을 통지하여 구성한다. RA 메시지는 주기적으로 그리고 시스템 시작시 호스트가 보내는 장치 요청 메시지에 대한 응답으로 전송된다. 링크상의 노드는 인터페이스 ID(64비트)를 RA 메시지에 포함된 접두사(64비트)에 추가하여 전역 IPv6 주소를 자동으로 구성할 수 있다. 그리고 노드에서 구성한 결과로 나오는 128비트 IPv6 주소에 중복 주소 검색이 적용되어 링크의 고유성을 보장한다. ICMP 패킷 헤더의 유형 필드에 133의 값을 갖는 장치 요청 메시지는 시스템 시작시 호스트에 의해 보내지므로, 다음 예약 된 네트워크 상에서의 RA 메시지를 기다릴 필요 없이 호스트가 즉시 자동으로 주소를 구성할 수 있다.

IPv6 주소공간


IPv4는 32비트의 주소공간을 제공함에 반해, IPv6는 128비트의 주소공간을 제공한다.

32비트 주소공간이란, 32비트로 표현할 수 있는 주소영역을 지칭한다. 32비트에 의해 생성할 수 있는 모든 IPv4 주소는 2^32인 4,294,967,296개이다.

IPv6의 128비트 주소공간은 128 비트로 표현할 수 있는 2^128개인 약 3.4x10^38개(340,282,366,920,938,463,463,374,607,431,768,211,456개)의 주소를 갖고 있어 거의 무한대로 쓸 수 있다.

IPv4 주소에 비해 IPv6 주소는 그 표현 비트 수가 128비트로 IPv4의 32비트에 비해 4배가 되었지만, 생성되는 IPv6 주소공간 영역은 IPv4 주소공간에 비해 2^96배의 크기를 갖는다.

IPv6 주소공간은 향후 인터넷에 등장할 대량의 유비쿼터스 통신 장치들이 상호 통신을 할 수 있는 주소공간을 제공할 수 있다. 냉장고, TV, AV 스피커, DVD 플레이어, 홈 보안장치, 전화기 등 각 요소 장비들이 지능화하면서 동시에 무선 인터넷 등을 통해 상호 통신할 수 있도록 각 장치(device)에 IPv6 주소를 제공할 수 있다.

128비트의 주소공간은 지표면의 모든 공간에 10m^2당 1개씩의 IPv6/48 네트워크를 제공할 수 있을 만큼의 많은 개수를 갖는다. 어떤 사람들은 이 주소가 지나치게 많고, 그렇게 많은 네트워크가 필요하게 될 일은 영원히 없을 거라고 주장하지만, IPv6의 128비트 주소공간은 주소가 바닥나는 것을 막는 것 외에도 네트워크가 여러 개의 작은 단위로 조각나는 것을 막아 라우팅을 빠르게 만들기 위한 목적도 갖는다.

주소 표현

IPv6의 128비트 주소공간은 다음과 같이 16비트(2옥텟)를 16진수로 표현하여 8자리로 나타낸다.

  • 2001:0db8:85a3:08d3:1319:8a2e:0370:7334

그러나 대부분의 자리가 0의 숫자를 갖게 되므로, 0000을 하나의 0으로 축약하거나, 혹은 아예 연속되는 0의 그룹을 없애고 ':' 만을 남길 수 있다. 따라서 아래의 IPv6 주소들은 모두 같은 주소를 나타낸다.

2001:0DB8:0000:0000:0000:0000:1428:57ab 2001:0DB8:0000:0000:0000::1428:57ab 2001:0DB8:0:0:0:0:1428:57ab 2001:0DB8:0::0:1428:57ab 2001:0DB8::1428:57ab

또한 맨 앞자리의 0도 축약할 수 있다. 따라서 2001:0DB8:02de::0e13는 2001:DB8:2de::e13로 축약할 수 있다.

그러나 0을 축약하고 ':'로 없애는 규칙은 두 번이나 그 이상으로 적용할 수 없다. 만약 두 번 이상 적용하는 것이 허용되어 2001::25de::cade와 같은 표현이 가능하다면, 이 표현은 다음의 네 가지 주소 가운데 어떤 것을 가리키는지 의미가 불분명해질 것이다.

2001:0000:0000:0000:0000:25de:0000:cade 2001:0000:0000:0000:25de:0000:0000:cade 2001:0000:0000:25de:0000:0000:0000:cade 2001:0000:25de:0000:0000:0000:0000:cade

네트워크 표현

IPv6 네트워크(혹은 서브넷)는 2의 제곱수를 크기로 갖는 IPv6 주소들의 집합이다. 네트워크 주소는 네트워크 프리픽스 뒤에 프리픽스의 '/' 기호와 함께 비트 수를 붙여서 나타낸다. 2001:1234:5678:9ABC::/64는 2001:1234:5678:9ABC:: 부터 2001:1234:5678:9ABC:FFFF:FFFF:FFFF:FFFF 까지의 주소를 갖는 네트워크를 나타낸다.

IPv4 주소의 IPv6 형태

기존 네트워크와의 호환성을 위해, IPv4 주소는 다음과 같은 세 가지 방법을 통해 IPv6 주소로 나타낼 수 있다.

  • 표준 IPv6 표기 : IPv4 주소 192.0.2.52는 16진수로 표시하면 0xC0000234가 된다. 이를 그대로 IPv6 주소로 변경하면 0000:0000:0000:0000:0000:0000:C000:0234가 되고, 줄이면 ::C000:0234가 된다.
  • IPv4 호환 주소 : IPv4와의 호환성과 가독성을 위해 기존 표기에 '::' 만을 붙여 ::192.0.2.52와 같이 쓸 수 있다. 그러나 이 방법은 더 이상 사용되지 않아 폐기될 예정이다.
  • IPv4 매핑 주소 : IPv6 프로그램에게 IPv4와의 호환성을 유지하기 위해 사용하는 다른 방법으로, 처음 80비트를 0으로 설정하고 다음 16비트를 1로 설정한 후, 나머지 32비트에 IPv4 주소를 기록하는 IPv4 매핑 주소가 존재한다. 이 주소공간에서는 마지막 32비트를 10진수로 표기할 수 있다. 따라서 192.0.2.52는 ::ffff:192.0.2.52와 같이 쓸 수 있다.

특수 주소 공간

  • ::/128 - 이 주소는 모든 값을 0으로 설정한 특수한 주소이다. 가상적으로만 사용된다. IP 미설정 상태의 발신 주소이다.
  • ::1/128 - 자기 자신의 주소를 가리키는 루프백 주소이다. 프로그램에서 이 주소로 패킷을 전송하면 네트워크는 전송자에게로 패킷을 반송한다. IPv4의 127.0.0.1 주소와 동일하다.
  • ::/96 - IPv4 호환 주소를 위해 사용되는 주소공간이다.
  • ::ffff:0:0/96 - IPv4 매핑 주소를 위해 사용되는 주소공간이다.
  • fc00::/7 - IPv6 유니캐스트를 위한 주소공간이다.
  • fe80::/10 - link-local address를 위한 주소공간이다. IPv4의 자동 설정 IP 주소인 169.254.x.x 에 해당한다.
  • fec0::/10 - site-local address를 위한 주소공간이다. 네트워크 내부에서만 유효한 주소이며, 2004년 10월 RFC3879에서 폐기되어 더 이상 사용되지 않는다.
  • ff00::/8 - IPv6 멀티캐스트를 위한 주소공간이다. IPv4의 브로드캐스트는 더 이상 지원되지 않으며, IPv6에서는 대신 멀티캐스트를 사용해야 한다.