MAC Address는 Media Access Control의 준말로 2계층(데이터 링크)에서 통신을 위해 NIC에 할당된 고유 식별자다.
MAC은 이더넷, 와이파이를 포함한 IEEE 802 네트워크 기술에서 2계층 주소로 사용되며, 네트워크에 접속하는 모든 장비는 MAC 주소라고 물리적인 주소가 있어야하고 이 주소를 이용해 서로 통신하게 된다.
MAC 주소는 변경할 수 없도록 하드웨어에 고정되어야 하므로 주소 체계가 필요하다 네트워크 구성요소마다 서로 다른 주소를 가지고 있는데, 제조업체에 하나 이상의 풀을 주고 그 안에서 제조업체가 자체적으로 MAC을 할당하는 방식으로 진행이 되며, 이 주소는 국제기구인 IEEE가 관리를 한다.
MAC주소 체계에는 OUI(Organization Unique Identifier)m UAA(Universally Administered Address)로 이루어져 있다.
- OUI: IEEE 제조사가 할당하는 부분
- UAA: 각 제조사에서 네트워크 구성 요소에 할당하는 부분
MAC주소는 이렇게 장비 제조업체 코드와 제조업체가 자체적으로 할당한 값으로 구성되며 카드나 장비를 생산할 때 하드웨어적으로 정해져 나오므로 MAC주소는 BIA(Burned in Address)라고도 부른다.
OSI 7계층에서 2, 3 계층만이 주소를 갖는데 2계층은 물리주소 MAC을 갖고 3계층은 논리주소 IP를 갖는다.
IP 주소를 포함한 다른 프로토콜 스택의 3계층 주소는 다음과 같은 특징이 있다.
- 사용자가 변경이 가능한 논리 주소
- 주소에 레벨이 있음, 그룹을 의미하는 네트워크 주소, 호스트 주소가 있다.
우리가 흔히 사용하는 ip주소는 32비트 ipv4 주소 체계다. v4, v6 두 체계가 주로 사용이 되는데 ipv6는 128비트다.
ipv4 주소를 표기할때는 4개의 옥텟(octet)이라고 부르는 8비트 단위로 나누고 각 옥텟은 .을 사용해 구분한다.
ip주소는 10진수로 표기하므로 8비트의 옥텟은 0~255의 값을 사용할 수 있다.
IP는 주소체계가 네트워크 주소, 호스트 주소 이렇게 나뉘어져 있다. (MAC처럼 제조업체 코드별 일련 번호 두 부분으로 나뉘는 것과 목적이 다르다.)
- 네트워크 주소: 호스트들을 모은 네트워클르 지칭하는 주소로 네트워크 주소가 동일한 네트워크를 로컬 네트워크라고 한다.
- 호스트 주소: 하나의 네트워크 내에 존재하는 호스트를 구분하기 위한 주소
mac은 24비트씩 절반으로 나뉘지만 ip는 네트워크 주소와 호스트 주소는 이 둘을 구분하는 경계점이 고정되어 있지 않다. 이것이 다른 주소 체계와 ip를 구분하는 큰 특징이다.
ip는 필요한 호스트 개수에 따라 네트워크 크기를 다르게 설정할 수 있는 class 개념을 도입했다.
A, B, C, D, E 클래스 처럼 네트워크 주소와 호스트 주소를 나누는 구분자가 고정되어 있다면 네트워크가 가질 수 있는 호스트 IP 숫자가 갖기 때문에 모든 같은 크기의 네트워크가 되지만 구분자가 이동할 수 있어 네트워크 크기가 달라질 수 있다.
즉, 클래스에 따라 네트워크 내에 할당할 수 있는 호스트의 수가 결정되므로 규모에 맞춰서 사용을 하기 위해 클래스라는 개념을 둔 것이다.
ip 주소 체계에서 설명한 클래스 기반의 ip 주소 체계를 classful 이라고 한다.
하지만 현재는 서브넷 마스크라는 것을 이용한다.
초창기엔 서브넷 마스크 없이 class를 통해 네트워크를 구축해 서브넷 마스크 없이 통신을 했다.
그러나 서브넷 마스크를 도입후 클래스 리스 방식을 주로 사용하는데 네트워크 정보를 주고받을 시 서브넷 마스크까지 전달하는 방법을 뜻한다.
서브넷 마스크: IP 네트워크 부분과 호스트 부분을 구분하는데 사용되는 숫자 이를 통해 특정 네트워크의 대역을 정의하고 관리할 수 있음
이는 무엇이냐면 클래스를 지정해 네트워크를 구성하지 않고도 서브넷 마스크의 값만 보고 해당 ip의 할당 범위를 판단할 수 있는 것이다.
- classful: 라우팅 정보 전송시 서브넷 마스크 전달 안하며 RIRv1, IGRP같은 프로토콜이 있으며 라우팅 프로토콜에서 서브넷 마스크를 사용할땐 제약사항이 존재한다
- classless: 라우팅 정보 전송시 서브넷 마스크 정보도 포함하며 대표적인 프로토콜은 RIRv2, EIGRP, OSPF, BGP등이 있다.
원래 부여된 클래스의 기준을 무시하고 새로운 네트워크-호스트 구분 기준을 사용해 원래 클래스풀 단위의 네트워크보다 더 쪼개 사용하는 것을 서브네팅이라고 한다.
부여된 주소를 다시 잘라 사용해 서브네팅이라고 부르는데 현대 클래스리스 네트워크의 가장 큰 특징이다. 옥텟 단위보다 더 잘게 네트워크를 쪼개 2진수의 1비트 단위로 네트워크를 분할한다.
쉽게 말하면 서브넷은 큰 네트워크를 더 작은 네트워크로 나누는 과정을 의미한다. (클래스 기반의 네트워크 내에서 더 잘라 공간을 만드는 느낌)
예시를 들어보자면 192.168.1.0/24 네트워크를 4개의 서브넷으로 나누고싶으면 다음과 같이 할 수 있다.
-
기본 서브넷 마스크: 255.255.255.0 (/24)
-
4개의 서브넷을 만들기 위해 비트를 2비트 추가. (2^2 = 4)
새로운 서브넷 마스크: 255.255.255.192 (/26)
서브넷 1:
- 네트워크 주소: 192.168.1.0
- 서브넷 마스크: 255.255.255.192
- 가능한 호스트: 192.168.1.1 ~ 192.168.1.62 (62개 호스트)
- 브로드캐스트 주소: 192.168.1.63
서브넷 2:
- 네트워크 주소: 192.168.1.64
- 서브넷 마스크: 255.255.255.192
- 가능한 호스트: 192.168.1.65 ~ 192.168.1.126 (62개 호스트)
- 브로드캐스트 주소: 192.168.1.127
서브넷 3:
- 네트워크 주소: 192.168.1.128
- 서브넷 마스크: 255.255.255.192
- 가능한 호스트: 192.168.1.129 ~ 192.168.1.190 (62개 호스트)
- 브로드캐스트 주소: 192.168.1.191
서브넷 4: -네트워크 주소: 192.168.1.192 -서브넷 마스크: 255.255.255.192 -가능한 호스트: 192.168.1.193 ~ 192.168.1.254 (62개 호스트) -브로드캐스트 주소: 192.168.1.255
원래같으면 192.168.1.0이 네트워크 주소였겠지만 서브네팅을 통해 더욱 잘게 쪼개어 4개의 서브넷당 네트워크 주소가 0, 64, 128, 192인것을 확인할 수 있다.
클래스 기반이였다면 클래스 단위로 네트워크 주소를 설정할 수 밖에 없었을텐데 더욱 세밀하고 잘게 쪼갤수있는것을 서브네팅을 통해 달성할 수 있는것이다.
인터넷에 접속하려면 ip주소가 있어야하고 전세계에서 유일하고 식별되어야 한다. 이런 주소를 공인 ip라고 부른다.
하지만 인터넷에 연결하지 않고 개인적으로 네트워크를 구성한다면 그 공간내에서만 유니크하면 된다. 이런 공인 ip를 할당받지 않고도 네트워크를 구축이 가능한데 이를 사설 ip주소라고 한다.