IP


IP주소

  • 네트워크 통신을 할 때 3계층에서 필요
  • 3계층에서는 3계층 장비인 라우터가 이해하는 논리주소인 IP 주소를 사용
  • 3계층 주소의 특징
    • 사용자가 변경 가능한 논리 주소
    • 그룹을 의미하는 네트워크 주소와 호스트 주소로 나뉨

IP 주소 체계

  1. 주로 IP 주소는 32 비트인 IPv4 주소를 사용
  2. IPv4, IPv6 두 체계가 사용
  3. IPv4는 8비트 단위를 하나의 옥텟이라고 부름
  4. 각 옥텟은 점으로 구분, 10진수로 표기
  5. 하나의 옥텟은 8비트이기 때문에 00000000 ~ 11111111 → 0 ~ 255까지 사용 가능
  6. IP 주소는 네트워크 주소와 호스트 주소 두 부분으로 나뉨
    • 네트워크 주소
    • 호스트들을 모은 네트워크를 지칭하는 주소
    • 네트워크 주소가 동일한 네트워크를 로컬 네트워크라고 함 - 호스트 주소
    • 하나의 네트워크 내에 존재하는 호스트를 구분하기 위한 주소
    • 로컬 네트워크를 구성하는 하나의 네트워크

classful과 classless

classful IP

  1. IP 주소는 네트워크 주소와 호스트 주소를 나누는 구분자가 이동할 수 있어서 네트워크의 크기가 달라질 수 있음
  2. 네트워크의 크기에 따라 필요한 호스트 IP 개수를 할당할 수 있는 클래스 개념을 도입
  3. 크게 A,B,C클래스로 나뉘고 규모에 따라 나뉘게 됨

class

  1. A class
    1. 1개의 옥텟이 네트워크 주소를 나타냄
    2. 3개의 옥텟이 호스트 주소를 나타냄
    3. 첫번째 .이 나누는 구분자가 됨
    4. 그렇게 255.0.0.0 ~ 255.255.255.255까지 정해진 네트워크 주소에 호스트 주소 16,777,216개의 주소를 가질 수 있음
  2. B class
    1. 2개의 옥텟이 네트워크 주소를 나타냄
    2. 2개의 옥텟이 호스트 주소를 나타냄
    3. 두번째 .이 나누는 구분자가 됨
    4. 그렇게 255.255.0.0 ~ 255.255.255.525까지 정해진 네트워크 주소에 호스트 주소 65.536개의 주소를 가질 수 있음
  3. C class
    1. 3개의 옥텟이 네트워크 주소를 나타냄
    2. 1개의 옥텟이 호스트 주소를 나타냄
    3. 세번째 .이 나누는 구분자가 됨
    4. 그렇게 255.255.255.0 ~ 255.255.255.255까지 정해진 네트워크 주소에 호스트 주소 256개의 주소를 가질 수 있음

IPv4의 한계로 IPv6 등장

  • IPv4의 가장 큰 문제: 기하급수적으로 늘어나는 IP 주소 요구
  • 43억개 중 5억개 정도는 예약되어있는 IP, 37억개를 나눠 사용해야 함
  • 부족한 개수를 보안하기 위해 방안 등장
    1. 클래스리스, CIDR (Classless Inter-Domain Routing) 기반의 주소체계
    2. NAT과 사설 IP
    3. IPv6

classful IP의 한계로 classless IP 등장

  • 각 클래스에서 모든 IP를 다 사용하지 않아서 낭비되는 IP가 많음
  • 네트워크 주소에 사용하지 않는 호스트를 다른곳에서 사용할 수 없었기 대문에 옥텟 단위의 3단계로 나누는 클래스로는 개선이 어려웠음
  • 그렇게 class 개념을 버리고 현재 사용하고 있는 classless 주소 체계를 사용
  • classless는 classful처럼 옥텟만으로 네트워크 주소와 호스트 주소를 나눌 수 없음
  • 낭비를 줄이기 위해서 비트 단위로 쪼개 사용하는 방법
  • 네트워크와 호스트 주소를 나누는 구분자로 서브넷 마스크를 사용

  • 클래스리스 기반의 IP 네트워크에서는 네트워크를 표현할 때 서브넷 마스크가 반드시 있어야 함
  • 서브넷 마스크를 이용하여 네트워크 주소를 구할 때는 0과 1의 And 연산을 이용
  • 호스트 주소의 각 옥텟을 8비트로 나타낸 주소와 서브넷 마스크를 8비트로 나타낸 주소 각각의 비트를 & 연산을 통해 네트워크 주소를 알 수 있음

서브넷 마스크 표현 방법

  • 1로 나타낸 부분의 비트 수를 표시하여 나타냄
  • 이전의 A 클래스를 비트 단위로 표현하면 /8로 표현
  • B클래스는 /16으로 표현
  • C클래스는 /24로 표현
  • A 클래스 → 11111111.00000000.00000000.00000000
  • B 클래스 → 11111111.11111111.00000000.00000000
  • C 클래스 → 11111111.11111111.11111111.00000000

서브네팅

  • 클래스의 기준을 무시하고 클래스풀 단위의 네트워크보다 더 쪼개 사용하는 것
  • 부여된 주소를 다시 분할하는 방법
  • 서브네팅으로 서브넷을 나누어 사용할 수 있음

네트워크 사용자의 서브네팅

  • IP 와 서브넷 마스크 둘 다 이용하는 방법

    IP와 서브넷 마스크 각각의 옥텟을 2진수 주소 변환

    • 3번 : 2진수로 바꾼 IP와 서브넷 마스크를 &&로 연산 (네트워크 주소)
    • 4번: 네트워크 주소에 서브넷 마스크의 0부분과 같은 부분을 1로 바꿈 (브로드 캐스트 주소)

    • 5번: 네트워크주소의 마지막 숫자에 1을 더한 주소가 이용할 수 있는 첫번째 주소가 됨
    • 6번: 브로드 캐스트 마지막 숫자에 1을 뺀 주소가 이용할 수 있는 마지막 주소가 됨

      - 7번: 각각 구해진 주소를 10진수로 변환하면 우리가 사용하는 IP 주소가 됨
    
  • 서브넷 마스크만 이용하는 방법

    • 1번: 서브넷 마스크를 2진수로 변환
    • 2번: 서브넷 마스크의 0부분만을 가져옴
    • 3번: 0 부분이 몇을 표현할 수 있는지 수를 구함
    • 4번: 각 자리마다 0부터 구해진 수만큼 그룹을 나눔
    • 5번: IP 주소가 이 그룹중에 어디에 있는지 찾음
    • 6번: 그룹의 가장 앞에 있는 주소가 네트워크 주소가 됨
    • 7번: 네트워크 주소에서 1을 더한 값이 사용할 수 있는 첫번째 주소가 됨
    • 8번: 그룹의 가장 뒤에 있는 주소가 브로드 캐스트 주소가 됨
    • 9번: 브로드 캐스트 주소에서 1을 뺀 값이 사용할 수 있는 마지막 주소가 됨
서브목차