[스터디] 우리는 어떻게 다양한 사이트를 여행 다닐 수 있을까 - (4) Mac 주소

Seungrok Yoon (Lethe)·2021년 9월 18일
0

스터디 

목록 보기
4/6
post-thumbnail

네트워크 통신은 다양한 하드웨어와 소프트웨어의 합작으로 이루어진다!

브라우저에 제 글이 띄워지는 과정에서 독자 여러분들의 컴퓨터는 Velog 서버의 IP주소를 얻기 위해 DNS와 통신했을 것이고, Velog 서버에 제 글의 정보를 얻기 위한 네트워크 요청을 시도하여 응답을 얻었을 것입니다.

이러한 네트워크 통신은 물리적인 네트워크 장치들 간 비트스트림형식의 데이터 전송을 통해 이루어 지는데요, 그렇다면 어떻게 내 장치는 목적지 장치를 정확하게 특정하여 데이터를 보낼 수 있는 것일까요?

이것은 MAC주소 덕분에 가능한 일이었습니다.

그래서 오늘은 MAC 주소에 대해 간단하게 알아보고, MAC 주소가 어떻게 L2:데이터 링크 계층에서 활용되는지 알아보려고 합니다.

MAC 주소란?

MAC 주소는 NIC(랜카드 - 네트워크 어댑터)의 ROM에 부여되어 있는 6-byte 크기의 물리적인 주소를 말합니다.

이미지출처: https://networkencyclopedia.com/mac-address/

MAC 주소는 컴퓨터 뿐 아니라, 라우터, 스위치와 같은 네트워크 장치들 모두에 붙어있고, 이는 장치마다 고유합니다.그래서 네트워크 통신과정에서 실제 네트워크 통신을 하고있는 장치를 식별하는 데 사용되죠.

MAC 주소가 사용되는 곳은 데이터 링크 계층입니다. 데이터 링크 계층에서 어떤 작업이 발생하는지를 쉽게 이해하기 위해, 아래 그림처럼 A 컴퓨터(내 컴퓨터)가 다른 네트워크 상에 존재하는 F 컴퓨터로 데이터를 전송을 시도하는 상황을 가정해봅시다.

L2: 데이터 링크 계층 - NIC, MAC

ARP & MAC 주소

A 컴퓨터에서 네트워크를 통해 외부로 전달하려는 데이터는 응용계층에서 차례로 각 계층 별 프로토콜에 맞는 헤더가 추가됩니다. L3: 네트워크 계층에서 패킷 헤더까지 추가된 상태의 데이터(L3의 데이터 전송 단위는 '패킷(packet)'입니다)가 메모리에 형성됩니다.

데이터 링크 계층에서는 이 패킷에 프레임(Frame)헤더가 추가됩니다.

프레임 헤더에는 발신장치의 MAC 주소와 수신장치의 MAC 주소 정보가 추가됩니다. 하지만 지금으로서는 수신장치의 MAC 주소는 아직 알 수 없습니다. 데이터 전송은 목적지의 IP주소 뿐만 아니라, 목적지의 MAC 주소까지 알아야 가능한데, 어떻게 해야 할까요?

위의 상황에서 A 컴퓨터는 네트워크 상에서 ARP(Address Resolution Protocol-주소결정 프로토콜)을 통해 목적지 MAC 주소를 알아오는 작업을 수행하게 됩니다.

목적지 장치의 IP 주소는 알고 있기에, 목적지 IP 주소로 찾아가, 해당 IP에 연결된 모든 장비에게 Request메시지를 보내어, F 컴퓨터의 MAC 주소를 찾는 과정을 거치게 되죠. 이렇게 목적지의 IP주소를 이용하여 MAC 주소를 찾는 프로토콜이 바로 ARP인 것이고, 이 과정에서 네트워크 상에 전송하는 패킷을 ARP 패킷이라 부릅니다.

이렇게 A 컴퓨터는 L2: 데이터 링크 헤더를 완성했군요.

NIC

네트워크로 전송되는 모든 데이터는 0과 1의 비트스트림으로 변환이 되어서 물리계층 하드웨어인 LAN을 통해 다른 네트워크 장치로 전달이 됩니다.

A 컴퓨터에서 완성한 프레임은 NIC(랜카드)를 통해서 비트스트림으로 변환되어 물리계층으로 전달이 되지요.

스위치

A 컴퓨터에서 물리계층으로 빠져나온 데이터는 스위치를 통해서 적합한 경로로 전달됩니다. 스위치는 비트스트림 형태의 데이터를 읽어들여 프레임 헤더를 읽어들여 앞의 작업을 수행합니다.

F 컴퓨터는 외부 네트워크에 존재하기 때문에, 이 경우에 스위치는 라우터로 데이터의 경로를 바꿔주겠네요.


스위치는 MAC 주소를 기반으로 작동을 합니다. 자신에게 연결된 포트들의 MAC주소 정보를 기록한 MAC 테이블에 기반하여 스위칭을 수행해 주는 것이지요.

L3: 네트워크 계층 / 라우터

비트스트림 형태로 라우터에 도착한 데이터는 데이터 링크 계층에서 프레임 단위로 변환된 다음, 헤더가 제거됩니다 (패킷).

라우터(혹은 라우팅 기능을 갖는 공유기)는 패킷의 헤더를 읽어서 목적지 IP주소를 추출해 냅니다. 그리고 그 주소에 대한 최적의 경로를 지정하며, 이 경로를 따라 데이터 패킷을 다음 장치로 전향시켜줍니다. 이때 최적의 경로는 자체 프로토콜을 통해 결정됩니다.

여러 라우트를 거친 데이터는 결국 목적지 장치에 도달하게 되고, 목적지 장치도 이후에 발신지의 장치와 추가적인 네트워크 통신을 진행할 것입니다.

참조

profile
안녕하세요 개발자 윤승록입니다. 내 성장을 가시적으로 기록하기 위해 블로그를 운영중입니다.

0개의 댓글