[Computer Network] IP Address

📝IP Address

"IP 주소는 네트워크에서 호스트와 라우터의 각 인터페이스마다 할당되어 있는 식별 번호이다."


📌 설명

  • IP는 네트워크에서 호스트와 라우터의 각 인터페이스마다 할당되어 있는 식별 번호이다.
    • 인터페이스 : 호스트와 물리 링크 사이의 경계
  • IP주소는 네트워크 주소와 호스트 주소로 나뉜다.
  • IP에는 두 가지 버전이 존재한다.

IPv4

  • IPv4 주소는 32비트 이진수로 구성된다.
    • 11000001 00100000 11011000 00001001
  • 일반적으로 다음과 같이 8비트 단위로 끊어서 4부분으로 10진수. 으로 표기한다.
    • 193.32.216.9

IPv6

  • IPv6 주소는 128비트 이진수로 구성된다.

  • 다음과 같이 16비트 단위로 끊어서 8부분으로 16진수: 으로 표기한다.

    • 2004:2ba8:13aa:0011:0000:0000:0000:abaa


📌 IPv4 데이터 그램 단편화(MTU)

  • 링크 계층 프레임이 전달할 수 있는 최대 데이터 양을 MTU(Maximum Transmission Unit)라고 한다.
  • 네트워크의 각 링크는 다른 링크 계층 프로토콜을 사용할 수 있고, 각 프로토콜마다 MTU는 다를 수 있다.

  • 예를들어 4000바이트(IP헤더 20바이트 + 페이로드 3,980 바이트)인 데이터그램이 라우터에 도착하고 이 데이터그램은 MTU가 1,500바이트인 링크로 전달되어야 하는 상황을 가정해보자.

  • 이때 3,980 바이트인 원본 데이터그램을 3개의 분리된 조각 (fragment, 단편)으로 나눠서 보내야한다.

    • 분리된 조각은 데이터그램이다.
  • 목적지에서는 3개의 데이터그램을 다시 재조립해서 원본 데이터그램으로 만들어야한다.

  • 단편화와 재결합을 위해 IP 헤더에 아래와 같은 옵션이 존재한다.

    • 식별자(ID) : 하나의 데이터그램에서 단편화된 데이터그램들은 같은 식별자를 갖는다.
    • 플래그(flag) : 어디까지가 단편화된 데이터그램인지 구분하기 위해 맨 마지막 단편화 데이터그램의 플래그는 0으로 다른 모든 조각의 플래그는 1로 설정된다.
    • 단편화 오프셋 : 순서대로 올바르게 재결합하기 위해 데이터그램내 조각의 위치를 명시하는 용도다. byte 단위다.
  • 다시 예제를 살펴보자 (오른쪽 그림 참고)

    • 크기가 4000바이트인 데이터그램을 쪼개야한다. 단순히 1500 바이트씩 쪼개는게 아니라 각 조각의 IP 헤더 크기 20바이트도 고려해야한다.

    • 페이로드인 3980바이트를 1480바이트씩으로 쪼개고 각 조각마다 20바이트의 헤더를 붙여야한다.

      단위 : byte
      원본 데이터그램 : 4000(헤더 20 + 페이로드 3980)
      MTU : 1500
      3980 = 1480 + 1480 + 1020
          
      첫 번째 조각 : 20(헤더) + 1480(페이로드)
      // ID : x, fragflag : 1, offset : 0(byte)
      // 첫 조각이므로 offset는 0이다.
          
      두 번째 조각 : 20(헤더) + 1480(페이로드)
      // ID : x, fragflag : 1, offset : 185(byte)
      // 두 번째 조각이므로 offset은 185(1480/8)다.
          
      세 번째 조각 : 20(헤더) + 1020(페이로드) 
      // ID : x, fragflag : 0, offset : 370(byte)
      // 세 번째 조각이므로 offset은 370((1480+1480)/8)이다.
      


📌 Subnet & Subnet Mask

  • 서브넷은 네트워크의 부분망이다. 위 그림에서 파란색으로 표시된 3개의 서브넷을 볼 수 있다.
  • 각 서브넷의 각 IP주소의 왼쪽 24비트는 동일함을 볼 수 있다.
  • 위 그림에서 서브넷 마스크는 24이다. 이는 32비트 주소의 왼쪽 24비트가 서브넷 주소라는 것을 가리킨다.
  • 즉 왼쪽 24비트는 네트워크 주소 나머지 8비트는 호스트 주소이다.
  • 각 서브넷에서 2^8 - 2 개의 호스트 IP가 존재할 수 있음을 알 수 있다.
    • 왜 2의 8 제곱에서 2를 뺄까? 바로 브로드 캐스트 주소와 네트워크 주소로 사용되기 때문이다.
    • 호스트 주소 11111111 는 브로드 캐스트 주소로 사용된다. (브로드 캐스트 주소는 255.255.255.255 이다. 호스트가 브로드캐스트 주소로 패킷을 보내면, 같은 서브넷에 존재하는 모든 호스트들에게 패킷이 전송된다.)
    • 호스트 주소 00000000 는 네트워크 주소로 사용된다.


📌 클래스 주소체계

  • IP Class 는 A, B, C, D, E Class로 나누어 IP의 네트워크 주소와 호스트 주소를 구분한다.
  • 파랑색은 네트워크 주소, 초록색은 호스트 주소다.

A Class

  • 처음 8비트(1바이트)가 네트워크 주소, 나머지 24비트(3바이트)가 호스트 주소로 사용된다.
  • A 클래스는 0으로 시작한다.
    • 0xxx xxxx. xxxx xxxx. xxxx xxxx. xxxx xxxx
  • 최대 네트워크 주소 개수 : 128개 (0 ~ 2^7)
  • 최대 호스트 주소 개수 : 16,777,214개 (2^24 - 2)

B Class

  • 처음 16비트(2바이트)가 네트워크 주소, 나머지 16비트(2바이트)가 호스트 주소로 사용된다.
  • B 클래스는 10으로 시작한다.
    • 10xx xxxx. xxxx xxxx. xxxx xxxx. xxxx xxxx
  • 최대 네트워크 주소 개수 : 16,384개 (2^14)
  • 최대 호스트 주소 개수 : 65,534개 (2^16 - 2)

C Class

  • 처음 24비트(3바이트)가 네트워크 주소, 나머지 8비트(1바이트)가 호스트 주소로 사용된다.
  • C클래스는 110으로 시작한다.
    • 110x xxxx. xxxx xxxx. xxxx xxxx. xxxx xxxx
  • 최대 네트워크 주소 개수 : 2,097,152개 (2^21)
  • 최대 호스트 주소 개수 : 254개 (2^8 - 2)

D Class, E Class

  • D Class : 멀티캐스트용

  • E Class : 미래에 사용하기 위해 남겨둠
  • 실질적으로 D와 E Class는 사용되는 경우가 거의 없다.


📌 CIDR(Classless Interdomain Routing)

  • CIDR는 클래스 주소보다 더 유연하게 IP 주소를 나눠주는 라우팅 기법이다.

  • IPv4 주소를 보다 효율적으로 사용하게 해준다.

  • 32 비트 IP 주소를 아래와 같이 두 부분으로 나눈다.

    • a.b.c.d / x
    • x는 처음 나오는 주소 부분의 비트 수를 의미한다. 이를 해당 주소의 prefix라고 한다.
  • 그렇다. x는 네트워크 주소부다.


📌 DHCP(Dynamic Host Configuration Protocol, DHCP)

  • 호스트가 IP주소를 할당받는 방법은 두 가지다.

    • 수동으로 IP주소를 직접 할당한다.
    • DHCP을 사용하여 동적으로 할당받는다. (일반적)
  • DHCP는 클라이언트-서버 프로토콜이다.

  • DHCP는 새로운 호스트가 도착하면 IP를 할당해준다.

  • 위 그림을 참고하며 DHCP 동작과정을 살펴보자.

    1. DHCP 서버 발견
      • 새롭게 네트워크에 도착한 호스트는 DHCP에게 발견 메세지를 보낸다.
      • 호스트는 자신이 접속될 네트워크의 IP주소를 알지 못하고, 해당 네트워크의 DHCP 주소도 모른다.
      • 따라서 브로드캐스팅을 통해 DHCP에게 메세지를 보낸다.
    2. DHCP 서버 제공
      • DHCP 발견 메세지를 받은 DHCP 서버는 DHCP 제공 메세지를 호스트로 응답한다.
    3. DHCP 요청
      • 호스트는 DHCP 제공 메세지에 대해 DHCP 요청 메세지로 응답한다.
    4. DHCP ACK
      • 서버는 DHCP 요청 메세지에 대해 요청된 파라미터를 확인하는 DHCP ACK 메세지로 응답한다.


📌사설 IP

  • 공인 IP 주소가 공개형이라면 사설 IP 주소는 폐쇄형이다.
  • 즉, 사설 IP주소는 외부에 공개되지 않아 외부에서 검색, 접근이 불가능하다.
  • 사실 IP 주소는 인터넷 유무선 공유기를 사용할 때 흔히 접하게 된다.
  • 인터넷 유무선 공유기의 IP주소를 공유하여 여러대의 컴퓨터가 인터넷에 접속되게 하려면 사설 IP 주소가 필요하기 때문이다.
  • 사설 네트워크에 속한 여러 개의 호스트가 하나의 공인 IP 주소를 사용해서 인터넷에 접속하기 위해 사용한다.
  • 사설 IP는 사설망 안에서만 의미 있는 주소이다.
  • 사설 IP 주소는 주소 대역이 3개로 고정되어 있다.
    • 192.168.xxx.xxx
    • 172.10.xxx.xxx
    • 10.xxx.xxx.xxx
  • 예를 들어 인터넷 공유기 IP 주소가 100.100.100.100 이고, 공유기에 연결된 컴퓨터에는 192.168.0.10 등과 같은 사설 IP 주소가 할당된다.


📌 사설 IP와 네트워크 주소 변환(NAT)

네트워크 주소 변환(NAT)

  • NAT는 공인 IP와 사설 IP를 변환해주는 기술이다.

  • 위 그림을 보자 IP주소 138.76.29.7을 갖는 라우터(또는 공유기)에 3대의 컴퓨터가 속해있다.
  • 10.0.0.4 라는 사설 IP 주소를 갖는 서브넷에 10.0.0.1, 10.0.0.2, 10.0.0.3 3개의 사설 IP주소를 갖고있는 컴퓨터가 속해있다.

  • 그림을 보며 단계적으로 살펴보자. 사설 IP 10.0.0.1를 갖는 호스트가 IP 128.119.40.186인 웹 서버(포트80)에게 웹 페이지를 요청한다고 가정하자.

    1. 호스트는 자신의 IP와 출발지 포트번호 3345와 함께 패킷을 전송한다.
    2. NAT 라우터는 패킷을 받아서 패킷에 대한 출발지 포트번호 5001를 생성한다. 인터넷으로 연결되는 라우터 인터페이스 공인 IP 138.76.29.7으로 출발지 IP 주소를 변경하고 새롭게 생성한 출발지 포트번호 5001로 포트번호를 바꾼다.
    3. 웹 서버는 NAT 라우터 IP 138.76.29.7 와 5001 포트번호에 대해 응답한다.
    4. 패킷이 NAT 라우터에 도착했을때 라우터는 사설망 IP 주소 10.0.0.1 포트번호 3345로 응답 패킷을 보낸다.


📌 네트워크 주소와 브로드캐스트 주소 구하기

예제

상황 : 192.168.51.111/20이라는 IP가 소속되어 있는 네트워크가 있을 때 아래 질문에 답을 하시오.


**Q1. 192.168.60.211은 같은 네트워크에 소속되어 있지 않다. **

  • 아니다. 같은 네트워크에 소속된다.

  • 192.168.51.111과 192.168.60.211는 같은 네트워크 주소(서브넷)를 갖는다.
  • 그리고 192.168.xxx.xxx 대역을 보아 사설 IP임을 알 수 있다.
  • 192.168.51.111(1100 0000 1010 1000 0011 0011 0110 1111 )
  • 192.158.60.211(1100 0000 1010 1000 0011 1100 1101 0011)


Q2. 192.168.63.255로 IP를 할당 할 수 있다.

  • 아니다. 할당할 수 없다.
  • 192.168.63.255는 해당 네트워크의 브로드 캐스트 주소다.


Q3. 192.168.51.111/20의 네트워크 마스크는 255.255.255.0이다.

  • 아니다. 답은 255.255.240.0이다. 앞에서부터 20비트가 prefix다. 이진수로 표현하면 아래와 같다.
  • 1111 1111. 1111 1111. 1111 0000. 0000 0000


Q4. 192.168.48.1은 해당 네트워크의 게이트웨이가 될 수 있다.

  • 맞다. 네트워크 주소와 브로드캐스트 주소를 제외한 나머지 IP는 게이트웨이로 가능하다.


Q5. 해당 네트워크의 주소는 192.168.48.0이다.

  • 맞다. 이진수로는 아래와 같다.
  • 1100 0000 1010 1000 0011 0000 0000 0000


🔎 출처 & 더 알아보기