파게로그

MAC Address와 ARP 본문

콤퓨타 왕왕기초/Network

MAC Address와 ARP

파게 2020. 12. 21. 16:54

인터넷의 프로토콜은 TCP/IP이므로 IP 주소만 사용하지 않을까 싶은데, 이 경우에도 ARP(Address Resolution Protocol)라는, IP 주소를 MAC 주소로 변환하는 절차를 밟아 실제로는 MAC 주소가 사용된다.

 

 

MAC(Media Access Control) Address

네트워크에 사용되는 모든 기기의 고유 번호. 48bit(6octet, octet=8bit) 랜카드뿐만 아니라 그것을 포함하는 서버도, 그리고 라우터, 스위치 등 모든 기기가 MAC 주소를 가진다. 8자리마다 하이픈, 콜론, 온점을 통해 구분한다.

// 0000 0000.0110 0000.1001 0111.1000 1111.0100 1111.1000 0110 MAC 주소의 표현
00-60-97-8F-4F-86
00:60:97:8F:4F:86
0060.978F.4F86

앞쪽 6개: OUI(Organizational Unique Identifier). 벤더(생산자)를 나타냄

뒤쪽 6개: Host Identifier. 메이커에서 각 장비에 분배함(Serial Number의 개념)

 

 

ARP(Address Resolution Protocol)

(우투더공고님의 설명)

"IP주소가 L3인데, 이걸로 L2에있는 네트워크카드의 MAC주소를 모르기에 통신이 불가해서, ARP를 통해 IP에 해당하는 MAC주소를 알아내는 과정"(참고: https://blog.naver.com/bizblocklll/222152306690. L3니 L2니 할 때의 숫자는 OSI 7 레이어와 일치한다.)

 

(책의 설명)

ARP 요청과 응답

 

한 네트워크 내에서(라우터X) PC Y -> PC Z 통신 시도 상황

1. PC Y가 브로드캐스트를 통해 네트워크 내 모든 PC에 메시지를 보내, (IP 주소를 이용해서 PC Z를 목표로 하고) PC Z에게 PC Z의 MAC 주소를 묻는다.(ARP Request)

2. PC Z는 PC Y에게 자신의 MAC 주소를 알려준다.(ARP Reply)

3. 통신을 시작한다.

 

호스트 Z가 다른 네트워크에 있는 경우 PC Y -> PC Z 통신 시도 상황 (위 예시 상황)

1. PC Y가 브로드캐스트를 통해 네트워크 내 모든 PC에 메시지를 보내, (IP 주소를 이용해서 PC Z를 목표로 하고) PC Z에게 PC Z의 MAC 주소를 묻는다.(ARP Request)

2. 라우터가 PC Z의 주소를 보고 네트워크 외부의 컴퓨터라는 것을 확인한 후 PC Y에게 라우터 자신의 MAC 주소를 전달한다. 이 때부터 PC Y는 PC Z에게 무언가를 보내고자 할 때 라우터에게 보낸다.

PC Y가 PC Z에게 정보를 보낼 때, 받는 쪽은 라우터의 MAC 주소이고, 라우터는 이 정보를 PC Z가 존재하는 해당 네트워크로 넘겨준다. 그럼 해당 네트워크의 라우터는 자신의 네트워크 내부에 있는 PC Z의 MAC 주소를 찾고, 그 주소를 이용해서 전달하게 된다.


https://www.youtube.com/watch?v=EC1slXCT3bg

 

S: Source

T: Target

R: Gateway Router

IP(A): IP Address of A

EA(A): Ethernet Address of A

 

Source와 Target은 network switch를 거쳐 Ethernet Cable로 연결되어 있다.
Source가 Target에게 데이터를 전송하기 위해서는, EA(T)를 알아야 하지만, IP(T)만 알고 있다.
여기서 ARP를 통해서 EA(T)를 획득할 수 있다.

예시)
우리가 컴퓨터를 LAN에 Ethernet cable이나 WIFI를 통해 연결하면, DHCP는 컴퓨터에 IP Address를 할당한다. (컴퓨터-(Ethernet cable)-Network Switch-Network Router-DNS Server) 또한 IP(R)과 IP(DNS)를 제공한다.

우리가 웹 브라우저에 www.sth.com과 같은 주소를 입력하면, 이 때 브라우저는 이러한 URL이 의미하는 바를 알지 못한다. 이는 브라우저가 이해할 수 있는 IP Address로 변환되어야 하며, DNS Server가 그러한 역할을 해 준다. 이러한 변환을 위해서 컴퓨터의 운영체제는 DNS query message를 생성한다.

DNS Query Packet
Header
Question Section
www.sth.com

UDP Segment
Source Port Dest. Port DNS Query Packet
61134* 53

*random UDP port number opened by TCP/IP protocol stack on DNS Client

IP Datagram
Source IP (내 컴퓨터) Dest. IP (DNS Server) UDP Segment
IP(S) IP(DNS)

Ethernet Frame
Source MAC Dest. MAC IP Datagram FCS
(Frame Check Sequence)
EA(S) EA(R) = ?

 

이 Ethernet Frame은 처음에 Gateway Router로 먼저 전송되어야 한다. 그러기 위해서는, EA(R)이 필요하다. 하지만 DHCP는 오직 IP(R)만 제공하며, EA(R)은 제공하지 않는다. 이러한 상황(Sender: 컴퓨터, Target: Gateway Router)에서 EA(R)을 획득하기 위해 ARP가 필요하다.

 

ARP는 다음과 같은 ARP Request Packet을 생성한다.

 

Hardware Type*
1
Protocol Type**
0x0800
Hardware length***
6
Protocol length****
4
Operation*****
1
Sender Hardware Address
EA(S) = 12:34:5E:FF:A3:67
Sender Protocol Address
IP(S)
Target Hardware Address
EA(R) = 00:00:00:00:00:00 = unknown
Target Protocol Address
IP(R)

* the type of physical network on which ARP is running (Ethernet -> 1)

** the protocol that is being resolved (IPv4 -> 0x0800)

*** the length of the physical address in bytes (Ethernet -> 6 (MAC 주소 길이))

**** the length of the logical address in bytes (Ethernet -> 4 (IP 주소 길이))

***** whether the ARP packet is a request or reply (request -> 1, reply -> 2)

 

이 ARP Request Packet은 Ethernet Frame에 encapsulate되고, 이 Ethernet Frame이 담고 있는 데이터는 ARP Request Packet이므로, type은 ARP인 경우에 배당된 0x0806이다.

 

Ethernet Frame
Source MAC Dest. MAC Type Data FCS
EA(S) FF:FF:FF:FF:FF:FF
= Ethernet broadcast address because EA(R) is unknown
0x0806 ARP Request Packet

 

이 Ethernet Frame은 컴퓨터의 physical layer에 의해 전송된다. Network Switch는 이 프레임을 받아 목적지 하드웨어 주소를 확인한다. 이는 broadcast address이므로 Network Switch는 이 프레임을 모든 포트로 보낸다. 라우터 범위 내의 모든 연결된 컴퓨터는 이 프레임을 받는다. 각 장치의 Ethernet driver가 'Type' 필드를 확인하고 ARP Request Packet을 ARP module로 보내는데, 이는 Target protocol address를 검토하고, 만약 IP Address가 일치한다면, 장치는 ARP reply packet을 보낸다. 그렇지 않다면 장치는 ARP request packet을 버린다.

이 경우에는, Gateway Router가 ARP Reply Packet을 보낸다.

 

Hardware Type*
1
Protocol Type**
0x0800
Hardware length***
6
Protocol length****
4
Operation*****
2
Sender Hardware Address
EA(R)
Sender Protocol Address
IP(R)
Target Hardware Address
EA(S)
Target Protocol Address
IP(S)

 

ARP Reply Packet은 Ethernet Frame에 encapsulate된다.

 

Ethernet Frame
Source MAC Dest. MAC Type Data FCS
EA(R) EA(S) 0x0806 ARP Reply Packet

 

컴퓨터는 Ethernet Frame을 수신하고, 컴퓨터의 Ethernet driver는 'Type' 필드를 확인한 후 ARP Reply Packet을 ARP 모듈로 보낸다. ARP module은 ARP Reply Packet을 확인하고 Sender protocol address와 Sender hardware address를 컴퓨터의 ARP table에 추가한다. 이 두 주소가 바로 Gateway Router의 주소이다.

이제 IP(R)뿐만 아니라 EA(R)도 제공받았으므로, 컴퓨터는 IP(R)을 EA(R)로 변환하기 위해 ARP table을 사용할 수 있고, 아까 큐에 남아있던 Ethernet Frame의 Dest. MAC의 빈 자리를  EA(R)로 채울 수 있게 된다.

최종적으로, DNS query message를 담고 있는 Ethernet frame은 Gateway Router로 전송될 수 있다. Gateway Router는 DNS query message를 routing table을 이용해 DNS 서버로 전달한다. 

 

중요한 점

- ARP request는 broadcast이지만 ARP reply는 unicast이다.

- ARP는 subnet 내에서 작동한다.

- request packet 내 target protocol address는 필수적이다. 호스트가 reply를 할지 안할지 결정하기 때문이다.

- sender hardware address와 sender protocal address는 필수적이다. ARP table에서 그것들이 갱신될 것이기 때문이다.

'콤퓨타 왕왕기초 > Network' 카테고리의 다른 글

OSI 7 Layer  (0) 2020.12.27
UTP 케이블  (0) 2020.12.26
cast. 통신 방식  (0) 2020.12.21
기본적인 용어의 정리  (0) 2020.12.21
큰 그림  (0) 2020.10.15
Comments