CS 정리/개발 상식

[CS] IP 주소의 개념과 기능

SY 키키 2024. 5. 20. 19:03

컴퓨터를 하는 사람이라면 IP 주소에 대해서 한 번쯤은 들어봤을 겁니다. 

또한, 통신을 할 때에 우리는 IP 주소와 포트번호를 이용해 데이터를 주고 받습니다.

그렇다면 그 IP 주소는 무엇이며, 어떤 기능을 하고 있을까요 ?

 

IP 주소란 ?

인터넷 프로토콜 주소 또는 IP(인터넷 프로토콜, Internet Protocol) 주소는 고유한 식별자 역할을 하는 숫자 문자열입니다. 인터넷의 모든 디바이스에는 고유한 IP 주소가 할당됩니다. 

수신자에게 편지를 전달하는 데 사용되는 실제 주소와 우편번호와 같이, IP 주소는 IP 패킷을 올바른 위치로 라우팅합니다. ISP(인터넷 서비스 사업자)는 디바이스에 IP 주소를 할당합니다. 신뢰할 수 있는 인터넷을 보장하려면 이 시스템이 올바르게 작동해야 합니다.

 

현재 인터넷에는 두가지 버전의 IP, 즉 IPv4와 IPv6이 사용됩니다. IPv6가 최신버전으로서, 2023년 7월 기준 IPv6 주소가 웹사이트의 21.6%정도 사용되고 있습니다. IPv4는 최대 43억대의 IP 주소로 IP 주소 할당 공간이 제한되지만, 최신 버전인 IPv6은 규모가 확장되어 수조 개의 IP 주소를 수용할 수 있습니다.

 

모든 종류의 네트워크 디바이스에는 IP 주소가 부여됩니다. IP 주소는 인터넷의 기본 구성요소입니다. 연결된 디바이스 사이에서 정확하게 효율적으로 데이터를 전송하려면 IP 주소가 반드시 필요합니다.

 

IP 주소는 IANA(Internet Assigned Numbers Authority)에서 할당하며, IP 주소의 전체 범위는 0.0.0.0에서 255.255.255.255까지입니다.

 

IP 주소의 동작방식

IP 주소의 동작 방식을 이해하기 위해 세 가지 예시를 보도록 하겠습니다.

첫 번째 예시는 대전에서 서울로 가는 경우입니다. 만약 대전에서 서울로 가는 도중에 교차로를 만났다면, 자동차는 교차로에서 왼쪽으로 가야할지, 직진을 해야할지, 오른쪽으로 가야할지 알 수 없습니다. 물론, 도로 표지판을 보고 갈 수도 있지만, 모든 경로에 대해서 표지판에 명시할 수 없기 때문에 이는 불가능할 것입니다.

 

그래서 두 번째로 호텔 객실을 들어보도록 하겠습니다. 만약 제가 특정 호텔의 203호로 가려고 할 때, 호텔 이정표에는 모든 호수에 대해서 이정표가 있지 않고, 그 범위에 대해 오른쪽으로 가야할지, 왼쪽으로 가야할 지 나타나 있습니다. 여기서 중요한 점은 가능한 모든 객실 번호가 해당 범위에 포함되어 있어야 한다는 점입니다. IP 주소도 이를 생각하면 됩니다.

 

호스트를 이름으로 지정하는 대신 숫자 문자열로 설정합니다. 이러한 숫자 문자열이 IP 주소가 됩니다. IP 주소는 32비트 숫자입니다. IP 주소는 점 표기법으로 작성됩니다. 예를 들어 73.227.130.85 로 설정을 했다고 가정해보겠습니다.

점 사이의 숫자는 Octets(옥텟)이라고 합니다.

호스트는 서로 인접한 IP 주소 범위에 위치합니다. 예를 들어 주소가 128.30으로 시작하는 호스트와 128.31로 시작하는 호스트는 모두 매사추세츠 공과대학에 위치합니다.

라우터는 각 범위에 대한 방향만 필요합니다. 이러한 범위를 접두사 또는 CIDR(클래스 없는 인터넷 도메인 라우팅)이라고 합니다.

 

이제 마지막 예시로 우편 번호 서비스를 생각해보도록 하겠습니다.

호스트A에서 호스트 B로 이동하는 패킷은 집A에서 집B로 보내는 편지와 같습니다. 그리고 라우터는 우체국과 같습니다.

트럭으로 들어온 편지는 다른 트럭으로 보내기 위해 분류해야 합니다. 따라서 라우팅 테이블은 편지의 분류 규칙과 같습니다.

라우팅 테이블이란 ?
컴퓨터 네트워크에서 목적지 주소를 목적지에 도달하기 위한 네트워크 노선으로 변환시키는 목적으로 사용됩니다. 

제한된 저장공간에 수많은 목적지로의 노선을 저장해야 합니다. 이 때 비슷한 주소의 목적지는 인접해있다는 가정하에, 다수의 목적지 주솔르 하나의 라우팅 테이블 항목에서 관리할 수 있게 해줍니다. 가장 널리 알려진 방식은 사이더(CIDR) 이며,단순히 접두사를 링크에 매핑하고 대상 IP 주소와 일치하는 접두사에 해당하는 링크를 통해 패킷을 보내는 역할을 합니다. 이는 라우팅 테이블은 가능한 모든 호스트의 이름이나 IP 주소를 나열할 필요 없이 가능한 모든 접두사만 나열하면 되고, 모든 도로의 주소를 고려할 필요 없이 우편번호를 통해 편지를 발송하는 것과 유사합니다.

 

예를 들어 128.30.27.149로 주소가 지정된 패킷을 Lucille Ball 1000 Roxbury Drive Beverly Hills, CA로 보내는 편지에 비유해도록 하겠습니다.

 

이 편지를 전달하기 위해 대부분의 우체국에서는 전체 주소를 확인할 필요 없이 우편번호만 확인하면 됩니다

그래서, 90210 우체국만 해당 주소를 확인하고, 나머지 우체국들은 우편번호만 보고 발신자로부터 90210 우체국까지 편지를 보냅니다.

 

IP 주소도 이와 같습니다.

모든 IP주소는 왼쪽과 오른쪽으로 나뉩니다. 그리고 왼쪽을 접두사(Prefix)라고 하며 이 부분이 우편번호와 유사합니다.

앞서, 128.30.*.*은 MIT에 해당한다고 하였습니다. 따라서 MIT 네트워크의 라우터만 전체 IP 주소를 확인합니다. 그 외의 다른 모든 라우터들은 접두사만 보고 MIT 네트워크의 라우터로 패킷을 보냅니다. 

IPv4

IPv4는 인터넷 프로토콜의 버전4입니다. 과거에 인터넷에서 사용되는 유일한 프로토콜이었으나, 현재는 IPv6가 대중화되었습니다. 

IPv4의 주소 체계는 총 12자리이며 네 부분으로 나뉩니다. 각 부분은 0~255까지의 3자리 수로 표현됩니다. IPv4 주소는 32비트로 구성되어 있습니다.

 

현재 인터넷 사용자의 증가로 인해 주소 공간의 고갈에 대한 우려가 높아지고 있습니다. 이에 대한 대안으로 128비트 주소체계를 갖는 IPv6가 등장하였습니다.

 

IPv6

IPv6는 인터넷 프로토콜 버전6입니다. 이전 인터넷은 IPv4 프로토콜로 구축되어 왔으나 IPv4 프로토콜의 주소가 32비트라는 제한된 주소 공간 및 국가별 할당 주소가 거의 소진되고 있다는 한계점이 있었습니다. 따라서 지속적인 인터넷 발전에 문제가 예상되어 IPv6 프로토콜이 제안되었으며, 현재 휴대폰 및 컴퓨터에 할당되어 적용되고 있습니다.

특징

  1. IP 주소의 확장
    • IPv4는 32비트 주소공간을 가지고 있었지만, IPv6는 128비트 주소공간을 제공합니다.
  2. 호스트 주소 자동 설정
    • IPv6 호스트는 IPv6 네트워크에 접속하는 순간 자동적으로 네트워크 주소를 부여받습니다. 즉 기존에 사용하던 NAT 게이트웨이와 같은 장비를 사용하지 않고 직접 네트워크에 연결되어 더 빠른 속도를 기대할 수 있습니다.
    • IPv4의 경우에는 네트워크 관리자로부터 IP 주소를 부여받아 수동으로 설정해야 했습니다.
  3. 패킷 크기 확장
    • IPv4에서 패킷 크기는 64 킬로바이트로 제한되어 있었습니다.
    • IPv6의 점포 페이로드 옵션을 사용하면, 특정 호스트 사이에는 임의로 큰 크기의 패킷을 주고받을 수 있도록 제한이 없어지게 됩니다. 따라서 대역폭이 넓은 네트워크를 더 효율적으로 사용할 수 있게 됩니다.
      IPv6의 패킷 형식
  4. 효율적인 라우팅
    • IP 패킷 처리를 신속하게 할 수 있도록 고정 크기의 단순한 헤더를 사용하는 동시에, 확장 헤더를 통해 네트워크 기능에 대한 확장 및 옵션 기능의 확징이 용이한 구조로 정의하였습니다.
      확장 헤더 구조
      확장 헤더란, 데이터 전송을 신속하게 처리하기 위해 IPv4의 기본 헤더에서 자주 사용하지 않는 일부 필드들의 기능과 좀 더 많은 기능을 부여하기 위한 새로운 헤드들이 포함된 것을 말합니다.
    • IPv4와 IPv6의 헤더 비교
  5. 이동성
    • IPv6 호스트는 네트워크의 물리적 위치에 제한받지 않고 같은 주소를 유지하면서도 자유롭게 이동할 수 있습니다.
    • 모바일 IPv6은 IPv6에 대해 이동성을 제공합니다.

IPv4 vs IPv6

구분 IPv4 IPv6
주소 길이 32비트 128비트
표시 방법 8비트 씩 4부분으로 10진수로 표시
202.30.64.22
16비트씩 8부분으로 16진수로 표시
2001:0230:abcd:ffff:0000:0000:ffff:1111
주소 개수 약 43억개 수 조
주소 할당 A, B, C, D 등 클래스 구분에 따른 비순차적할등(비효율적) 네트워크 규모 및 단말기 수에 따른 순차적 할당(효율적)
품질 제어 최선(Best Effort)의 전달 방식으로 품질 보장이 곤란
DS 또는 ToS(Type of Service)에 의한 Qos 일부 지원
등급별, 서비스 별로 패킷을 구분할 수 있어 품지보장이 용이(트래픽 클래스, 흐름라벨에 의한 QoS 지원)
보안 기능  IPsec 프로토콜 별도 설치 확장 기능에서 기본으로 제공
Plug & Play 없음 있음(자동 네트워킹 기능)
이동 IP 상당히 곤란(비효율적) 용이(효율적)
웹캐스팅 곤란 용이(유효범위 증가)

 

NAT(Network Address Translation)

IPv6는 IPv4의 주소 고갈 문제를 해결하기 위해 만들어졌지만, 아직도 수많은 기기가 IPv4를 사용하고 있습니다. 이럴 때의 고갈 문제를 해결하기 위한 방법이 NAT, 즉 네트워크 주소 변환 기술입니다.

 

 NAT는 IP 패킷에 적힌 주소의 포트 숫자와 소스 및 목적지의 IP 주소 등을 재기록하면서 라우터를 통해 네트워크 트래픽을 주고 받는 기술입니다. 패킷에 변화가 생기기 때문에 IP 나 TCP/UDP의 체크섬(checksum)도 다시 계산되어 재기록해야합니다. 그렇기 때문에 네트워크의 성능에 영향을 줄 수 밖에 없습니다.

 

보통 인터넷을 사용할 때에는 공유기를 달아서, 하나의 IP에 대해 여러 PC를 연결하여 사용합니다. 즉, 여러 대의 호스트가 하나의 공인 IP 주소를 사용하게 됩니다. 이는 공유기내에 NAT 기능이 탑재되어 있어 가능합니다.

하지만, 여러 명이 동시에 인터넷에 접속하면 실제로 접속하는 호스트 숫자에 따라 접속 속도가 느려질 수 있습니다. 하지만 성능이 좋을 수록 대역폭만 줄어들고, 체감되는 속도 저하는 적은 편입니다.

 

IPv6의 도입에 따라 IP의 개수가 무한에 가깝게 늘어나고, End-to-End 연결을 이용하기 때문에 NAT 기능이 필요없어졌습니다. 하지만, 여전히 IPv6 또한 로컬 유니캐스트 IP 로 외부와 통신을 해야할 경우가 있으며, 아직까지는 IPv4가 대중적으로 사용되어, 아직까지도 NAT를 지원하고 있습니다.

 

참고

https://www.akamai.com/ko/glossary/what-is-an-ip-address

https://ko.wikipedia.org/wiki/%EB%9D%BC%EC%9A%B0%ED%8C%85_%ED%85%8C%EC%9D%B4%EB%B8%94

https://www.cloudns.net/blog/what-is-ipv4-everything-you-need-to-know/

https://ko.wikipedia.org/wiki/IPv4

https://ko.wikipedia.org/wiki/IPv6

https://m.blog.naver.com/wnrjsxo/221191938036

https://namu.wiki/w/NAT