IP주소


IP주소

개요

  • 인터넷에 연결된 각 장치 식별자:IP주소
  • IPv4주소 : 32비트 길이
  • 주소 공간 : \(2^{32}\) 또는 4294967296
  • 인터넷에서 유일한 식별자
  • 인터넷상에 두 개의 장치가 같은 주소를 가질 수 없음
  • 2진 표기법(기수 2), 16진 표기법(기수 16), 점 10진 표기법(기수 256) 사용

표기법

  • 2진 표기법, 16진 표기법, 점 10진 표기법
  • 2진과 점 10진(Dotted-decimal) 표기법
    • 2진 10000000 00001011 00000011 00011111
    • 점 10진 128.11.3.31

주소의 범위

  • 주소의 범위를 다루는 것이 필요한 경우가 있음
  • 처음 주소와 마지막 주소가 주어지면 이 범위 내 주소의 개수를 찾는 것이 필요
  • 처음 주소와 범위 내 주소의 수가 주어지면 마지막 주소를 찾을 필요
  • 해당하는 기수에서 뺄셈이나 덧셈 연산 수행
  • 주소를 10진수 값으로 변환한 후 10진수에서 연산을 수행

연산

  • 2진법, 10진법을 사용하여 32비트 수에 대한 연산을 수행하는 경우가 있음
  • 비트 단위의 NOT 연산(일항 연산, unary operation)
  • Bit 단위의 AND 연산
    • 비트 단위의 AND 연산은 이항 연산(binary operation)으로 두 개의 입력을 취한다
  • Bit단위의 OR 연산
    • 비트 단위의 OR 연산은 이항 연산(binary operation)으로 두 개의 입력을 취함

클래스 기반 주소 지정

  • IP주소는 시작할 때 클래스 개념 이용
  • 90년대 중반에 새로운 구조인 클래스 없는 주소지정 방법 등장

클래스

  • 5개(A, B, C, D, E)의 클래스로 구분

클래스 찾기

  • 첫번째 비트가 0이면 A, 10이면 B, 110은 C, 1110은 D, 1111은 E
  • 연속적인 비트 확인을 통해 클래스 알아냄

Netid와 hostid

  • 클래스에 따라 netid와 hostid 길이가 다름

클래스와 블록

  • 클래스 A
    • 1바이트만 netid지정
    • 가장 왼쪽 비트 0
    • 7바이트로 나타내는 블록의 수 = 128
    • 블록에 속한 주소 수 = 16777216
    • 클래스 A 주소는 거의 소진
  • 클래스 B
    • 처음 두 바이트가 클래스 지정
    • 처음 두 비트는 10
    • 14비트로 지정할 수 있는 블록 수 = 16384
    • 각 블록에 속한 주소 수 = 65536
    • 클래스B 주소도 거의 소진
  • 클래스 C
    • 처음 세 바이트가 클래스 지정
    • 처음 세 비트는 110
    • 21비트로 지정할 수 있는 블록 수 = 2097152
    • 각 블록에 속한 주소 수 = 256
    • C클래스 블록이 충분할 만큼 작은 기간이 많지 않음
  • 클래스 D
    • 클래스 D는 한 블록만 있으며 멀티캐스팅을 위해 설계
    • 인터넷상에 호스트들의 그룹을 지정하는데 사용
  • 클래스 E
    • 한 블록만 있으며 예비용

2계층 주소 지정

  • 조직에 할당되는 주소 범위는 A, B, C 클래스 단위의 주소 블록
  • 네트워크 내의 모든 주소는 한 블록에 속함
  • 클래스 기반 주소지정에서 각 주소는 netid와 hostid 부분을 포함
  • netid는 네트워크를 정의하고 hostid는 네트워크에 연결된 특정 호스트를 정의
  • 블록에서 정보 추출하기
    • 주소의 수
    • 첫 번째 주소
    • 마지막 주소
  • 네트워크 주소
    • 블록의 첫 번째 주소는 네트워크 주소
    • 목적지로 패킷을 전송하는데 사용
    • 네크워크 주소는 네트워크의 식별자
  • 네크워크 마스크
    • 목적지 주소를 이용하여 네트워크 주소를 찾아내는데 사용
    • 디폴트 마스크라고도 함
    • 마스크를 이용하여 네트워크 주소 찾아내기
      • 목적지 주소와 디폴트 마스크를 AND연산

3계층 주소 지정 : 서브넷팅

  • 클래스 A나 B를 받은 조직이 보안과 관리를 더 잘하기 위해 몇 개의 작은 서브네트워크로 나눌 필요
  • 서브넷팅에서 각 서브네트워크는 자신의 서브네트워크 주소를 갖는다
  • 서브넷 마스크
    • 네트워크 마스크
      • 네트워크가 서브넷팅 되지 않을 경우 사용
    • 서브넷 마스크
      • 네트워크가 서브넷으로 나누어질 경우 사용
  • 서브넷팅
    • netid의 길이는 증가시키고 hostid의 길이는 감소시킨다
    • 네트워크를 같은 수의 호스트를 가지는 s개의 서브넷으로 나누면 다음과 같이 각 서브넷의 subnetid를 구할 수 있다
    \[n_{sub} = n + \log_2s\]
    • n은 netid의 길이고 n_sub는 각 subnetid의 길이이며 s는 2의 거듭제곱인 서브넷의 개수

슈퍼넷팅

  • 여러개의 C클래스 결합
  • 1000개의 주소가 필요한 기관이 4개의 C클래스 신청
  • 슈퍼넷 마스크는 서브넷 마스크의 반대
  • 인터넷의 폭발적 증가로 문제점 발생
  • 클래스 A와 클래스 B 네트워크의 주소 공간이 고갈
  • 클래스 C주소 사용으로 인터넷의 라우팅 테이블 규모 증대
  • 32비트 IPv4 주소의 궁극적인 고갈
  • 주소의 고갈을 막기 위해 IPv6주소 제안
  • 전환 시기의 과도적인 사용
  • 슈퍼넷 마스크

클래스 없는 주소 지정

클래스 없는 주소 지정

  • 클래스 기반 주소 지정에서 서브넷팅과 슈퍼넷팅은 실제로 주소 고갈 문제를 해결하지 못함
  • 인터넷이 성장함에 따라 장기적으로 보다 큰 주소 공간을 확보하는 것이 필요
  • 장기적 해결책으로 IPv6가 개발
  • 그러나 동일한 주소 공간을 사용하면서 각 기관에 대해 주소를 분배하는 방법이 필요
  • 단기 해결책은 IPv4주소를 사용하면서 클래스 없는 주소지정이다.

가변길이 블록

  • 각 기관은 가변길이 블록으로 2^32개 까지의 주소를 갖는 블록을 지정 가능

2단계 주소 체계

  • 프리픽스(prefix) : netid와 동일 기능
  • 서픽스(suffix) : hostid와 동일 가능
  • 클래스 없는 주소 지정 방식에서 프리픽스의 길이는 0 ~ 32
  • 슬래시 표기법
    • 프리픽스 길이를 주소에 포함하여 표현
    • 클래스 없는 주소 지정 방식에서, 블록 정보를 알기 위해서는 블록 내의 주소와 프리픽스를 알아야 한다
  • 네트워크 마스크
    • 클래스 기반 주소지정 방식에서 정의된 것과 같은 개념
    • 네트워크 마스크는 32비트 숫자
    • 왼쪽부터 n개의 연속적인 비트는 1로 설정
    • 그 나머지 비트는 0으로 설정
  • 블록 정보 추출
    • 슬래시 표기법으로 표시된 주소는 첫번째 주소(네트워크 주소), 주소의 개수, 그리고 마지막 주소 등과 같은 블록에 포함된 모든 정보를 포함
    • 블록에 속하는 주소의 개수는 다음과 같다
    \[N = 2^{32-n}\]
    • 첫번째 주소는 주소에 네트워크 마스크를 AND연산하여 구한다
    • 마지막 줏는 첫번째 주소의 개수를 더하거나 주소에 네트워크 마스크의 보수(NOT연산)값을 OR연산하여 구한다

블록 할당

  • 국제 관리기구인 ICANN담당
  • ISP에 할당
  • 블록 할당 제약 조건(CIDR)
    • 요구 주소 N은 2의 거듭제곱이어야 한다
    • 블록에 속한 주소의 수(N)로 프리픽스 길이를 알 수 있다
    \[n = 32 - \log_2N\]
    • 할당하는 블록에 속한 주소는 연속적이어야 한다

    • 클래스 기반 주소지정과의 관계

      • A 프리픽스 길이 : /8
      • B 프리픽스 길이 : /16
      • C 프리픽스 길이 : /24
      • D 프리픽스 길이 : /4
      • E 프리픽스 길이 : /4

서브넷팅

  • 3단계 계층은 서브넷팅을 이용하여 구성
  • 하나의 블록을 할당 받은 기관(또는 ISP)은 블록을 여러개의 서브 블록으로 나눈 후에 각 서브 블록을 서브넷에 할당
  • 서브넷은 여러 개의 서브-서브넷으로 나누어질 수 있다
  • 서브-서브넷은 다시 서브-서브-서브넷으로 나누어질 수 있다
  • 서브넷 설계
    • 기관이 할당 받은 주소의 총 개수는 N이고, 프리픽스 길이가 n이며, 각 서브넷에게 할당된 주소의 개수는 Nsub, 각 서브넷의 프리픽스 길이는 nsub, 그리고 서브넷의 총 개수는 s
    • 각 서브넷에 속하는 주소의 개수는 2의 거듭제곱이어야 함
    • 각 서브넷을 위한 프리픽스 길이는 다음과 같다 \(n_{sub} = n + \log_2(N/N_{sub})\)
    • 각 서브넷에 속하는 시작 주소는 해당 서브넷에 속하는 주소의 개수로 나누어질 수 있어야 한다.
    • 먼저 큰 네트워크에 주소를 설정하고 크기가 작은 네트워크의 주소는 그 다음에 설정하는 등의 단계로 주소 설정
  • 각 서브넷에서 정보 찾기
    • 첫 번째 주소와 마지막 주소 등과 같은 각 서브넷에 대한 정보를 찾는 방법은 인터넷의 각 네트워크에 대한 정보를 찾는 방법과 동일
  • 주소 결합
    • CIDR구조의 한 가지 장점은 주소 결합
    • ICANN은 ISP에게 큰 주소 블록을 할당한다
    • ISP는 할당된 블록을 여러 개의 서브-블록으로 나눈 후에 각 서브-블록을 고객들에게 할당
    • 여러 개의 주소 블록이 하나의 블록으로 결합될 수 있으면 ISP에 할당될 수 있다.

특수 주소

클래스 기반 주소지정에서 일부 주소는 특수 목적을 위해 예약되어있다

클래스 없는 주소지정에서도 동일하게 클래스 기반 주소지정 방식과 동일한 특수 주소가 있다

특수 블록

  • 모두-0인 주소
    • 패킷을 전송하고자 하는 호스트가 자신의 IPv4 주소를 모르는 경우에 통신을 위하여 사용
    • 자신의 IPv4 주소를 모르는 호스트는 부트스트랩 시간에 이 주소를 사용
    • 발신지 주소로만 사용
    • 목적지 주소는 제한된 브로드캐스트 주소 이용
  • 모두-1인 주소 : 제한된 브로드캐스트 주소
    • limited broadcast address
    • 모두가 1인 주소
    • 네트워크 내의 모든 호스트에게 메시지 전달 시 목적지 주소로 사용
    • 라우터는 브로드캐스팅을 로컬 네트워크로 제한하기 위하여 이런 유형의 주소를 가지고 있는 패킷의 포워딩을 막는다
  • 루프백 주소
    • loopback address
    • 127.0.0.0/8 블록
    • 컴퓨터에 설치된 소프트웨어를 시험하기 위해 사용되는 주소
    • 클라이언트 프로세스가 동일한 시스템상에 있는 서버 프로세스에게 메시지 전송 시 사용
    • 패킷의 목적지 주소로만 사용
  • 사설 주소(private address)
    • 사설 용도를 위하여 할당
    • 전역 네트워크에서 인식되지 않음
    • 네트워크가 분리되어 있거나 주소 변환 기술(NAT : network address translation)을 사용하여 사설망을 인터넷에 연결하는데 사용
  • 멀티캐스트 주소
    • 224.0.0.0/4 블록
    • 멀티캐스트 통신을 위해 예약된 블록

블록에 속하는 특수 주소

  • 블록에 속하는 일부 주소를 특수 주소로 사용
  • 권고사항(호스트에 할당 불가)
  • 네트워크 주소
    • 블록에 속하는 첫 번째 주소
  • 직접 브로드캐스트 주소
    • suffix가 모두 1로 설정된 블록의 마지막 주소
    • 라우터가 특정 네트워크에 있는 모든 호스트에 패킷 전송 시 사용
  • 네트워크 주소
    • 클래스 주소에서 hostid가 모두 0인 주소
  • 직접 브로드캐스트 주소
    • direct broadcast address
    • 서픽스가 모두 1인 주소
    • 라우터가 특정 네트워크에 있는 모든 호스트에 패킷을 보낼 때 사용
    • 패킷에서 목적지 주소로만 사용

IPv6 주소

IPv6 주소 등장 배경

  • IPv4의 주소 공간의 한계
  • IPv4는 최소 지연과 자원의 예약 불가
  • IPv4에서는 암호화와 인증이 제공되지 않음
  • IPv6 주소 길이 : 16바이트(128비트)

표기법

  • 점 10진 표기법 -> 221.14.65.11.105.45.170.34.12.234.18.0.14.0.115.255
  • 콜론 16진 표기법 -> FDEC : BA98 : 7654 : 3210 : ADBF : BBFF : 2922 : FFFF
  • 제로 압축
    • 원래의 주소 -> FDEC:0:0:0:0:BBFF:0:FFFF
    • 제로 압축 -> FDEC::BBFF:0:FFFF
  • 혼합 표기법
    • 콜론 16진 표기법과 점 10진 표기법을 혼합하여 표기
      • FDEC:14AB:2311:BBFF:AAAA:BBBB:130.24.24.18
    • 가장 왼쪽이 모두 0인 주소의 압축 표현
      • ::130.24.24.18
  • CIDR 표기법
    • FDEC::BBFF:0:FFFF/60

주소 공간

  • IPv6의 주소 공간은 \(2^{128}\) 이다.
  • IPv4 주소의 \(2^{96}\)배.

세가지 주소 유형

  • 유니캐스트(unicast) : 단일 인터페이스(컴퓨터 또는 라우터)를 정의
  • 애니캐스트(anycast) : 단일 주소를 모두 공유하는 컴퓨터 그룹을 정의
  • 멀티캐스트(multicast) : 컴퓨터 그룹을 정의

IPv6 주소 공간 할당

  • 전체 주소 공간을 8등분으로 나누어 사용
  • 현재 1/8만 사용자 주소 공간으로 사용