본문 바로가기

네트워크/네트워크 좀 더 알아보기-공용

L2주소와 L3 주소 통신(ARP)

흔히 Layer 3의 주소를 IP주소, Layer 2의 주소를 MAC주소 라고 한다.

IP주소는 Internet Protocol에서 쓰이는 주소이며, MAC 주소는 Ethernet, Token-ring 등에서 사용하는 주소이다.

*참고로 MAC 주소는 LAN 구간의 프로토콜에서만 사용되며, HDLC, PPP 등의 WAN 구간 프로토콜에서는 사용되지 않는다.

  HDLC, PPP 둘다 Point-to-point 방식의 연결이기 때문에 서로를 식별할 주소가 필요가 없다.








위와 같은 구간에서 PC1이 PC2와 통신하는 과정이 일어난다고 가정해보자. 어떤 식으로 통신이 일어날 것인가?

여기서는 ARP table에 따라 두가지 경우가 나올 수 있다.

ARP table을 설명하기에 앞서 우선 첫번째 경우인 ARP table에 서로 간에 정보가 있는 경우(ARP가 필요하지 않은 경우)를 봐보자.

PC1은 보낼 데이터를 포장(encapsulation)한다.


출발지 IP는 1.1.1.1

목적지 IP는 2.2.2.1


출발지 MAC address는 PC1 본인의 MAC addr

목적지 MAC address는 게이트웨이의 MAC addr


다음과 같은 헤더로 데이터를 포장한 PC1은 게이트웨이(R1)에게 해당 정보를 보낸다.


게이트웨이는 목적지 MAC 주소가 자신인 것을 확인하고 date의 헤더를 수정한다.

출발지는 동일

목적지 또한 동일


출발지 MAC address는 게이트웨이 본인의 MAC addr

목적지 MAC address는 PC2의 MAC-addr


data를 받은 PC2는 reply data를 다음과 같이 encapsulation 한다.


출발지 IP는 2.2.2.1

목적지 IP는 1.1.1.1


출발지 MAC address는 PC2 본인의 MAC addr

목적지 MAC address는 게이트웨이의 MAC addr


이번 또한 게이트웨이는 목적지 MAC 주소가 자신인 것을 확인하고 date의 헤더를 수정한다.

출발지는 동일

목적지 또한 동일


출발지 MAC address는 게이트웨이 본인의 MAC addr

목적지 MAC address는 PC1의 MAC-addr


MAC-address는 LAN 구간에서 서로를 식별하기위해 사용되며, 따라서 대역이 바뀔때 마다 MAC-addr 또한 바꿔주는 것을 확인할 수 있다.


이제 서로간의 정보가 ARP table에 없는 것을 확인하기 전에 ARP가 무엇인지를 먼저 알아보자.

ARP(Address Resolution Protocol)은 통신을 하는데 있어 매우매우 중요한 프로토콜이라 할 수 있다.

ARP는 L3 정보를 이용하여 L2정보를 알아내 맵핑하는 프로토콜이다.(즉 상대방의 IP주소는 알지만 MAC주소를 모를 떄 사용)

ARP의 동작방식은 크게 ARP Request와 ARP Reply로 나누어진다.


ARP Request는 상대방의 MAC 주소를 찾기 위해 전송된다.

이때 전송 방식은 Broadcast.

예를들어 위에 나온 1.1.1.1이 게이트웨이인 1.1.1.254를 찾을 때를 가정해보자.

ARP Request에는 다음과 같은 내용이 들어있을 것이다.

Source MAC : 0001.0001.0001(본인 MAC 주소)

Source IP     : 1.1.1.1(본인 IP 주소)

Target MAC  : 0000.0000.0000(MAC주소는 찾기 전이므로 모름, 고로 0을 채워준다.)

Target IP      : 1.1.1.254(GW IP 주소)


이때 Destination MAC은 FFFF.FFFF.FFFF(플러딩)

*Target MAC은 ARP data의 내용, Destination MAC은 해당 데이터의 L2 헤더


이 정보를 전달하면 SW1은 자신과 연결된 모든 포트로 해당 정보를 플러딩한다.

R1을 제외한 모든 장비들은 Target IP가 자신이 아닌 것을 확인하고 해당 데이터를 폐기한다.

R1은 해당 데이터를 받으면 ARP Reply를 다음과 같은 형식으로 보낸다. 

이때 전송방식은 unicast.


Source MAC : 0002.0002.0002(R1 본인 MAC 주소)

Source IP     : 1.1.1.254(본인 IP 주소)

Target MAC  : 0001.0001.0001(PC 1 MAC)

Target IP      : 1.1.1.1(PC 1 IP 주소)


이때 Destination의 MAC은 0001.0001.0001

해당 정보를 받으면 PC1은 자신의 ARP table에 해당 정보를 기록한다.

ARP table이란 ARP를 통해 알아낸 정보를 저장하는 table이다.(즉 IP 주소와 맵핑된 MAC 주소)

통신이 가능한 모든 장비(Switch, Router, PC)는 ARP table을 가지고 있다

ex) 1.1.1.1(IP)        0001.0001.0001(MAC)

     1.1.1.254(IP)     0002.0002.0002(MAC)

위의 예시처럼 같이 해당 IP에 대한 MAC 주소를 가지고 있다.



이제 ARP table에 정보가 등록되어있지 않은 경우, PC1과 PC2의 통신 과정을 살펴보겠다.


1. 우선  PC1은 게이트웨이로 자신의 메시지를 전달할 필요가 있다. 그러기위해선 gateway의 MAC 주소를 알아야한다. 고로 다음과 같은 정보를 담     고 있는 ARP Request를 브로드캐스팅한다.


Source MAC : 0001.0001.0001(본인 MAC 주소)

Source IP     : 1.1.1.1(본인 IP 주소)

Target MAC  : 0000.0000.0000(MAC주소는 찾기 전이므로 모름, 고로 0을 채워준다.)

Target IP      : 1.1.1.254(GW IP 주소)


2. 해당 메시지를 받은 게이트 웨이는 ARP Reply를 사용해 본인의 MAC 주소를 다시 PC1에게 전달한다.


Source MAC : 0002.0002.0002(R1 본인 MAC 주소)

Source IP     : 1.1.1.254(본인 IP 주소)

Target MAC  : 0001.0001.0001(PC 1 MAC)

Target IP      : 1.1.1.1(PC 1 IP 주소)


3. 게이트 웨이의 맥주소를 알아낸 PC는 자신의 메시지를 다음과 같은 헤더로 게이트웨이에게 보낸다.


출발지 IP는 1.1.1.1

목적지 IP는 2.2.2.1


출발지 MAC address는 0001.0001.0001(PC1 본인의 MAC addr)

목적지 MAC address는 0002.0002.0002(게이트웨이의 MAC addr)


4. 해당 정보를 받은 게이트웨이는 PC2(2.2.2.1)에게 메시지를 전달해야한다. 그러나 ARP table에 아무런 정보가 없어서 PC2의 MAC 주소를 모른다.
   고로 다음과 같은 양식으로 ARP Request를 먼저 보낸다.


Source MAC : 0003.0003.0003(본인 MAC 주소)    * 0002.0002.0002는 PC1과 연결된 인터페이스의 맥주소, 0003.0003.0003은 PC2 쪽의 맥주소

Source IP     : 2.2.2.254(본인 IP 주소)

Target MAC  : 0000.0000.0000(MAC주소는 찾기 전이므로 모름, 고로 0을 채워준다.)

Target IP      : 2.2.2.1(PC2 주소)


5. 해당 ARP Request를 받은 PC2는 다음과 같은 정보로 ARP Reply를 보낸다.


Source MAC : 0004.0004.0004(PC2 본인 MAC 주소)

Source IP     : 2.2.2.1(본인 IP 주소)

Target MAC  : 0003.0003.0003(게이트웨이 1 MAC)

Target IP      : 2.2.2.254(PC 1 IP 주소)


6. PC2의 MAC 주소를 알아낸 게이트웨이는 PC2에게 다음과 같은 헤더로 메시지를 전달한다.


L3의 출발지는 1.1.1.1

L3의 목적지는 2.2.2.1


L2의 출발지 MAC address는 0003.0003.0003(게이트웨이 본인의 MAC addr)

L2의 목적지 MAC address는 0004.0004.0004(PC2의 MAC-addr)


7. 해당 메시지를 받은 PC2는 다음과 같은 헤더로 Reply를 보낸다. (이땐 이미 ARP 통신으로 서로의 맥주소는 알고 있는 상태이므로 ARP는 사용xxx)


출발지 IP는 2.2.2.1

목적지 IP는 1.1.1.1


출발지 MAC address는 0004.0004.0004(PC2 본인의 MAC addr)

목적지 MAC address는 0003.0003.0003(게이트웨이의 MAC addr)


8. 마지막으로 PC2의 Reply를 받은 게이트웨이는 이것을 다시 PC 1에게 전달하며 통신이 마무리가 된다.(동일한 이유로 ARP 필요xxx)


출발지는 1.1.1.1

목적지는 2.2.2.1


출발지 MAC address는 0002.0002.0002(게이트웨이 본인의 MAC addr)

목적지 MAC address는 0001.0001.0001(PC1의 MAC-addr)