[네트워크] 네트워크 주소 개념(MAC 주소, IP 주소)

2022. 5. 20. 14:40TIL💡/Network

네트워크 통신 방식

네트워크에서 출발지에서 목적지에서 데이터를 전송할 때 사용하는 통신 방식

 

유니캐스트

✔︎ 1 : 1 통신

✔︎ 출발지와 목적지가 1 : 1로 통신

 

브로드캐스트

✔︎ 1 : 모든 통신

✔︎ 동일 네트워크에 존재하는 모든 호스트가 목적지

 

멀티캐스트

✔︎  1 : 그룹(멀티 캐스트 구독 호스트) 통신

✔︎  하나의 출발지에서 다수의 특정 목적지로 데이터 전송 → IPTV와 같은 실시간 방송 / 사내 방송이네 증권 시세 전송과 같이 단방향으로 다수에게 동시에 같은 내용을 전달해야할 때

 

애니캐스트

✔︎  1 : 1 통신(목적지는 동일 그룹 내의 1개 호스트)

✔︎  다수의 동일 그룹 중 가장 가까운 호스트에서 응답 → 가장 가까운 DNS 서버를 찾을 때 / 가장 가까운 게이트웨이를 찾을 때 사용

✔︎  IPv4에서는 일부 기능 구현, IPv6은 모두 구현 가능

 

MAC 주소

Media Access Control의 줄임말로 2계층(데이터 링크 계층)에서 통신을 위해 네트워크 인터페이스에 할당된 고유 식별자이다.

MAC 주소는 이더넷과 와이파이를 포함한 대부분의 IEEE 802 네트워크 기술에서 2계층 주소로 사용된다.

네트워크에 접속하는 모든 장비는 MAC 주소라는 물리적인 주소가 있어야 하고 이 주소를 이용해 서로 통신하게 된다.

MAC 주소 체계

MAC 주소는 변경할 수 없도록 하드웨어에 고정되어 출하하므로 네트워크 구성 요소마다 다른 주소를 가지고 있다.

모든 네트워크 장비 업체에서 장비가 출하될 때마다 MAC 주소를 할당하게 되는데 매번 이 주소의 할당여부를 확인할 수 없으므로 한 제조업체에 하나 이상의 주소풀을 주고 그 풀 안에서 각 제조업체가 자체적으로 MAC 주소를 할당한다. 이렇게 네트워크 장비 제조업체에 주소 풀을 할당하는 것을 제조사 코드(Vendor Code)라고 부르며 이 주소는 국제기구인 IEEE가 관리한다.

 

MAC 주소는 48비트의 16진수 12자리로 표현된다. 48비트의 MAC 주소는 다시 다음과 같이 앞의 24비트와 뒤의 24비트로 나누어 구분하는데 앞에서 언급한 제조사 코드가 MAC 주소 앞의 24비트인 OUI 값이다.

https://linkhub.tistory.com/88

뒤의 24비트의 값인 UAA는 각 제조사에서 자체적으로 할당하여 네트워크에서 각 장비를 구분할 수 있게 해준다.

 

OUI

 

✔︎ IEEE가 제조사에 할당하는 부분

 

UAA

 

✔︎ 각 제조사에서 네트워크 구성 요소에 할당하는 부분

 

유일하지 않은 MAC 주소

흔히 MAC 주소는 유일한 값이라고 생각하지만 유일하지 않을 수 있다.
네트워크 장비 제조업체는 자신의 제조업체 코드 내에서 뒤의 24비트의 UAA 값을 할당하는데 실수나 의도적으로 MAC 주소가 중복될 수도 있다.

MAC 주소는 동일 네트워크에서만 중복되지 않으면 동작하는 데 문제가 없다.
네트워크 통신을 할 때 네트워크가 달라 라우터의 도움을 받아야 할 경우, 라우터에서 다른 네트워크로 넘겨줄 때 출발지와 도착지의 MAC 주소가 변경되므로 네트워크를 넘어가면 기존 출발지와 도착지 MAC 주소를 유지하지 않는다.

IP 주소🔥

OSI 7계층에서 주소를 갖는 계층은 2계층과 3계층이다. 2계층은 물리 주소인 MAC 주소를 사용하고 3계층은 논리 주소인 IP 주소를 사용한다. 대부분의 네트워크가 TCP / IP 로 동작하므로 IP 주소 체계를 이해하는 것이 네트워크 이해에 매우 중요하다.

 

IP 주소를 포함한 다른 프로토콜 스택의 3계층 주소는 다음과 같은 특징이 있다.

 

1. 사용자가 변경 가능한 논리 주소이다.

2. 주소에 레벨이 있다. 그룹을 의미하는 네트워크 주소와 호스트 주소로 나뉜다.

 

IP 주소 체계(vs. MAC 주소)

우리가 흔히 사용하는 IP 주소는 32비트인 IPv4주소이다. IP는 v4, v6 두 체계가 사용되면 IPv6는 128비트이다. 

✔︎ IPv4 : 32비트

✔︎ IPv6 : 128비트

 

IPv4 주소를 표기할 때는 4개의 옥텟(Octat)이라고 부르는 8비트 단위로 나누고 각 옥텟은 "."으로 구분한다. 2계층의 MAC 주소가 16진수로 표기된 것과 다르게 IP주소는 10진수로 표기하므로 8비트 옥텟은 0 ~ 255의 값을 쓸 수 있다.

 

2계층 주소인 MAC 주소가 제조업체 코드인 OUI와 제조업체별 일련 번호인 UAA의 두 부분으로 나뉘는 것과 목적이 다르지만 3계층 주소인 IP주소도 네트워크 주소호스트 주소 두 부분으로 나뉜다.

 

✔︎ 네트워크 주소

호스트들을 모은 네트워크를 지칭하는 주소

네트워크 주소가 동일한 네트워크를 로컬 네트워크라고 함

 

✔︎ 호스트 주소

하나의 네트워크 내에 존재하는 호스트를 구분하기 위한 주소

 

MAC 주소는 24비트씩 절반으로 나뉘지만 IP 주소의 네트워크 주소와 호스트 주소는 이 둘을 구분하는 경계점이 고정되어 있지 않다.

이것이 다른 주소 체계와 IP 주소 체계를 구분하는 가장 큰 특징이다. 

IP 주소 체계는 필요한 호스트 IP 개수에 따라 네트워크의 크기를 다르게 할당할 수 있는 클래스 개념을 도입했습니다.

 

클래스풀 

 

✔︎ A 클래스 - 가장 큰 주소를 갖는데 약 1,600만 개의 IP 주소를 가질 수 있다.

첫 번째 옥텟에 네트워크 주소와 호스트 주소를 나누는 구분자가 있다.

 

✔︎ B 클래스 - 약 6만 5천 개의 IP 주소

두 번째 옥텟에 네트워크 주소와 호스트 주소를 나누는 구분자가 있다.

 

✔︎ C 클래스 - 약 250개의 IP주소

세 번째 옥텟에 네트워크 주소와 호스트 주소를 나누는 구분자가 있다.

https://linkhub.tistory.com/118

 

참고로 이 구분자를 서브넷 마스크라고 한다.

 

IP 주소가 도입한 클래스 개념은 다른 고정된 네트워크 주소 체계에 비해 주소를 절약할 수 있다는 장점이 있다.

네트워크의 크기가 모두 같은 경우, 큰 네트워크를 필요로 하는 조직은 네트워크를 여러 개 확보해야 하는 어려움이 있고 연속된 네트워크를 할당받기 어렵다. 작은 네트워크가 필요한 조직의 입장에서는 너무 많은 IP를 가져가므로 IP가 낭비된다.

 

A, B, C 클래스는 맨 앞 옥텟의 주소만 보고 구분할 수 있다.

 

A 클래스는 첫 옥텟을 이진수로 표기했을 때 2진수 8자리 중 맨 앞 자리가 0인 주소가 A 클래스이다. 좀 더 풀어서 설명하면 첫 옥텟이

0 0000000 ~ 0 1111111인 주소가 A 클래스가 된다.

127만 예외로 자신을 의미하는 루프백(Loopback) 주소로 사용되므로 실제로 A 클래스로 사용할 수 있는 주소는 1.0.0.0 ~ 126.255.255.255까지이다.

 

같은 방식으로 B 클래스는 10 000000 ~ 10 111111인 수를 10진수로 표현하면 128부터 191까지,

C클래스는 110 00000 ~ 110 11111인 수를 10진수로 표현하면 192부터 223까지 IP인 경우가 해당된다.

 

클래스 기반의 네트워크 분할 기법은 과거에 사용했던 개념으로 현재는 위에서 설명한 것처럼 클래스 기반으로 네트워크를 분할하지 않는다. 보다 네트워크를 세밀하게 분할하고 할당하기 위해 필요한 네트워크의 크기에 맞추어 1비트 단위로 네트워크를 상세히 분할하는 방법을 사용한다.


🙋‍♀️ 깜짝 QUIZ

네트워크에서 사용 가능한 호스트 개수 파악하기

네트워크 주소: 172.16.0.0

브로드캐스트 주소: 172.16.255.255

유효 IP 범위: 172.16.0.1 ~ 172.16.255.254(네트워크 주소와 브로드캐스트 주소는 제외한다.)

 

클래스풀과 클래스리스

IP 주소 체계에서 설명한 클래스 기반의 IP 주소 체계를 클래스풀이라고 부른다.

IP 주소 체계를 처음 만들었을 때는 클래스 개념을 도입한 것이 확장성이 있고 주소 낭비가 적은 최적의 조건을 만들 수 있었던 좋은 선택이었다.

이 주소 체계에서는 네트워크 주소와 호스트 주소를 구분 짓는 구분자(서브넷 마스크)가 필요 없었다.

맨 앞 자리 숫자만 보면 자연스럽게 이 주소가 어느 클래스에 속해 있는지 구분할 수 있었고 주소 구분자를 적용할 수 있었다.

클래스리스 네트워크의 등장

인터넷이 상용화되면서 인터넷에 연결되는 호스트 숫자가 폭발적으로 증가했다.

기존 클래스풀 기반의 주소 체계는 확장성과 효율성을 모두 잡는 좋은 체계였지만 기하급수적으로 늘어나는 IP 주소 요구를 감당하기에는 너무 부족했다. 이론적으로 사용할 수 있는 IP 개수는 43억여 개이지만 실제로 사용할 수 있는 IP 숫자는 이보다 훨씬 적다. 현재 전 세계 인구가 하나의 IP만 갖더라도 IP 할당이 불가능한 크기이고 이 외에도 네트워크 주소를 계층화하고 분할하기 위해 낭비되는 IP가 매우 많았다. 하나의 네트워크에서 IP가 사용되지 않더라도 그 IP를 다른 네트워크에서 사용하지 못했다.

IP 주소 부족과 낭비 문제를 해결하기 위해 3가지 보존, 전환전략을 만들어냈다.

 

1. 단기 대책 - 클래스리스, CIDR(Classless Inter-Domain Routing)

2. 중기 대책 - NAT와 사설 IP 주소

3. 장기 대책 - 차세대 IP인 IPv6

 

현재 우리가 사용하는 주소 체계는 클래스 개념을 적용하지 않는 클래스리스 기반 주소 체계이다.

 

클래스리스 네트워크에서는 별도로 네트워크와 호스트 주소를 나누는 구분자를 사용해야 하는데, 이 구분자를 서브넷 마스크라고 부른다.

서브넷 마스크는 IP 주소와 네트워크 주소를 구분할 때 사용하는데 2진수 숫자 1은 네트워크 주소, 0은 호스트 주소로 표시한다.

보통 우리가 편하게 받아들일 수 있는 10진수를 사용해 255.0.0.0, 255.255.0.0, 255.255.255.0와 같이 표현한다.

255는 네트워크 주소 부분, 0은 호스트 부분으로 구분된다.  IP 주소와 서브넷 마스크를 AND 연산하면 네트워크 주소만 뽑아낼 수 있다.

 

서브넷 마스크 표현 방법✨

서브넷 마스크를 표현하는 방법은 비트 단위로 표현하는 방법과 10진수로 표현하는 방법을 사용한다.

일부 네트워크 장비는 8진수나 16진수로 나타내지만 표현하거나 이해하기 어려워 대부분 사용하지 않는다.

 

비트 단위로 표현하는 방법

서브넷 마스크에서 1 부분이 연속된 자릿수를 표현해주는 것

A 클래스를 서브넷 마스크로 나타내면 첫 번째 옥텟이 1, 나머지 옥텟이 0이므로 /8로 표현한다.

B 클래스는 /16, C 클래스는 /24로 표현한다.

 

10진수로 서브넷 마스크를 표현하는 방법

A 클래스 - 255.0.0.0

B 클래스 - 255.255.0.0

C 클래스 - 255.255.255.0

 

서브네팅🔥 

원래 부여된 클래스의 기준을 무시하고 새로운 네트워크 - 호스트 구분 기준을 사용자가 정해 원래 클래스풀 단위의 네트워크보다 더 쪼개 사용하는 것을 서브네팅(Subnetting)이라고 한다.

부여된 주소를 다시 잘라 사용해 서브네팅이라고 부르는데 현대 클래스리스 네트워크의 가장 큰 특징이다.

옥텟 단위로 구분되는 서브네팅은 이해와 운영이 쉽지만 실제로는 옥텟 단위보다 더 잘게 네트워크를 쪼개 2진수의 1비트 단위로 네트워크를 분할하므로 서브네팅을 이해하기 어렵다.

 

네트워크 사용자 입장에서 고민

✔︎ 네트워크에서 사용할 수 있는 IP 범위 파악

✔︎ 기본 게이트웨이와 서브넷 마스크 설정이 제대로 되어 있는지 확인

 

네트워크 설계자 입장에서 고민

✔︎ 네트워크 설계 시 네트워크 내에 필요한 단말을 고려한 네트워크 범위 설계

- 서브넷된 하나의 네트워크에 IP를 몇 개나 할당해야 하는가?

- 그리고 서브넷된 네트워크가 몇 개나 필요한가?

 

내가 속한 네트워크의 유효 범위를 파악하는 방법

1. 내 IP를 2진수로 표현한다.

2. 서브넷 마스크를 2진수로 표현한다.

3. 2진수 AND 연산으로 서브네팅된 네트워크 주소를 알아낸다.

4. 호스트 주소 부분을 모두 1로 변경해 브로드캐스트 주소를 알아낸다.

5. 유효 IP 범위를 파악한다. 서브네팅된 네트워크 주소 + 1은 유효 IP 중 가장 작은 IP이다.

6. 브로드캐스트 주소 - 1은 유효 IP중 가장 큰 IP이다.

7. 2진수로 연산되어 있는 결괏값을 10진수로 변환한다.

 

공인 IP와 사설 IP

인터넷에 접속하려면 IP 주소가 있어야 하고 이 IP는 전 세계에서 유일해야 하는 식별자이다.

이런 IP 주소를 공인 IP라고 한다.

하지만 인터넷에 연결하지 않고 개인적으로 네트워크를 구성한다면 공인 IP를 할당받지 않고도 네트워크를 구축할 수 있다. 이때 사용하는 IP 주소를 사설 IP라고 한다.

 

인터넷에 접속하려면 통신사업자로부터 IP 주소를 할당받거나 IP 할당 기관에서 인터넷 독립기관 주소를 할당받은 후(한국의 경우 KISA) 독립 IP를 할당받아야 하므로 절차가 복잡하다. 인터넷에 접속하지 않거나 NAT 기술을 사용할 경우(공유기나 회사 방화벽을 사용하는 경우)에는 사설 IP 주소를 사용할 수 있다. 이는 인터넷 표준 문서인 RFC에 명시되어 있다.

사설 IP를 사용하면 인터넷에 직접 접속하지 못하지만 IP를 변환해주는 NAT 장비에서 공인 IP로 변경한 후에는 인터넷 접속이 가능하다.

가정에서 많이 사용하는 공유기는 NAT 장비의 역할을 하는 대표적인 예이다.

 

회사 내부에서 사설 네트워크를 구축할 때 NAT를 사용하여 인터넷에 연결하더라도 다른 사용자에게 할당된 IP를 사설 네트워크 주소로 사용하면 안된다. 다른 인터넷 연결에는 문제가 없지만 내부 네트워크에 할당된 IP를 공식으로 사용하는 네트워크로 접속할 수 없으므로 인터넷 어느 구간에서도 사용되지 않는 RFC에 명시된 사설 IP 대역을 사용할 것을 추천한다.

 

사설 IP는 A 클래스 1개, B 클래스 16개, C 클래스 256개를 사용할 수 있다. 규모가 큰 엔터프라이즈 네트워크에서는 대부분 A 클래스 크기인 10.0.0.0/8 네트워크를 사용하고 규모가 작은 네트워크를 위해서는 C 클래스 192.168.x.0/24을 사용한다. 공유기에서 가장 많이 사용되는 기본 IP가 192.168.0.1인 이유이다.

이외에도 아이폰, 갤럭시와 같은 모바일 디바이스에서는 가장 많이 사용되는 10점대 A 클래스와 192.168.x.0/24번대 C 클래스와 겹치지 않도록 B 클래스인 172.x.x.x 네트워크를 이용해 테더링 기능을 제공한다.

 

 

 

 

 

 

'TIL💡 > Network' 카테고리의 다른 글

[네트워크] 서브넷과 게이트웨이  (0) 2022.05.22
[네트워크] ARP  (0) 2022.05.22
[네트워크] TCP와 UDP  (0) 2022.05.22
[네트워크] OSI 7계층 vs. TCP/IP 계층  (0) 2022.05.18
[네트워크] 프로토콜의 배경  (0) 2022.05.17