본문 바로가기
Network

[Network] ARP 동작 방식

by 치즈잼 2024. 7. 3.
728x90
L2 스위치에서의 ARP 동작방식에 대해 정리해 보았습니다.

이론정리

  • ARP (Address Resoultion Protocol) : 소프트웨어적으로 할당된 논리 주소인 IP 주소(L3, 네트워크 계층)를 실제적인 물리 주소인 MAC 주소(Media Access Control /L2, 데이터링크 계층)로 바꾸어주는 역할을 하는 '주소 해석 프로토콜'을 의미

 

  • 스위치 동작 방식

1. 플러딩(Flooding)

스위치가 처음 부팅되면 MAC 주소 테이블이 비어있기 때문에, 들어오는 모든 패킷을 모든 포트로 전송하는 플러딩 동작을 합니다.

 

2. 어드레스 러닝(Address Learning)

스위치는 들어오는 패킷의 출발지 MAC 주소를 관찰하여 MAC 주소 테이블을 구축합니다.이를 통해 어떤 장치가 어느 포트에 연결되어 있는지 학습할 수 있습니다.

 

3. 포워딩/필터링(Forwarding/Filtering)

스위치는 MAC 주소 테이블을 참조하여 패킷을 목적지 포트로만 전송하는 포워딩을 수행합니다. 불필요한 포트로의 전송은 필터링하여 네트워크 효율을 높입니다.

 

4. 에이징(Aging)

스위치는 MAC 주소 테이블에 일정 시간 동안 사용되지 않는 엔트리를 삭제하는 에이징 기능을 수행합니다. 이를 통해 MAC 주소 테이블을 최신 상태로 유지할 수 있습니다.

 

💡 Cisco Switch 기준 Mac Table aging 시간 300초

💡 Cisco Router 기준 ARP Table aging 시간 4시간 (240분)

💡 Window PC 기준 ARP Table aging 시간 2분 (120초)

 

  • 프레임 전송 방식
  1. 유니캐스트(Unicast) : 1 대 1(특정 단일)
  2. 브로드캐스트(Broadcast) : 1 대 다수(불특정 다수)
  3. 멀티캐스트(Multicast) : 1 대 다수(특정 집단)

MAC 주소 테이블(MAC Address Table)

스위치 내부에 존재하는 데이터베이스로, 스위치의 각 포트와 연결된 장치의 MAC 주소를 저장합니다.스위치는 이 테이블을 참조하여 패킷을 목적지 포트로만 전송할 수 있습니다.스위치는 새로운 MAC 주소를 학습하면 이 테이블에 추가하고, 일정 시간 동안 사용되지 않는 엔트리는 삭제합니다(에이징).MAC 주소 테이블을 통해 스위치는 효율적인 패킷 전송이 가능합니다.

 

ARP 테이블(ARP Cache Table)

ARP(Address Resolution Protocol)는 IP 주소를 MAC 주소로 변환하는 프로토콜입니다.ARP 테이블은 IP 주소와 MAC 주소의 대응 관계를 저장하는 운영체제의 캐시 테이블입니다.호스트는 ARP 테이블을 참조하여 목적지 IP 주소에 해당하는 MAC 주소를 찾아 통신할 수 있습니다.ARP 테이블이 비어있는 경우, 호스트는 ARP 요청 메시지를 브로드캐스트하여 MAC 주소를 학습합니다.

즉, MAC 주소 테이블은 스위치가 MAC 주소 기반으로 패킷을 전송하는 데 사용되며, ARP 테이블은 호스트가 IP 주소를 MAC 주소로 변환하는 데 사용됩니다.

네트워크 통신을 위해서는 MAC과 IP가 있어야 통신을 할 수 있습니다.

 

GARP(Generic Attribute Registration Protocol) : 네트워크 상에서 장치들이 자신의 속성 정보를 알리고 공유하기 위해 사용하는 프로토콜

  1. 장치 속성 등록:장치가 네트워크에 연결될 때 자신의 속성 정보(IP 주소, MAC 주소, 지원 기능 등)를 GARP를 통해 알립니다.
  2. 속성 정보 공유:장치들은 GARP를 통해 서로의 속성 정보를 학습하고 공유합니다.이를 통해 장치들은 서로의 존재와 기능을 인지할 수 있습니다.
  3. 자동 구성 지원:GARP 정보를 활용하여 네트워크 장치들의 자동 구성이 가능합니다.예를 들어 VLAN 설정, 포트 보안 등에 GARP 정보가 활용될 수 있습니다.

GARP는 주로 이더넷 기반 네트워크에서 사용되며, 스위치와 라우터 등의 네트워크 장비에서 지원됩니다. GARP를 통해 네트워크 장치들은 서로의 존재와 기능을 인지하고 자동으로 구성될 수 있어 네트워크 관리를 효율화할 수 있습니다.

 

- ARP 패킷 구조

Source Hardware Address : 출발지의 MAC Address

Source Protocol Address : 출발지의 IP Address

Destination Hardware Address : 목적지의 MAC Address

Destination Protocol Address : 목적지의 IP Address

 

 

 

실습 [기본적인 ARP 동작 실습, GARP는 제외]

위와 같이 스위치와 PC를 연결했을때는 스위치가 자동으로 PC의 MAC을 받아오지 못합니다.

PC간의 통신이 이루어져야 스위치에 MAC Table이 갱신이 됩니다.

연결 초기에는 PC의 ARP Table과 스위치의 MAC Table이 모두 비어있는 상태입니다.

 

PC0에서 PC2로 ARP Request를 보냅니다.

PC0에서는 MAC을 담은 Frame과 IP를 담은 Packet을 만들어서 자신의 포트에 연결된 곳에 Broadcast로 전달합니다. [프레임과 패킷을 합쳐서 간략하게 패킷으로 표시 ]

 

Source Mac에 PC0 자신의 맥인 AAAA.AAAA.AAAA를 담고 상대 PC2의 맥은 모르기 때문에 브로드캐스트인 FFFF.FFFF.FFFF를 담습니다. [이를 Flooding이라고 합니다.]

Source IP에는 자신의 IP인 10.10.10.10, Destination IP에는 PC2의 IP인 10.10.10.20를 담아 보내게됩니다.

 

패킷이 스위치로 가게되면 스위치는 자신의 포트 Fa0/1로 PC0의 맥인 AAAA.AAAA.AAAA가 들어온 것을 알게되고 이를 스위치의 MAC Table에 저장하게 됩니다. [이를 Learning 이라고 합니다.]

스위치에서도 아직 PC2의 맥을 모르기때문에 패킷이 온 포트를 제외한 자신의 포트에 연결된 모든 곳에 브로드캐스트로 해당 패킷을 전달하게 됩니다.

 

PC1으로 간 패킷을 PC1이 분석을 합니다. DIP와 자신의 IP가 맞지 않은 것을 확인한 후 해당 패킷을 드롭시킵니다. [해당 패킷 내용을 ARP Table에 저장하지 않습니다.]

PC2에서는 패킷의 DIP와 자신의 IP가 일치하는 것을 확인 후 패킷의 SMAC와 SIP를 자신의 ARP Table에 저장합니다.

 

PC2는 해당 ARP Request 에 응답하기 위해 자신의 MAC과 IP, 그리고 요청했던 PC의 MAC과 IP를 담아 유니캐스트로 응답을 하게 됩니다. [이를 Forwarding 이라고 합니다.] [ARP Reply]

 

PC2는 Fa0 인터페이스 쪽에 PC0의 MAC과 IP가 있다는 것을 자신의 ARP Table에서 확인 후 해당 인터페이스로 패킷을 보냅니다.

스위치는 해당 패킷을 보고 자신의 MAC Table에 PC2의 정보를 저장합니다.

 

스위치는 PC0이 자신의 Fa0/1 인터페이스 쪽에 있다는 것을 확인 후 브로드캐스트가 아닌 해당 인터페이스로 패킷을 보냅니다.

PC1 쪽으로는 보낼 필요가 없으므로 해당 포트에는 패킷을 전송하지 않습니다. [이를 Filtering 이라고 합니다.]

PC0은 ARP Reply를 받고 해당 패킷을 통해 PC2의 MAC과 IP를 자신의 ARP Table에 저장합니다.

이를 통해서 스위치와 PC는 각자 MAC Table과 ARP Table을 저장하게 됩니다.

 

실습 2 [ 여러개의 스위치가 연결되어 있을 때, GARP 제외]

다음은 여러개의 스위치가 연결된 상태입니다.

 

스위치 간 포트가 연결 되었을 시 Hello Packet을 보내 STP, LLDP 등의 정보를 주고받으면서 MAC 정보를 습득하게 됩니다.

스위치의 인접한 인터페이스의 맥을 서로 주고 받아 MAC Table에 저장하게 됩니다.

 

PC0에서 PC1에 ARP Request 요청을 보냅니다.

 

PC0에서 SW1로 가면 SW1은 PC0의 정보를 Fa0/1에서 받은 것을 MAC Table에 저장합니다.

스위치에서도 목적지의 맥을 모르기때문에 패킷이 온 포트를 제외한 자신의 포트에 연결된 모든 곳에 브로드캐스트로 해당 패킷을 전달하게 됩니다.

 

SW2로 패킷이 넘어가면 SW2의 맥 테이블에도 PC0의 정보를 저장합니다.

SW2도 목적지 맥을 모르기 때문에 패킷이 온 포트를 제외한 자신의 포트에 연결된 모든 곳에 브로드캐스트로 해당 패킷을 전달하게 됩니다.

 

아래의 PC2에서는 패킷에 목적지 IP가 자신과 다른 것을 확인한 후 해당 패킷을 드롭 합니다.

본인의 ARP Table에는 맥 정보를 저장하지 않습니다.

SW3은 자신의 맥테이블에 PC0의 정보를 저장합니다.

SW3도 목적지 맥을 모르기 때문에 패킷이 온 포트를 제외한 자신의 포트에 연결된 모든 곳에 브로드캐스트로 해당 패킷을 전달하게 됩니다.

 

PC1은 패킷의 목적지 IP가 자신인 것을 확인 후 해당 정보를 ARP Table에 저장합니다.

 

PC1는 해당 ARP Request 에 응답하기 위해 자신의 MAC과 IP, 그리고 요청했던 PC의 MAC과 IP를 담아 유니캐스트로 응답을 하게 됩니다.

 

SW3은 PC1의 Reply를 받고 자신의 MAC Table에 저장합니다.

그리고 PC0의 맥 정보가 MAC Table이 있으므로 해당 포트로 유니캐스트를 던집니다.

 

SW2은 PC1의 Reply를 받고 자신의 MAC Table에 저장합니다.

그리고 PC0의 맥 정보가 MAC Table이 있으므로 해당 포트로 유니캐스트를 던집니다.

PC2로는 해당 패킷을 던지지 않습니다. [ Filtering]

 

SW1은 PC1의 Reply를 받고 자신의 MAC Table에 저장합니다.

그리고 PC0의 맥 정보가 MAC Table이 있으므로 해당 포트로 유니캐스트를 던집니다.

 

PC0는 ARP Reply를 받고 PC1의 정보를 자신의 ARP Table에 저장합니다.

이렇게 해서 PC0과 PC1과의 ARP 동작이 끝나게 됩니다.

 

해당 내용은 ARP의 기본적인 동작방식에 대해 정리하기 위한 내용이며 모든 장비들이 정보 교환하는 GARP 등의 내용은 제외하였습니다.

 

다음 내용으로는 라우터가 포함된 상태에서의 ARP 동작에 대해 정리해 보겠습니다.

728x90