본문 바로가기

별걸다하는 IT/네트워크_소켓_통신

맥 어드레스란 무엇인가? IP주소와 맥주소(MAC address) 차이, 맥 주소 확인하는 법 - 네트워크 기초

안녕하세요. 양햄찌 블로그 주인장입니다. ㅎㅎ

오늘은 맥 주소(=맥 어드레스 = Mac Address)를 살펴보려고 해요.

 

[목차]

1. 맥 어드레스란 무엇인가

2. 맥 주소는 왜 하드웨어, 물리적 주소라는 이름이 붙었을까

3. 맥 어드레스와 IP주소 왜 주소가 두개나 필요할까?

4. 맥 주소 확인하는 법

5. 맥 주소 구성

6. 맥 주소와 IP주소 차이

1. 맥 어드레스(Mac Address 맥 주소)란 무엇인가?

출처: https://www.slideshare.net/AsyaKarapetyan1/mac-address-all-you-need-to-know-about-it

맥 어드레스는 컴퓨터간 데이터를 전송하기 위해 있는 컴퓨터의 물리적 주소입니다.

어라?? 컴퓨터 주소는 IP주소 아니였나요? 해당 IP주소를 가지고 있는 컴퓨터를 찾아가서 데이터를 주고 받는 줄 알고 있었는데요?!

 

 

맞습니다! 저 멀리 있는 컴퓨터와 통신하기 위해서는 IP주소를 사용하는 게 맞는데 내부적 어떻게 동작하는지를 살짝 깊게 들여다 보면~, 실제로는 IP주소를 맥 어드레스로 바꿔 사용하기 때문에 IP주소 사용한다는게 결국 맥주소를 사용한다는거랑 같은 거예요. ㅎㅎ 즉 IP 통신 내부에 맥 주소 통신이 포함되어 있다. 

 

그림 출처: https://networkengineering.stackexchange.com/questions/3329/reason-for-both-a-mac-and-an-ip-address#:~:text=MAC%20addresses%20and%20IP%20addresses,identify%20machines%20throughout%20different%20networks.

" IP주소간의 통신은 사실, 각 라우터 hop에서 일어나는 MAC주소와 MAC주소 통신의 연속적인 과정이다."

 

IP는 내가 미국에 있는 A 주소로 편지를 보낼께! 즉 시작점과 끝점에 해당하는 주소라면,

MAC주소는 바로 옆에 나와 물리적으로 연결되어 있는 노드와 통신할 때 사용되는 주소를 의미합니다. 

 

시작점에서 끝점에 가기 위해서는 사이사이 노드들을 거쳐 데이터가 전달되어야 하죠? ㅎㅎ

편지가 미국에 가기 위해서는 순간이동으로 가는게 아니라 중간 중간 거점을 거쳐서 이동되듯이요~

그래서 IP주소간의 통신은 사실 맥주소간의 통신이라고 하는거예요

 

요 말을 MAC주소는 데이터링크 계층에서 사용되고 IP주소는 네트워크 계층에서 사용된다고 하는데,

데이터링크 계층에 문제없이 동작해야, 그니까 이웃노드들간의 통신이 되어야 (데이터링크 계층의 역할입니다)

결국 멀리 있는 노드에게도 통신이 가능하다라는거 (네트워크 계층).

 

거점 사이사이 전달이 가능해야 결국 내가 원하는 저 먼 주소로 이동이 되는거죠!

 

2. 맥 주소는 왜 하드웨어 주소, 물리적 주소라는 이름이 붙었을까?

IP주소가 네트워크 주소라면, 맥 주소는 하드웨어 주소(Hadware Address)입니다.

또 다른 이름으로 물리적주소(Physical Address), 이더넷 주소(Ethernet Address), BIA라고 불리기도 한답니다!

 

왜 IP는 네트워크 주소라는 이름이 붙었고, 맥 주소는 하드웨어를 의미하는 형용사류를 덧붙인 이름이 붙었을까??

그림 출처: http://acronymsandslang.com/definition/5325740/BIA-meaning.html

NIC(랜카드) 만드는 제조사가 카드를 만들 , 카드 내에 있는 ROM 있어서 아주 기본적인 OS이런 것이 들어가 있기도 하고 또한 다른 정보가 들어있기도 한데 거기에!! Mac Address 들어가 있어요.

 

즉 그 카드의 주소가 정해져 있는거죠. 주소는 사용자가 마음대로 바꿀 없어요 (물로 네트워크를 해킹으로 공격하는 방법 등이 있지만 여기서 그런 것은 제외하고). 여기서 중요한 것은 통신 모듈에 주소를 부여하고 주소를 부여하는 곳이 ROM입니다. ROM에다가 주소를 쓰는 ROM 쓰면 안지워지거든요. 그래서 롬에다가 뭔가 데이터를 때는 흔히 굽는다고 그래요. 우리말로 그래서 Burned in address라는 말이 나온 것~!

 

Burning 하면 바뀌지 않기 때문에 맥주소를 물리적인 주소라고 합니다.

또 통신에서 physical 바뀔 없는 이라는 뜻인데요, IP주소는 바뀌지만 Mac주소는 절대로 바뀌지 않습니다.

그래서 BIA, 물리적주소, 하드웨어주소, 이더넷주소와 같은 이름들이 붙은거예요 ㅎㅎ

 

3. 맥 어드레스와 IP주소 왜 주소가 두개나 필요할까?

주소라는게 하나만 있으면 되는거 아닌가요??

왜 굳이 IP주소를 Mac주소로 바꿔서 사용하는걸까요?

출처: www.educba.com

[맥주소 너란 녀석 왜필요하니]

맥주소의 다른 이름은 하드웨어 주소라고 했죠?!

한 마디로, 그 기계의 고유번호, 그 하드웨어만 가지고 있는 식별번호, 하드웨어를 구분하기 위한 주소라는 겁니다.

우리가 생활하는 삶에서 비유하자면, 사람을 식별해주는 주민등록번호 같은 느낌인거죠.

하드웨어 식별번호 같은거니까? 맥주소는 컴퓨터에만 붙어있는게 아니라 라우터 스위치 등 통신 장비 모두에게 붙어있어요. 

그런데!! 여러분이 만약에 저 한국을 넘어서, 북극 끝자락에 어떤 A라는 컴퓨터와 통신을 하고 싶다고 합시다.

IP주소가 A라는 컴퓨터라는걸 사실 확실하게 보증할 수는 없어요. 우리 지번주소가 도로명주소체계로 바꼈듯이, IP주소는 변동가능성이 있거든요. 결국 절대 변하지 않는 그 기계의 고유주소번호가 있어야 하는데, 그게 맥주소입니다.

 

출처: https://www.gbnews.ch/what-is-end-to-end-encryption-e2ee/

미국 어딘가에 존재하는 컴퓨터 A와 통신한다고 생각해볼게요.

어떻게 데이터를 보낼까요? 내가 일단 옆에 사람에게 전달, 그 옆사람이 또 옆사람에게 전달, 그 옆사람이 또 전달 이렇게 해서 A까지 가는게 우리 네트워크 통신 방법인데요. 이렇게 나와 이웃 간의 통신을 보장해주는 프로토콜이 데이터링크 계층 프로토콜이고 이때 통신에 필요한게 MAC주소입니다.

 

그래서 A가 B한테 데이터를 전송할 때 전송하는 데이터의 목적지 IP주소뿐만 아니라 MAC어드레스가 지정되어야 전송할 수 있어요.

 

컴퓨터는 자신의 IP와 MAC주소는 알아도 내가 통신하고자 하는 상대방의 MAC주소는 모릅니다.

우리가 보통 메일로 보내면 jhnyang@tistory.com 이런식으로 도메인주소로 메일을 발송하게 되는데,

이 도메인주소는 전송될때 사실 IP로 바껴 통신 요청을 하게되죠~

 

난 맥주소를 별도로 전달하지 않았는대..?! 우리가 전달하지 않아도, 네트워크단에서 IP주소로 MAC주소를 알아오는 기능을 하는 프로토콜이 있고 그 프로토콜을 ARP라고 합니다.

이렇게 송수신에 필요한 IP와 맥주소를 모두 얻게 되는거죠!

 

좀 더 IT적으로 얘기하면, 맥 주소는 직접 연결된 노드들에게 데이터를 전달하는데에 초점이 맞혀져 있습니다. 

매체를  장치가 아닌 복수 개의 장치가 공유해서 쓰고 있기 때문에 어떤  장치가 프레임(데이터)을 보내면  프레임이 어느 장치에 가는 프레임인지 알아야겠죠. 어느 장치로 가는지 알려면  프레임이 도착해야  장치의 주소를 들여다 봐야하는데 그게 목적지 Mac 주소예요. 데이터링크 계층에서 보내는 프레임에는 수신 장치의 Mac Address  프레임 전송하는 Mac Address 쓰여 있습니다.

 

[IP주소 너란 녀석 왜 필요하니]

아 맥주소가 필요하다는건 이해를 했습니다. 그럼 맥주소를 알고 있다면 IP주소 없이 통신이 될까요?

이 세계에 장비가 얼마나 많은대!! 내가 A의 맥 주소를 알고 있다한들 통신할 수 있을까요?? 

 

만약 위 사진처럼, 직접 연결되어 있다면, 야 너가 A야?? 라고 물어보고 어 맞아! 이럼 나랑 통신하자! 하믄 되긌지만,,,

저 두 사람 사이에 수 많은 사람들이 있다면 내가 MAC주소 가지고 사람을 찾아 통신할 수 있을까요?

사진출처: https://bonlivre.tistory.com/117

맥주소는 바로 옆사람과의 통신에만 쓰이잖아요. 그럼 내가 저 미국에 있는 컴퓨터A에게 갈려면 나랑 연결된 어떤 노드에게 데이터를 패스해야 맞는지 맥주소로는 판단할 수 없어요.   

 

이를 해결하기 위해 어찌보면 IP주소가 존재합니다. 전체적인 맵을 보고 방향을 알려주는게 IP주소라고 생각하면 돼요!

 

IP주소는 네트워크 계층에서 동작하는 IP프로토콜에서 사용하는 주소체계로,

우리 실생활에서 우편물이나 택배 보낼때 사용하는 주소원리와 동일합니다.

 

IP주소로 MAC주소를 찾을 수 있는 비결도 이 주소체계에 들어있답니다~!

 

 

 

 

 

[EXAMPLE]

그림출처: https://www.prweb.com/releases/2012/5/prweb9493706.htm

자 경기도에 사는 '양햄찌'라는 어떤 사람이 친구 '겐지'에게 편지를 보낸다고 해요.

그런데 내가 겐지에게 편지를 보내줘!! 이러면 우체국은 어디로 보내야하는지 알 수 있나요?  아뇨 ~~~!

모래사장에서 바늘찾기도 아니고 겐지가 어딨는지 내가 어떻게 알아!!

(단순 이해를 돕기 위한 예시입니다. 여기서 겐지라는 건 변하지 않는 그의 이름으로,, MAC주소라고 생각하시면 돼요)

 

출처: https://www.freesoft.org/CIE/Course/Subnet/3.htm

그래서 우리는 큼직 큼직 지역을 파악하기 위해서 계층형 주소를 써요. 

주소를 정한 뒤, 주소로 편지를 보내주길 요청하죠. 어디어디사는 겐지! 요렇게~~

 

'서울특별시 중구 세종대로 어쩌구~' 가 있으면,

맨 상위 계층 '서울특별시'를 보고 일단 싹다 서울특별시 우편물 집합장소로 보냅니다.

전세계 어디로 보내던 큰 개념을 먼저 보고 어디에 보내야할지 알 수 있는거죠

 

그 다음엔 서울특별시에 모인 우편물들을 가지고 그 다음 단계인 중구인지, 영등포구인지, 성북구인지 분류를 한다음에 보내겠죠? 그 뒤에도 마찬가지입니다. 중구에 도착한 편지들을 가지고 그 다음 하위 단계에서 분류해서 내보내는 방식이에요. 그게 우리가 실제 쓰고 있는 주소의 정체이고, 전화번호도, 우편번호도 다 이처럼 설계되어있습니다.

 

이런걸 계층형 주소라고 하는데, 네트워크도 똑같다 이거인거죠.

그래서 우리는 IP주소 체계의 네트워크를 계층구조 네트워크라고 합니다.

다만 전화번호와 우편번호는 사람이 쓰기 위한 주소라면, IP주소는 컴퓨터가 쓰기 위한 주소인거죠~~

이런 원리로, 그 수많은 컴퓨터들 사이에서 범위를 차차 좁혀나가 겐지가 어디에 있는지 알 수 있는거예요. 

 

결국 우편배달시스템에 해당되는게 IP프로토콜이고,

우편배달시스템을 수월하게 하기 위해 계층형 주소를 만든것처럼

IP프로토콜에 사용되는게 계층형 IP주소인겁니다. 

 

[ARP원리]

IP주소를 MAC주소로 바꿔주는 ARP 프로토콜도

계층형주소 특징을 이용해 그 주소로 찾아가 수소문해 MAC주소를 알아내오는겁니다.

 

목적지 도달했으면, 자기가 속한 네트워크에 있는 모든 PC에게 메세지를 보냅니다. 저기요~~~ AAA라는 IP를 가진 분 손들어주세요~~ 저한테 MAC주소 좀 보내주세요~

 

이렇게 확성기처럼 들어온 포트를 제외하고 전체에 뿌려 물어보는걸 플루딩이라고 하는데, 맥 주소를 알아내기 위해 요렇게 동작하는 프로토콜ARP입니다 ㅎㅎ 

 

이외에 MAC관련되어서 다룰게 많은데, MAC테이블 동작 방식이라던가 ARP, CDP 이런 내용은 나중에 자세히 따로 빼서 진행하도록 할게요. 오늘은 기초 포스팅이니까~~!

 

이제 왜 우리가 MAC주소와 IP주소 두 개를 쓰는지 이해가 되었을거라고 생각해요 ㅎㅎ 

 

4. 맥 주소 확인하는 법 (맥 어드레스 확인법)

맥 주소는 명령어로 간단하게 확인할 수 있습니다. 

cmd 창에 들어가서 ipconfig /all이라는 명령어를 쳐주면 됩니다.

1. ipconfig /all 명령어 

1-1. cmd창 들어가기

실행 단축키 window키 + r 을 누른 후 cmd라고 입력해주세요

또는 시작 검색에다가 그냥 cmd라고 쳐주면 명령프롬프트 앱이 뜨는데 눌러서 들어가줘도 같습니다.

 

1-2. ipconfig /all 명령어 입력

이제는 안쓰는 컴퓨터인지라,,, 그냥 가리지 않고 공개! 

여기 보면 '물리적 주소'라고 되어있는 부분 있죠?! 네 앞에서 언급했듯이 맥 어드레스의 또 다른 이름은 물리적 주소 입니다. 요기 적혀 값이 내 맥 주소예요.

2. getmac -v

그런데 이렇게 여러개 정보가 같이 나오는 거 말고 딱 MAC Address만 보고 싶다!

똑같이 cmd창에 들어가서 명령어를 'getmac -v'를 쳐주면 됩니다.

 

2-1. 1-1과 동일. cmd창 들어가기~

2-2. getmac -v 입력

빨간색 부분에 이렇게 딱 물리적주소가 뜨게 됩니다.

5. 맥 주소 구성

오 위에서 MAC주소를 확인해보니까 두개의 알파벳 쌍이 총 6개로 묶여있네요

MAC 주소가 왜 저렇게 구성되었을까 궁금하지 않으신가요?!

출처: https://networkencyclopedia.com/mac-address/

맥 주소는 6byte죽 48비트로 구성되어있는데 16진수로 표기합니다.

또 8자리마다 하이픈(-)이나 콜론(:), 점(.)으로 구분되어지기도 합니다. cmd창에서 맥어드레스 명령어 쳤을 때에는 하이픈 구분자로 구분이 되네요.

 

주소 앞의 6개의 16진수 (사진상으로 노란 바탕에 있는 부분)는 생산자를 나타내는 코드로 이 코드를 OUI(Oranizational Unique Identifier)라고 합니다. 결국 해당 장비를 만들어진 회사(?)를 나타내는 거기 때문에 앞의 자리수를 보면 어디 회사에서 생산된 제품인지 알 수 있어요. 

그리고 그 뒤에 파란색 부분, 즉 나머지 6개의 16진수는 고유 번호를 부여하기 위한, 시리얼넘버예요.

6. MAC주소와 IP주소 차이점

개념적인 차이는 위에서 설명했으니까~~! 

자세하게는 말고, 그냥 그런게 있구나 ~ 하고 간단하게 넘어가봅시다.

출처: http://www.firewall.cx/networking-topics/general-networking/105-mac-addresses.html

일단 IP 주소랑 맥 주소는 동작하는 layer가 다릅니다. 우리 전에 OSI 7계층에 대해 얘기했었죠??

맥어드레스가 2계층 데이터링크 계층라면 IP 주소는 3계층인 네트워크 계층에서 동작해요.

당연하겠죠 ㅎㅎ 네트워크 주소를 찾고 난 뒤, 그 하위 단계에서 진행되니까요 ㅎㅎ

결국 OSI 7계층도 계층형 단계잖아요 ㅎㅎ

출처:https://www.quora.com/Is-it-possible-to-compare-an-IP-address-and-Mac-address-If-yes-how

맥 주소는 48비트라면 IPv4주소는 32비트

MAC주소는 2계층에서 동작하고, IP주소는 3계층에서 동작합니다

맥주소는 물리적 주소, IP주소는 논리적 주소~

맥주소는, 제조사에서 부여한 고유 번호를 가지지만,

IP주소는 네트워크 환경에 따라 변경될 수 있죠 ㅎㅎ

 

앞에서 다 설명한거라 한 번에 이해하셨을 거라 생각해요~!

 

오늘은 기본적인 네트워크 MAC주소에 대해 알아보는 시간을 가졌어요.

도움이 되셨다면 좋아요는 어떤가요?  큰 힘이 됩니당 :)