ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 9. 인터넷 프로토콜(IP)과 주소체계
    전공공부/컴퓨터 네트워크 2020. 2. 28. 00:18
    728x90
    반응형

    목차

    1. IP 패킷 구성과 기능

    2. IP (IPv4) 주소 체계

    3. IP 주소의 클래스

    4. 서브넷 기법

     

    9.1 IP 패킷 구성과 기능

    IP(Internet Protocol)란?

    - IP 주소체계를 이용하여 인터넷에 연결된 모든 호스트들과 데이터통신이 가능해짐

    - IP 계층은 네트워크 계층에 해당하는 프로토콜.

     

    9.1.1 IP 데이터그램의 형식과 기능

    - IP에서 사용하는 패킷을 데이터그램 (datagram)’이라 함

    - IP datagram헤더 부분과 사용자 데이터 부분으로 구분 됨 à [그림9-2]

    - IP datagram 길이는 가변적이고, 기본 헤더의 크기는 20바이트이며, 옵션 영역을 사용하면

        최대 60바이트까지 확장가능

     

     

    9.2 IP(IPv4) 주소체계

    9.2.1 IP 주소의 표현

    - IP(IPv4) 데이터그램은 전송 측과 목적지 주소 영역이 각각 32비트로 구성되고, IPv6인 경우 128비트 영역으로 확장됨

    - IPv4는 기본적으로 클래스(class)로 구분되는 주소체계를 취함

    - 심볼화된 이름, 즉 ‘도메인 이름’을 사용함

    - 응용 프로그램에서 사용자가 심볼화된 주소를 입력하면, 이 주소는 이진수 형태의 주소로 변환되고 이 변환된 결과가 메모리에 저장됨

     

    - 이진 형태의 주소 표현을 사용하면, 심볼화된 이름을 사용하는 것보다 시스템의 메모리 사용이 줄어들어 네트워크를 통한 데이터 전송시간을 줄일 수 있음

     

    - 호스트 컴퓨터 AIP 주소체계를 이용해서 호스트 컴퓨터 B로 데이터 패킷을 전송  [그림 9-5]

        . 호스트 A는 호스트 B가 지리적으로 어느 곳에 위치하는지 알 필요가 없으며, 다만 인터넷 프로토콜 주소체계에 따라 패킷의 경로를 결정하면 됨

        . IP 주소가 네트워크 내에서 유일한 식별자의 역할

     

    9.2.2 IP주소란?

    네트워크 환경에서 컴퓨터(노드)간 통신하기 위해 각 커뮤터에 부여된 네트워크 상 주소

     

    윈도우 검색창에 CMD를 치고 명령프롬프트 창을 열어, ipconfig라는 명령어를 검색하면 IP정보가 나온다.

     

    IPv4주소가 곧 내 컴퓨터의 IP주소이다. 

    여기서 네트워크 주소는 192.168.xxx 까지이고 1은 나만의 호스트IP라고 할 수 있다.

     

    쉽게 예를 들어서 인천광역시 연수구 인천대학교 B동 101호 라는 주소가 있다면 천광역시 연수구 인천대학교 B동까지는 네트워크 주소이고 101호는 호스트 주소라고 생각하면 된다. 즉 공통적인 부분(중복이 있는)은 네트워크 주소이고, 식별할 수 있는 부분(중복이 없고 유일무이함)은 호스트 주소이다.

     

    이때 호스트 주소의 중복이 없다는 뜻은 당연히 같은 네트워크 상에서 중복이 없다는 뜻이다.

     

    2) 32자리로 이루어진 2진수, IP

    IP 주소에서 IPv4주소는 32자리 2진수로 표현하므로 주소의 범위는 0~2^32 (약 42억 ) 이다.

    위 예제와 같이 IP주소를 표현할 수 있다.

     

    9.3 IP주소의 클래스 

    9.3.1 IP주소의 클래스란?

    하나의 네트워크 안에 IP들은 네트워크 영역은 같아야하고, 호스트 IP는 서로 다르다. 예를들어 203.240.100.1 에서 203.240.100 은 네트워크 영역이고 1 은 호스트 IP라는 사실을 알 수 있다. 여기서 어떻게 네트워크 주소와 호스트 주소를 구분할 수 있을까? 바로 클래스 때문이다. 

    203.240.100.1이라는 IP주소가 C클래스 이기 때문에 203.240.100 은 네트워크 주소이고, 1은 호스트 주소란 사실을 알아낸 것이다. 이렇게 IP주소에는 클래스라는 개념이 있고 이 클래스의 개념을 알아야 어디까지가 네트워크 영역이고 호스트 영역인지 알 수 있다.

     

    즉 클래스는 하나의 IP주소에서 네트워크 영역과 호스트 영역을 나누는 방법이라고 할 수 있다.

     

    일반적으로 IP주소를 3개의 클래스로 나누는 이유는 네트워크 크기에 따른 구분이라 생각하면 된다.

    하나의 네트워크에서 몇 개의 호스트 IP까지 가질 수 있는가에 따라서 클래스를 나눌 수 있다.

     

    9.3.2 A클래스, B클래스, C클래스

    A클래스

    A클래스는 하나의 네트워크가 가질 수 있는 호스트 수가 가장 많은 클래스이다. IP 주소를 32자리 2진수로 표현했을때, 맨 앞자리수가 항상 0인 경우가 바로 A클래스이다. 즉 0XXX XXXX . XXXX XXXX . XXXX XXXX . XXXX XXXX 와 같이 되어있다.

     

    A클래스에서 가질 수 있는 IP 범위는 0000 0000. 0000 0000. 0000 0000. 0000 0000 ~ 0111 1111. 1111 1111. 1111 1111. 1111 1111 까지다. 이를 십진수로 표현하면 0.0.0.0 ~ 127.255.255.255

    A클래스에서 첫번째 옥테드는 네트워크 부분을 나타내고 나머지 부분은 호스트 부분을 나타낸다.

     

    또 A클래스에서 네트워크 주소는 가장 작은 네트워크인  1.0.0.0 과 가장 큰 네트워크인 126.0.0.0 까지로 규정되어 있다. (127은 제외)

     

    IP주소 중에서 1부터 126으로 시작하는 네트워크는 A클래스라고 생각하면 됩니다. 그리고 호스트 주소가 가질 수 있는 갯수는 (2^24) - 2 개 (-2 이유는 모두가 1인경우 브로드캐스트 주소로 사용하고 모두 0인경우엔 네트워크 주소로 사용하기 때문)

     

    예를 들어 A클래스로 13.0.0.0 네트워크 주소를 할당 받았다고 한다면 여기서 13. 은 네트워크 부분이고 나머지 0.0.0 에 호스트 IP를 할당 할 수 있다. 십진수 0.0.0 은 2진수로 표현하면 총 24개의 2진수로 표현이 가능하고 이는 곧 2^24 개의 호스트 IP를 가질 수 있다는 뜻이다. 

     

    십진수로 나타내면 13.0.0.0 ~ 13.255.255.255 . 하지만 여기서 13.0.0.0 은 네트워크 주소를 표현하기 위해서 사용되어야 하므로 호스트IP로 사용하면 안된다. 또, 13.255.255.255 역시 브로드캐스트 주소로 사용하기 때문에 호스트 IP로 사용하면 안된다. 따라서 (2^24) - 2 를 해주는 것이다. B클래스, C클래스도 같은 원리를 적용하며 네트워크 주소 범위, 호스트 주소 범위만 다르다고 생각하면 된다.

     

    B클래스

     

    B클래스는 반드시 10으로 시작합니다. 2진수로 표현하면

    10XX XXXX . XXXX XXXX . XXXX XXXX . XXXX XXXX  

     

    B클래스의  IP 범위는 128.0.0.0 ~ 191.255.255.255 까지이고

    네트워크 범위는10XX XXXX . XXXX XXXX  에서 x들이 가질 수 있는 경우의 수 이다.  (2^14 개)

    호스트 주소 범위는 XXXX XXXX . XXXX XXXX  에서 x들의 경우의 수인 (2^16) - 2 개 이다. 

    (-2 는 네트워크 주소, 브로드캐스트 주소 사용으로 인해 호스트 주소에서 제외해야 한다.)

     

    C클래스

     

    C클래스는 반드시 110으로 시작합니다. 2진수로 표현하면

    110X XXXX . XXXX XXXX . XXXX XXXX . XXXX XXXX  

     

    C클래스의 IP 범위는 192.0.0.0 ~ 223.255.255.255 까지이고

    네트워크 범위는 110X XXXX . XXXX XXXX . XXXX XXXX  에서 x들이 가질 수 있는 경우의 수 이다. (2^21 개)

    호스트 주소 범위는 XXXX XXXX 에서 x들이 가질 수 있는 경우의 수 (2^8 )-2 개 이다.

    (-2 는 네트워크 주소, 브로드캐스트 주소 사용으로 인해 호스트 주소에서 제외해야 한다.)

     

    정리하자면

    구분 

    2진수 시작은? (s 네트워크, h 호스트)

    네트워크 시작번호 (개수)

    호스트 범위 (개수) 

     A클래스

    0sss ssss. hhhh hhhh. hhhh hhhh. hhhh hhhh

    (0 시작, 네트워크 : 7bit, 호스트 : 24bit)

     1 ~ 126 시작 

    (2^7 -1 개 : 127은 제외라 -1)

     2^24 -2 

    (-2 네트워크, 브로드캐스트 주소 제외)

     B클래스

    10ss ssss .ssss ssss. hhhh hhhh. hhhh hhhh

    (10 시작, 네트워크 : 14bit, 호스트 : 16bit)

     128.0 ~ 191.255 시작

    (2^14 개)

    2^16 -2 

    (-2 네트워크, 브로드캐스트 주소 제외)

     C클래스

    110s ssss. ssss ssss. ssss ssss. hhhh hhhh

    (110 시작, 네트워크 : 22bit, 호스트 : 8bit)

     192.0.0 ~ 223.255.255 시작

    (2^22 개)

     2^8 -2 

    (-2 네트워크, 브로드캐스트 주 제외)

     

    9.4 서브넷 기법

    9.4.1 서브네팅이란? (Subnetting)

    서브네팅은 네트워크 관리자가 네트워크 성능을 성능을 향상시키기 위해, 자원을 효율적으로 분배하는 것이다. 여기서 자원을 효율적으로 분배한다는 것은 네트워크 영역과 호스트 영역을 분할 하는 것이라고 생각하면 된다. 네트워크 측면에서 보자면, 너무 큰 브로드캐스트 도메인은 네트워크 환경에서 패킷전송을 느리게하고 성능저하를 발생시킨다. 따라서 네트워크를 쪼개서 통신 성능을 보장해야한다. 또한 IP는 32자리 2진수로 표현할 수 있는데 이 말은 결국 최대 2의 32승만큼의 표현만 가능하다는 뜻이다. 즉, 자원의 한계가 존재한다는 뜻이고 결국 제한적인 자원으로 인해 주소에 낭비 없이 아껴써야 한다. 그래서 서브넷마스크라는 개념이 등장한다. 서브넷 마스크는 필요한 네트워크 주소만 호스트 IP로 할당 할 수 있게 만들어 네트워크 낭비를 방지한다. 이를 서브네팅이라 한다.

     

    *IP의 특징 : 하나의 IP는 네트워크 부분 + 호스트 부분으로 구성되어 있다. 하나의 네트워크 즉 하나의 브로드캐스트 도메인에 있는 IP끼리 통신하기 위해선 네크워크 영역이 같아야하며, 호스트 IP는 달라야한다. 호스트 IP가 다르지 않다면 IP 충돌이 나지 않을까? 당연히 통신하기 위해선 네트워크 영역이 같아야 한다. 하지만! 네트워크 영역이 다르다고 해서 통신할 수 없을까? 네트워크 영역이 달라도 라우터나 게이트웨이와 같은 통신장비를 통해 통신할 수 있다! 다만 라우터와 네트워크장비 없이 통신할 수 있는 영역을 우리는 브로드캐스트 도메인이라고 하고 하나의 네트워크 영역에는 당연히 네트워크 영역은 같고, 호스트 IP는 자신의 노드를 식별할 수 있도록 다른 호스트 IP와 달라야 한다. 호스트 IP는 마치 주민번호와 같은것! 중복할 될 수 없는 유일무이한 것이다.

     

    예를 들어 192.168.0.3 과 192.168.0.4 를 보면 192.168.0 은 네트워크 영역이고 3과 4는 호스트 IP이다. 이를 해석하면 192.168.0 이라는 네트워크 영역에서 서로 통신할 수 있는 3과 4가 존재한다고 보면 된다.

     

    9.4.2 서브넷마스크 (Subnet Mask)

    쉽게 생각해 볼 수 있다. 성형외과에서 코수술을 한다고 했을때, 환자 얼굴위에 수술 마스크를 덮는다. 해당 마스크는 코만 보이고 눈,입,볼 등 코를 제외한 부분은 전부 가려주어 의사가 코에만 집중할 수 있게 된다. 이와 비슷하게 어느 한 네트워크에서 1~100까지 IP를 할당받을 수 있고 우리가 필요한 IP가 20개 정도라고 가정할 때, 굳이 1~100까지 IP를 줄 필요가 없다. 최소 1~20까지만 IP를 할당하면 된다. 그럼 나머지 21~100은 사용자가 신경쓰지 않게 끔, 서브넷 마스크로 가려버린다고 생각하면 이해하기 쉽다.

     

    9.4.3 서브넷마스크 표시방법

    서브넷마스크는 기본적으로 1과 0으로만 구성되어 있다. IP는 32자리 2진수로 표현하며 서브마스크 또한 IP와 크기만큼 32자리 2진수로 표현할수있다. 굳이 IP보다 클 필요가 없고 작으면 마스크를 하는 의미가 없다. 

     

    서브넷마스크는 1과 0으로 이뤄져있고, 1이 연속으로 나와야한다. 무조건 11110000 이런식으로 1을 표현하기 위해선 1이 연속으로 나와야 한다. IP주소가 만약 192.168.0.1/24 라고하면 이는 C클래스이고 기본 디폴트 마스크는 255.255.255.0 이다. 디폴트 마스크도 서브넷 마스크이다. 255.255.255.0은 우리가 알기 쉽게 10진수로 표현했을 뿐 2진수로 바꾸면 결국 1111 1111.1111 1111.1111 1111.0000 0000 이다. 여기 1이 연속으로 24개 있다. 즉  192.168.0.1/24에서 IP 뒤에 /24 라는 표현은 서브넷 마스크 255.255.255.0을 통해 할당한 IP주소라는 뜻이된다. 1은 네트워크 영역으로 사용하겠다는 뜻이고, 0은 호스트 IP로 사용하겠다라는 뜻이다. 즉 사용자에게 0이 표현된 부분만 호스트 IP를 할당할 수 있게 만들겠다는 뜻이다.

     

    9.4.4 기본 서브넷마스크, 서브넷네트워크, 논리 AND계산 

    기본 서브넷마스크와 서브넷 네트워크에 대해 잠깐 알아야 한다. 예를 들어 210.100.100.1 이라는 IP주소가 있다. 이 주소는 C클래스이다. C 클래스를 사용하고 있다는 뜻은 결국 서브넷마스크(디폴트 마스크)를 사용한다는 말과 같다.

    (C클래스가 다음과 같이 표현되기 때문에 110X XXXX . XXXX XXXX. XXXX XXXX.XXXXXXXX ) 결국호스트 IP로 쓰이는 구간은 서브넷 마스크를 통해 호스트IP를 할당하는 범위와 같다고 할 수 있다.

     

    즉, C클래스를 그대로 사용한다는 것은 C클래스 네트워크를 쪼개지 않고 그대로 하나의 네트워크에 할당할 수 있는 2^8-2개의 호스트 IP를 사용하겠다는 뜻이고 255.255.255.0 이 기본 서브넷 마스크가 된다. 또한, 192.0.0 ~ 223.255.255 까지의 네트워크가 곧 서브넷 네트워크가 된다. 별개의 서브넷마스크를 생성하지 않아도 기본적으로 적용되어 있는게 기본 서브넷마스크이고, 기본서브넷마스크로 쪼개진 네트워크 주소를 서브넷 네트워크 라고 한다. 

     

    따라서 IP 210.100.100.1 기본서브넷마스크 : 255.255.255.0 서브넷네트워크 : 210.100.100.0 이다.

    B클래스의 기본서브넷마스크는 그럼 255.255.0.0 가 되고  A클래스는 255.0.0.0 라고 할 수 있다.

     

    IP 210.100.100.1 를 2진수로 표현하면 다음과 같다.

     

    1101 0010. 0110 0100. 0110 0100. 0000 0001 = 210.100.100.1 (IP주소)

    1111 1111. 1111 1111. 1111 1111. 0000 0000 = 255.255.255.0 (C클래스 기본서브넷마스크)

    1101 0010. 0110 0100. 0110 0100. 0000 0000 = 210.100.100.0 (서브넷네트워크)

     

     

     

    위에서 알 수 있듯이 IP주소와 서브넷마스크를 논리 AND 연산하면 서브넷네트워크를 구할 수 있다.

     

    논리 AND 연산은 1 AND 1 = 1, 1 AND 0 = 0, 0 AND 1 = 0, 0 AND 0 = 0.

     

    이번엔, 150.150.100.1 에 대해서 알아보자

     

    1001 0110. 1001 0110. 0110 0100. 0000 0001 = 150.150.100.1 (IP주소)

    1111 1111. 1111 1111. 1111 1111. 0000 0000 = 255.255.255.0 (C클래스 기본서브넷마스크)

    1001 0110. 1001 0110. 0110 0100. 0000 0000 = 150.150.100.0 (서브넷네트워크)

     

    뭔가 이상하다고 느낄 수 있다. 150.150.100.1 은 분명 B클래스인데, 서브넷 마스크가 C클래스이기 때문이다. 150.150.100.1의 기본서브넷마스크인 255.255.0.0을 사용하지 않고 C클래스 255.255.255.0 을 사용한다는 것은 B클래스 주소를 마치 C클래스 주소처럼 사용하겠다는 뜻이다. (만약 서브넷 마스크를 사용하지 않았다면 해당 IP주소의 네트워크 주소는 150.150.000.0 이다.)

     

    다시말해 B클래스에 의해서 150.150 까지가 네트워크 영역이고 나머지 3,4번째 옥태드가 호스트 영역인데, C클래스 기본 서브넷마스크인 255.255.255.0을 씌우면서 150.150.100까지 네트워크영역이 되고 4번째 옥태드만 호스트 IP를 배정할 수 있게 만든 것 이다.

     

    네트워크 영역을 늘리고 호스트 영역을 줄이겠다는 뜻을 내포하고 있다는 것을 눈치채야 한다. 이렇게 하나의 주소에 서브넷 마스크를 씌워서 자신에게 맞는 네트워크를 만드는 것을 서브네팅이라고 합니다. (참고로 서브넷마스크로 나뉘어진 서브넷네트워크간 통신은 라우터를 통해서 통신이 되어야 한다. 다른 말로 서브넷네트워크는 하나의 독립적인 네트워크다.)

     

    9.4.5 네트워크 영역, 호스트 영역 범위는?

    서브넷마스크를 통해서 얻을 수 있는 서브넷네트워크 갯수와 각 서브넷네트워크에 할당할 수 있는 호스트 갯수에 대해서 알아보자. 전산시험에 단골 출제....

     

    201.222.5.0 IP를 255.255.255.248 서브넷마스크(기본서브넷마스크가 아닌 사용자가 만든 서브넷마스크)에 씌워보자

     

    11001001 11011110 00000101 00000000 = 201.222.5.0 (IP 주소)

    11111111 11111111 11111111 11111000 = 255.255.255.248 (서브넷마스크)

     

    11111111 11111111 11111111 (기본 C클래스가 가질 수 있는 네트워크 영역 )

    11111 (사용자 지정한 네트워크영역 or 범위)

    000 (사용자가 지정한 호스트영역)

     

    위와 같이 서브넷마스크를 적용했을 때, 서브넷네크워크는 몇개가 있을까?

    파란색부분이 바로 서브넷네트워크가 가질 수 있는 범위다. 즉 00000 ~ 11111 (2^5) 까지 계속 바꿔 넣으면 32개의 서브넷네트워크로 쪼갤 수 있다. 그럼 각 서브넷마스크가 가질 수 있는 호스트 IP 갯수는 몇개일까? 초록색 부분이다. 000 ~ 111 (2^3) 까지 계쏙 바꿔 넣으면 8개를 가질 수 있다. 하지만 네트워크 주소와 브로드캐스트 주소를 써야하기 때문에 -2 를 해줘야 한다.  결국 호스트 IP 갯수는 6개라고 할 수 있다. 

     

     

     다시 생각해보자. 서브넷마스크는 하나의 IP에서 사용자의 입맛에 맞게 네트워크 영역과 호스트 영역을 나눠준다. 기본서브넷네트워크도 물론 네트워크 영역과 호스트 영역을 나눠주기 때문에 서브넷마스크라고도 한다. 하지만 진정한 의미의 서브넷마스크는 A클래스, B클래스, C클래스의 기본 서브넷마스크에서 가질 수 있는 네트워크영역과 호스트영역을 더 쪼개서 더 효율적으로 서브네팅하는 것이다. 그렇기 때문에 위에 처럼 C클래스(3옥테드까지만 네트워크로 사용함) 이상으로 4옥테드 영역에 5자리 2진수를 네트워크 영역으로 확대하고! 호스트 영역을 3자리 2진수를 할당함으로써 기본서브넷마스크로 커버할 수 없었던 서브네팅을 구현할 수 있니다.

     

    예제 

     

    위 문제에서 풀이를 덧붙이자면 기존 네트워크보다 네트워크 범위가 1옥텟만큼 더 넓어졌으므로 기존네트워크가 서브네트워크로 2^8 = 256 개로 더 쪼개져서 표현되었다는 의미이다. 그리고 하나의 서브넷 당 호스트 영역이 나머지 2^8-2로 표현 된다. (브로드 캐스트와 네트워크 주소는 제외시켜야 하므로 -2)

     

     

     

     

    728x90
    반응형

    댓글

Designed by Tistory.