• 목차 :

    • IP address가 무엇인지. (1) v

    • Netmask (2) v

    • IP with Netmask의 subnet (3) v

    • subnet의 Broadcast 주소 (4) v

    • ip 주소 with Netmask를 나타내는 여러 가지 방법 (5) 

    • public && private IP의 차이점 (6) 

    • IP 주소의 class (7) v

    • TCP (8)

    • UDP (9)

    • network 레이어가 무엇인지 (10)

    • OSI model (11)

    • DHCP 서버 그리고 DHCP 프로토콜 (12)

    • DNS 서버 그리고 DNS 프로토콜 (13)

    • IP 주소를 가지고 두 개의 디바이스가 통신하도록 만들 때의 규칙 (14)

    • IP를 가지고 라우팅(routing) 하는 것이 어떻게 돌아가는지 (15)

    • 라우팅을 위한 기본(default) Gateway (16) 

    • IP 관점에서의 포트(port)는 무엇인지, (17)

    • 그리고 다른 기기와 연결할 때 그 사용용도는 무엇인지 (18)

v

v

개괄적 이해

related to. (1) (2) (3) (7) (16)

소개

TCP/IP 프로토콜을 구성하려면 IP주소, 서브넷 마스크, 그리고 기본 게이트웨이가 필요하다.
구성을 위해서는 TCP/IP 네트워크 주소를 지정하는 방법과 서브넷으로 나누는 방법을 알아야 한다.

 

참고

TCP/IP가 인터넷의 네트워크 프로토콜로 널리 사용되는 가장 큰 이유는
크기와 유형이 다른 크기의 네트워크와 다른 유형의 시스템을 함께 연결할 수 있기 때문이다.

 

이러한 네트워크는 세 가지 기본 클래스(+기타 클래스)로 나눌 수 있다.(A, B, C)
각 클래스는 미리 정의된 크기를 가지고 있고, 시스템 관리자에 의해 보다 작은 서브네트워크로 나눌 수 있다.
서브넷 마스크는 하나의 IP 주소를 두 부분으로 나누는 데 사용된다.
이 중 한 부분은 호스트를 식별하고, 다른 한 부분은 컴퓨터가 속해 있는 네트워크를 식별한다.

 

IP 주소 : 네트워크 및 호스트

IP 주소란 호스트를 식별하는 32비트 숫자다.
여기서 호스트란 컴퓨터, 프린터 또는 라우터 같은 디바이스(장치).

 

IP 주소는 보통 네 개의 영역이 점으로 분리된 십진수 형식으로 표현된다.
예를 들어 다음과 같은 형식 : 192.168.123.132.


다음을 통해 서브넷 마스크가 호스트와 네트워크, 서브네트웤을 어떻게 구분하는지 이해해보자.
다음은 이진 표기법으로 된 IP주소다.

예를 들어 점으로 구분된 십진수 IP 주소 192.168.123.132.

는 이진법으로
32비트 숫자 110000000101000111101110000100이다.


이진수를 네 부분으로 나눠보자. 8개씩.

위의 예제 IP주소는

11000000.10101000.01111011.100000100 이 된다.
각각의 8비트 섹션을 우리는 '옥텟'이라고 부른다.


그런데 이 숫자도 마찬가지로 알아보기 힘들어서
십진수 형식(192.168.123.132.)으로 변환한 것이다.
각각의 십진수는 이진수를 십진 표기법으로 변환한 것이다.

 

서브넷 마스크

TCP/IP가 작동하기 위해 필요한 두 번째 항목이 바로 서브넷 마스크이다.
TCP/IP 프로토콜에 의해 호스트가 로컬 서브넷에 있는지, 아니면 원격 네트워크에 있는지를 확인하는 데 쓴다.

 

TCP/IP에서는 네트워크 주소와 호스트 주소로 사용되는 IP 주소 부분이 고정되어 있지 않다.
따라서 추가정보가 있지 않는 한, 네트워크 주소와 호스트 주소를 확인할 수 없다.


이러한 추가 정보는 서브넷 마스크라고 하는 또 다른 32비트 숫자의 형태로 제공된다.
이 예제에서는 서브넷 마스크가 255.255.255.0이다.
이진표기법에서는 255가 11111111에 해당하므로, 이 서브넷 마스크가 아래와 같다는 것을 모른다면
다음 숫자가 무엇을 의미하는지 이해하기 어려울 것이다.

11111111.11111111.11111111.00000000

IP 주소와 서브넷 마스크를 나란히 놓으면 주소의 네트워크 부분과 호스트 부분을 아래와 같이 분리할 수 있다.

11000000.10101000.01111011.10000100
-> IP address(192.168.123.132)
11111111.11111111.11111111.00000000
-> Subnet mask(255.255.255.0)

처음 24비트(서브넷 마스크에서 1로 이루어진 숫자)는 네트워크 주소이고
마지막 8비트(서브넷 마스크에서 나머지 0으로 이루어진 숫자)는 호스트 주소이다.
각각의 숫자가 의미하는 것은 아래와 같다.

11000000.10101000.01111011.00000000
-> Network address(192.168.123.0)
00000000.00000000.00000000.10000100
-> Host address(000.000.000.132)

이제 255.255.255.0 이라는 서브넷 마스크를 사용하는 이 예제에서
네트워크 ID는 192.168.123.0이고,
호스트 주소는 0.0.0.132라는 것을 알 수 있다.

 

패킷이 로컬 서브넷이나 원격 네트워크로부터 192.168.123.0 서브넷에 도달하여
해당 서브넷에 목적지 주소 192.168.123.132가 있으면 컴퓨터가 네트워크로부터
해당 패킷을 받아서 처리한다.

 

거의 모든 십진 서브넷 마스크는
왼쪽이 모두 1이고 오른쪽이 모두 0인 이진 숫자로 변환된다.
일반적으로 사용되는 또다른 서브넷 마스크는 다음과 같다.

Decimal : 255.255.255.192
Binary : 11111111.11111111.11111111.11000000

Decimal : 255.255.255.224
Binary : 11111111.11111111.11111111.11100000

 

네트워크 클래스

인터넷 주소는 인터넷을 관리하는 조직인 InterNIC에서 할당하고 있다.
이러한 IP주소는 클래스로 나눠지는데, 가장 일반적으론 A, B, C 클래스로 나눠진다.
클래스 D, E도 있지만 일반 사용자는 대개 사용하지 않는다.
각 주소 클래스는 서로 다른 기본 서브넷 마스크를 갖고 있다.
첫 번째 옥텟을 보면 IP주소의 클래스를 식별할 수 있다.


다음은 클래스 A, B, C의 인터넷 주소 범위와 예제 주소다.

  • 클래스 A 네트워크는 기본 서브넷 마스크 255.0.0.0을 사용하고 첫 번째 옥텟으로 0 ~ 127 사이의 값을 갖는다. 주소 10.52.36.11은 클래스 A주소이다. 이 주소의 첫 번째 옥텟은 10으로, 1 ~ 126(포함) 사이에 있다.
  • 클래스 B 네트워크는 기본 서브넷 마스크 255.255.0.0을 사용하고 첫 번째 옥텟으로 128 ~ 191 사이의 값을 갖는다. 주소 172.16.52.16이 클래스 B의 주소이다. 이 주소의 첫 번째 옥텟은 172로, 128 ~ 191(포함) 사이에 있다.
  • 클래스 C 네트워크는 기본 서브넷 마스크 255.255.255.0을 사용하고 첫 번째 옥텟으로 192 ~ 223 사이의 값을 갖는다. 주소 192.168.123.132와 같은 주소가 클래스 C주소이다. 이 주소의 첫 번째 옥텟은 192으로, 192 ~ 223(포함) 사이에 있다.

 

서브넷 구성

클래스 A, B, C TCP/IP 네트워크는 시스템 관리자에 의해 더 작은 단위로, 즉 서브넷으로 나누어질 수 있다.
인터넷의 논리적 주소 체계(IP 주소와 서브넷으로 이루어진 추상적 세계)와
실제로 사용되는 실제 네트워크를 맞출 때 이러한 작업이 필요하다.

 

시스템 관리자가 관리하는 네트워크가 이 주소에 잘 맞는 방식으로 구성되어 있지 않을 수 있다.
무슨 말이냐면, 클래스 C 네트워크 192.168.123.0을 할당했다고 가정하자.
이 주소는 설명을 위한 주소로, 실제로 인터넷에서 할당되는 범위에 있는 게 아니다.
즉, 사용할 수 있는 주소는 다음의 범위다
: 192.168.123.1 - 192.168.123.254 사이의 주소.

 

호스트 부분이 모두 1이거나 0인 이진 주소는 유효하지 않기 때문에
192.168.123.0 주소와 192.168.123.255 주소는 사용할 수 없다.
0 주소는 호스트를 지정하지 않고 네트워크만을 지정하는 데 사용하므로 유효하지 않고,
255주소(이진 표기법에서 호스트 주소가 모두 1인 주소)는
네트워크 상의 모든 호스트에 메시지를 브로드캐스트 하는 데 사용하므로 유효하지 않다.
이처럼 네트워크 또는 서브넷의 첫 번째 주소와 마지막 주소는 개별 호스트에 할당될 수 없다.

 

이제 254대의 호스트에 IP 주소를 제공할 수 있음을 확인했다.
이제 예를 들어 각각 다른 사이트에 있는 3개의 네트워크에서 150대의 호스트를 갖고 있고,
하나의 TCP/IP 라우터로 연결되어 있는 광역 네트워크를 갖고 있다고 가정해보자.
3개의 네트워크는 각각 50대의 호스트를 갖고 있다.


그런데 사실 이 경우 254대의 호스트에 IP 주소를 제공할 수 있으므로
150대의 컴퓨터가 모두 하나의 네트워크에 있는 게 적절하다.

그래서 이 경우 각 네트워크에 추가로 주소 블록을 요청하는 대신
하나의 주소 블록을 여러 개의 실제 네트워크에 사용할 수 있도록 네트워크를 여러 개의 서브넷으로 나눈다.

 

네트워크 주소는 늘리고, 가능한 한 호스트 주소 범위는 줄이는 서브넷 마스크를 사용하여서
네트워크를 4개의 서브넷으로 나눴다.
즉, 호스트 주소에 사용되는 비트 중 일부를 '빌려' 이를 주소의 네트워크 부분에 사용한다.
서브넷 마스크 255.255.255.192는
각각 62대의 호스트로 이루어진 4개의 네트워크에 사용할 수 있다.(62 * 4 = 248)


이진 표기법에서는 255.255.255.192가
11111111.11111111.11111111.11000000 과 같기 때문에 그렇다.
마지막 옥텟의 처음 두 자릿수는 네트워크 주소가 되어 추가 네트워크
00000000(0),
01000000(64),
10000000(128),
11000000(192)를 가질 수 있다.


이러한 4개의 네트워크에서 마지막 6자리 이진수는 호스트 주소에 사용할 수 있다.

서브넷 마스크 255.255.255.192를 사용하면 192.168.123.0 네트워크가
4개의 네트워크

192.168.123.0,
192.168.123.64,
192.168.123.128,
192.168.123.192

로 나누어진다.

 

이들 4개 네트워크에서 유효한 호스트 주소는 다음과 같다.

192.168.123.1-62
192.168.123.65-126
192.168.123.129-190
192.168.123.193-254

모두 1과 0으로 이루어진 이진 호스트 주소는 유효하지 않으므로
마지막 옥텟이 0, 63, 64, 127,128, 191, 192, 255인 주소는 사용할 수 없다.

 

두 호스트 주소, 192.168.123.71과 192.168.123.133을 보면 그 이유를 알 수 있다.

기본 클래스 C 서브넷 마스크 255.255.255.0을 사용할 경우
이 두 주소가 모두 192.168.123.0 네트워크에 있다.

 

그러나 서브넷 마스크 255.255.255.192를 사용한다면
이 두 주소가 각각 다른 네트워크에 있게 된다.
즉, 192.168.123.71은 192.168.123.64 네트워크에 있고
192.168.123.133은 192.168.123.128 네트워크에 있게 된다.

(4) subnet의 브로드캐스트 주소

브로드캐스트 하나의 로컬 네트워크 전체에 있는 클라이언트 모두에게 데이터를 보내는 방식이며
ARP, DHCP, RIP등의 프로토콜에 사용된다.

 

이것이 어떻게 가능한지 알려면
브로드캐스트 주소(Broadcast Address)를 이해해야 한다.

"브로드캐스트 주소는 어드레스주소중 가장 큰 수이다."
간단히 말하면 이것만 기억하면 된다.

 

즉,
네트워크 클래스가 A이고 IP가 192.0.0.0 일 경우 브로드캐스트 주소는 192.255.255.255
네트워크 클래스가 B이고 IP가 192.168.0.0 일 경우 브로드캐스트 주소는 192.168.255.255
네트워크 클래스가 C이고 IP가 192.168.16.0 일 경우 브로드캐스트 주소는 192.168.16.255
이다.

 

그럼 만약에 서브넷 마스크가 255.255.255.224 일 경우 어떻게 브로드캐스트 주소를 구할 수 있나?

브로드캐스트 주소 구하는 법
IP address: 192.168.16.1
Subnet mask: 255.255.255.224

1 - Subnet mask를 invert한다.
255.255.255.224 => 11111111.11111111.11111111.11100000
이것을 invert하면 00000000.00000000.00000000.00011111
2 - Invert한 subnet과 IP address를 Logical OR를 한다.
192.168.16.1 => 11000000.10101000.00010000.00000001
Invert한 서브넷 => 00000000.00000000.00000000.00011111
결과는 => 11000000.10101000.00010000.00011111 => 192.168.16.31

이번 파트는 다음을 참고하였습니다.
: https://openmicrolab.com/%EB%B8%8C%EB%A1%9C%EB%93%9C%EC%BA%90%EC%8A%A4%ED%8A%B8-%EC%A3%BC%EC%86%8C/

 

추가 자료

  1. IP address
  • IP 통신에 필요한 고유 주소를 말하며, 2010년 기준, IPv4와 IPv6 두 가지 체계가 있다.

    • IPv4
      • 32비트의 값을 가진다. 현재 가장 널리 사용되고 있다.
      • 일반적으로는 8비트씩 끊어 이를 0~255의 10진수 숫자로 나타내며, 각 숫자는 점(.)으로 구분한다.
      • 예를 들어 123.45.67.89 같은 식.
      • 총 32비트의 정보를 가지므로 이론적으로 4,294,967,296개의 고유한 주소가 부여될 수 있다.
  • IPv4의 주소체계는 총 12자리이며 네 부분으로 나뉜다. 각 부분은 0~255까지 3자리의 수로 표현된다. IPv4 주소는 32비트로 구성되어 있으며, 현재 인터넷 사용자의 증가로 인해 주소공간의 고갈에 대한 우려가 높아지고 있다. 이에 따라 대안으로 128비트 주소체계를 갖는 IPv6가 등장하였다.

    • IPv6
      • 128비트의 값을 가진다. 일반적으로 4자리의 16진수 숫자 8개로 표기하고, 각각은 콜론(:)으로 구분한다.
      • 0이 연속되는 경우 생략하기도 한다. 예를 들어 2001:0db8:0dad:0010:0000:0000:0000:0100 같은 형태.
      • IPv6 주소를 표기할 때는 보통 16진수를 이용하여 AAAA:BBBB:CCCC:DDDD:EEEE:FFFF:GGGG:HHHH 식으로 표현한다.
      • 여기서 IPv4와 다른 점이 있는데, 일단 숫자 표현을 10진수가 아닌 16진수로 표기한다는 것과
      • 중간에 0이 있는 경우 그 필드는 생략할 수 있다는 것이다.
      • 예로 들어서 2001:0db8:0dad:0010:0000:0000:0000:0100의 경우
      • 0만 있는 5~7번째를 생략하여 2001:0db8:0dad:0010::0100이나 2001:db8:dad:10::100으로 표기할 수 있다.
      • 0이 흩어져 있는 경우 가장 긴 부분만 생략하고 나머지는 명시한다.

출처 : https://namu.wiki/w/IP

 

1-2. A~E 클래스

  • A 클래스

    • A Class는 최고위의 Class로서, 1~126 (0, 127 예약됨)범위의 IP주소를 가진다. 두 번째, 세 번째 그리고 네 번째 단위의 세 숫자는 A Class가 자유롭게 네트워크 사용자에게 부여가 가능한 아이피이다.
  • B 클래스

    • B Class는 두 번째로 높은 단위의 Class로써, 아이피 구성에서 첫 번째 단위의 세 숫자는 128 - 191 가운데 하나를 가지며 (위의 예에서 181), 두 번째 단위의 세 숫자는 B Class가 접속할 수 있는 네트워크를 지시한다.
  • C 클래스

    • C Class는 최하위의 Class로서, 아이피 구성에서 첫 번째 단위의 세 숫자는 192 -223 가운데 하나를 가지며 (위의 예에서 221), 두 번째와 세 번째 단위의 세 숫자는 C Class가 접속할 수 있는 네트워크를 지시한다. C Class가 자유로이 부여할 수 있는 아이피는 마지막 네 번째 단위의 254 개이다.(2개는 예약)

더 자세한 설명 확인 + 출처 : https://ko.wikipedia.org/w/index.php?title=IPv4&action=edit&section=1

  1. 넷마스크(Netmask)

    • 개요

      • 하나의 네트워크를 몇 개의 네트워크로 나누어 사용할 때 나눠진 각각의 네트워크를 구분하기 위해 사용하는 특수한 bit
      • 정확한 표현은 subnet mask라고 함.
      • 21세기에 가까워질수록 IPv4 주소의 고갈이 현실화되였고 각국의 NIC에서는 이를 최대한 늦추기 위하여 각 라우터가 브로드캐스팅하는 로컬 네트워크 영역에 공인 IP 대역을 호스트가 필요한 만큼만 할당하려는 노력을 하였다.
      • 이러한 NIC 기관의 요구에 맞춰서 IETF에서는 로컬 네트워크 내부에서 접속한 호스트의 IP 대역을 외부 네트워크와 명확하게 구분할 수 있는 수단을 표준화하였고 이것이 서브넷 마스크 (Subnet Mask)다.
    • 표시 방법

      • IPv4 주소는 4개의 바이너리 8자리수로 이루어져 총 32비트로 구성되어 있다. 예를 들어 192.168.0.1은 1100 0000 . 1010 1000 . 0000 0000 . 0000 0001 로 표현된다.
      • IP 주소는 네트워크 부분과 호스트 부분으로 나누어진다. 하나의 로컬 네트워크란 하나의 라우터를 거쳐가는 여러개의 호스트들이 연결된 브로드캐스트 영역이다. 즉, 어떤 네트워크에서 한 노드가 브로드캐스트를 했을 때 그 네트워크의 모든 노드가 신호를 받았다면 그 네트워크는 하나의 네트워크라고 볼 수 있다. 호스트란 그냥 각각의 노드(PC, 스마트폰, 태블릿 등)들이다.
      • 다시 말해 하나의 로컬 네트워크에서는 IP 주소의 네트워크 부분은 같아야 하고, 호스트 부분은 달라야 한다는 것이다.
      • IP 주소에서 192.168.0.1/24 혹은 192.168.0.1 서브넷 마스크:255.255.255.0 과 같은 것을 본 적이 있을 것이다. 여기서 /24 와 /255.255.255.0 은 같은 것을 나타내는데, 255.255.255.0 을 2진수로 쓰면 1111 1111.1111 1111.1111 1111.0000 0000이다. 여기서 앞에서부터 연속된 1의 개수만 나타낸 것이 /24 이다.
    • 네트워크 주소

      • 서브넷 마스크를 계산할 때는 논리곱 (논리 AND)을 사용한다.

      • 예: 192.168.0.1/24

      • 여기서 1을 논리곱하는 부분이 네트워크 부분, 0을 논리곱하는 부분이 호스트 부분이다.

      • 1100 0000.1010 1000.0000 0000.0000 0001 - IP 주소

      • 1111 1111.1111 1111.1111 1111.0000 0000 - 서브넷 마스크

      • 1100 0000 1010 1000 0000 0000 0000 0000 - 서브넷 네트워크

      • 호스트 개수 : 네트워크 주소와 브로드캐스트 주소를 제외한 253개

      • 네트워크 개수 : 1개
        출처 : https://namu.wiki/w/%EC%84%9C%EB%B8%8C%EB%84%B7%20%EB%A7%88%EC%8A%A4%ED%81%AC

더 쉬운 + 더 많은 설명 모음

: https://42kchoi.tistory.com/23

 

'Code 42 > Netwhat' 카테고리의 다른 글

netwhat 시험 안전하게 통과하기 !  (0) 2020.07.01
네트워크 이해(Feat. Netwhat 시험 대비하기)  (2) 2020.03.10
Netwhat 과제 해석  (0) 2020.03.10
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기
// custom