네트워크

네트워크 통신하기 - 2 (MAC 주소, IP 주소)

우잉~ 2024. 11. 10. 15:47

MAC(Media Access Contral) 

 

- MAC은 2계층에서 통신을 위해 네트워크 인터페이스에 할당된 고유 식별자이다. → 결국 2계층의 '주소'(고유한 성질을 가지고 있음)

- 모든 하드웨어 장비는 MAC 주소를 가지고 있으며, 이를 이용하여 서로 통신한다. → 변경할 수 없도록 하드웨어에 고정되어 출하된다.

- MAC 주소는 48bit의 16진수로 표기되며 총 12자리이다. 48비트를 반으로 나눠 구분하는데, 앞 24비트는 '제조사 코드', 뒤 24비트는 제조사에서 자체적으로 할당하여 장비를 구분할 수 있게 한다. 이를 각각 'OUI', 'UAA'라고 한다.

* MAC 주소는 네트워크 카드나 장비를 생산할 때 하드웨어적으로 정해져서 나오기 때문에 BIA(Burned-In Address)라고도 부른다.

- NIC에 고정된 MAC 주소를 변경하기는 어렵다. 하지만 Windows의 경우 Driver 상세 정보에서 MAC 주소를 변경할 수 있고, Linux는 GNU MacChanger나 각 리눅스 배포판의 네트워크 설정 파일에 직접 MAC 주소를 입력하여 주소를 변경할 수 있다.

 

MAC 주소 체계

 

- NIC에 전기 신호가 들어오면 2계층에서 패킷으로 변환하여 패킷 내용을 구분한 뒤 도착지 MAC 주소를 확인한다. 도착지 MAC 주소가 자신이 갖고 있는 주소와 다르면 패킷을 폐기해버린다. 같을 경우에는 해당 정보를 상위 계층으로 넘겨준다.

- 위에서 이야기했듯 MAC 주소는 NIC에 종속된다. 단말은 여러 NIC를 가질 수 있으므로 MAC 주소가 여러 개일 수도 있다. (예: 멀티레이어 스위치, 라우터 등)

 

 

IP(Internet Protocol) 

- 3계층에서는 IP 주소를 사용한다.

- MAC은 물리 주소, IP는 논리 주소이다. → 논리적인 주소이기 때문에 사용자가 변경 쉽게 변경할 수 있다.

- 현재 흔히 사용하는 IP 주소는 32Bit IPv4이다. * IPv6의 경우 128Bit이다.

- IPv4 주소를 표기할 때는 4개의 8Bit 단위인 옥텟(Octet)으로 나뉘며, 10진수로 표기되고  "."으로 구분한다.

IPv4 주소 체계

- IP의 주소는 [네트워크 주소/호스트 주소]로 나뉜다.

네트워크 주소 호스트를 모은 네트워크를 지칭하는 주소로, 네트워크 주소가 동일한 네트워크를 로컬 네트워크라고 한다.
호스트 주소 하나의 네트워크 내에 존재하는 호스트를 구분하기 위한 주소

 

- MAC 주소와 달리 IP 주소는 경계가 정확히 나뉘어있지 않다. 그래서 클래스 개념(A, B, C, D, E)을 도입하여 네트워크 주소와 호스트 주소를 구분했다. → 클래스풀이라고 부른다.

네트워크와 호스트 주소를 나누는 구분자는 클래스에 따라 변경된다.

 

- A 클래스는 가장 큰 주소를 가지며, 약 1,600만 개의 IP 주소를 가질 수 있으며, B 클래스는 약 6만 5천 개, C 클래스는 약 250개의 IP 주소를 가질 수 있다.

Class 주소 범위
A Class 1~126.255.255 ※ 127.0.0.0은 자신을 뜻하는 로컬 호스트이며, 루프백 주소로 사용된다.
B Class 128~191.0.0.0
C Class 192~223.0.0.0
D Class 224~239.0.0.0

 

- 과거에 클래스가 막 생겨났을 때는 기업의 규모를 기준으로 클래스 별로 IP 주소를 나눠가지도록 했다. 하지만 현재 아주 부족한 상태... A 클래스 IP 주소를 사용하는 경우 낭비되는 IP 주소가 너무 많다. → 그래서 현재는 과거에 사용했던 개념으로 네트워크를 분할하지 않고, 필요한 네트워크 크기에 맞춰 1비트 단위로 네트워크를 분할하는 방법을 사용하고 있다.

- IP가 부족해지는 문제를 해결하기 위해 3가지 대책을 마련했다.

1. CIDR(Classless Inter-Domain Routing) 기반 주소 체계(클래스리스)

2. NAT 및 사설 IP 주소

3. IPv6

 

- 현재는 클래스리스 주소 체계(CIDR)를 사용하고 있다. CIDR은 네트워크 주소와 호스트 주소를 나누는 구분자를 이용하여 IP 주소를 분할하는데, 이를 서브넷 마스크라고 한다.

- 보통 2진수의 1은 네트워크 주소, 0은 호스트 주소로 표시한다. (예: 255.0.0.0, 255.255.255.0 등)

- 서브넷 마스크를 더 쉽게 표기하기 위해 1의 개수(네트워크 주소)를 세어 표시하기도 한다. (예: /8, /24 등) 이를 Prefix라고 한다.

- 네트워크 주소를 알아내기 위해서는 호스트 주소와 서브넷 마스크와 AND(&) 연산을 한다. → 둘 다 1일 때 1, 나머지는 0

(예시)

103.9.32.146 255.255.255.0(= 103.9.32.146/24)

네트워크 서브넷 호스트
01100111
11111111
00001001
11111111
00100000
11111111
10010010
00000000
01100111 00001001 00100000 00000000
네트워크 주소: 103.9.32.0

 

- 결국 따지고 보면 /8은 A 클래스, /16은 B 클래스, /24는 C 클래스가 되는데, 이를 무시하고 1비트 단위로 네트워크를 분할하는 방법을 서브네팅이라고 한다.

IP 주소 103.9.32.146 01100111 00001001 00100000 10010010
서브넷 255.255.255.192 11111111 11111111 11111111 11000000
네트워크 주소 103.9.32.128 01100111 00001001 00100000 10000000

네트워크 주소 호스트 주소

 

- 네트워크를 효율적으로 분할하거나, 자신의 네트워크와 원격지 네트워크를 구분해야 하는 경우에 서브네팅에 대해 고민해야 한다.

네트워크 사용자 입장: 네트워크에서 사용할 수 있는 IP 범위를 파악해야 함. 기본 게이트웨이와 서브넷 마스크 설정이 제대로 되어 있는가?

네트워크 설계자 입장: 네트워크 설계 시 네트워크 내에 필요한 단말을 고려한 네트워크 범위를 설계해야 함. 하나의 네트워크에 IP를 몇 개 할당해야 하는지? 또는 PC가 몇 대 있는지? 서브넷된 네트워크가 몇 개 필요한지?

 

자신이 속한 네트워크 유효 범위를 파악하기 위해서는

1. 네트워크 주소 알아내기

2. 호스트 주소 부분을 2진수 1로 변경해 브로드캐스트 주소를 알아내기

3. 가장 작은 IP(네트워크 주소 1)와 가장 큰 IP(브로드캐스트 주소-1) 확인하기

4. 10진수 변환하기

 

※ 네트워크 주소와 브로드캐스트 주소는 사용할 수 없다. 왜? 네트워크 주소는 전체를 대표하는 주소, 브로드캐스트 주소는 이름 답게 모두에게 한 번에 데이터를 전송하는 데 사용하는 IP 주소이다.

  103 9 32 146
IP 주소 103.9.32.146 01100111 00001001 00100000 10010010
서브넷 255.255.255.192 11111111 11111111 11111111 11000000
네트워크 주소 103.9.32.128 01100111 00001001 00100000 10000000
브로드캐스트 주소 103.9.32.191 01100111 00001001 00100000 10111111
첫 번째 주소
(가장 작은 IP)
103.9.32.129 01100111 00001001 00100000 10000001
마지막 주소
(가장 큰 IP)
103.9.32.190 01100111 00001001 00100000 10111110

네트워크 주소 호스트 주소 브로드캐스트 주소 구하기 10진수 변환하기

 

 

공인 IP와 사설 IP

- 인터넷 접속을 위해서는 IP 주소가 있어야 한다. → 전 세계에서 유일해야 하는 식별자: 공인 IP(Public IP)

- 인터넷 접속을 안 하고 싶으면? 사설 IP(Private IP)를 이용하여 네트워크를 구축할 수 있다.

- 어떻게 사설 IP를 구축할 수 있을까? → NAT(Network Address Translation) 기술(공유기 또는 회사 방화벽)을 사용하면 된다. 

- NAT는 인터넷에 직접 접속하는 것이 아니라, NAT 장비에서 공인 IP로 변경하여 인터넷을 접속할 수 있도록 하는 기술이다. 

- 사설 IP를 사용할 때 주의해야 할 부분은 다른 사용자에게 할당된 IP를 사용하면 안 된다는 것이다. → 당연히 접근 불가능하므로 꼭 RFC에 명시된 사설 IP 대역을 사용하는 것이 좋다.