-
ARP 프로토콜이란?CS/네트워크 2022. 7. 17. 00:01728x90
ARP 프로토콜이란?
같은 네트워크 대역에서 통신을 하기 위한 필요한 MAC 주소를 IP주소를 이용하여 알아오는 프로토콜입니다.
보통 우리가 www.google.com을 검색하게 되면 해당 도메인 주소가 DNS 서버에 의해 IP주소로 변환됩니다.
즉, 우리는 IP주소만 알고 있으며 MAC 주소는 알지 못합니다.
하지만 데이터를 보내기 위해서는 계층별로 캡슐화가 필요하며 이때 IP주소와 MAC 주소가 모두 필요하게 됩니다.
이때 ARP를 통해 MAC주소를 알게 됩니다.
2계층과 3계층 사이에서 동작하는 프로토콜입니다.
ARP 프로토콜이 필요한 이유는?
왜 IP -> MAC 주소의 절차를 거쳐서 통신해야 할까요?
IP를 활용하면 메시지를 보내고자 하는 PC의 네트워크까지만 접근할 수 있습니다.
또한 IP주소는 가변적이기 때문에 계속 바뀔 수도 있습니다.
따라서 주민등록번호와 같은 랜카드 공유 번호인 MAC 주소가 필요합니다.
반대로 MAC 주소만으로 통신할 수 없는 이유는?
MAC 주소는 기기별로 고유한 번호를 가지지만 통신을 위해 라우터의 모든 PC의 MAC 주소를 다 등록해야 합니다.
이때 저장공간이 버텨내지 못하기 때문에 여러 대의 PC를 묶어 IP주소를 만들고 MAC 주소를 거치는 ARP가 탄생하게 되었습니다.
ARP 프로토콜의 구조
총 28바이트로 구성되어 있습니다.
Hardware Type : 2 계층에서 사용하는 프로토콜의 타입(가장 많이 볼 프로토콜은 이더넷 프로토콜 = 0 0 0 1)
Protocol type : IPv4와 같은 IP 주소 프로토콜 타입 (가장 많이 볼 프로토콜은 IPv4 = 0 8 0 0)
Hardware Address Length : MAC의 주소의 길이는 6바이트(0 6)
Protocol Addres Length : IP주소의 길이는 4바이트(0 4)
Opcode : 어떻게 동작하는지 나타나는 코드로 2가지만 존재함, 현재 요청하는지 요청에 대한 응답을 하는지 나타냄
Source Hardware Address : 출발지의 MAC 주소를 쓰는 6바이트
Source Protocol Address : 출발지의 IP주소 4바이트
Destination Hardware Address : 목적지의 MAC 주소를 쓰는 6바이트
Destination Protocol Address : 출발지의 IP주소 4바이트
ARP 프로토콜의 통신 과정
다음과 같은 LAN 네트워크가 구성되어 있다고 가정하겠습니다.
이때 A컴퓨터가 IP주소를 192.168.0.30인 C 컴퓨터의 MAC 주소를 알아오는 과정을 살펴보겠습니다.
A는 현재 C컴퓨터의 IP주소밖에 모릅니다.
1. A컴퓨터가 ARP 요청 프로토콜을 생성합니다. 하지만 이더넷 프로토콜에는 목적지의 MAC 주소가 들어가야 합니다.
자신의 MAC 주소 : aa aa aa aa aa aa
자신의 IP 주소 : c8 a8 00 0a
상대방의 MAC 주소 : 00 00 00 00 00 00(모르기 때문에 0으로 채워놓음)
상대방의 IP 주소 : c0 a8 00 le
이때 이더넷 프로토콜은 다음과 같습니다
목적지의 MAC 주소를 모르기 때문에 FF FF FF FF FF FF로 채워놓습니다.
이는 브로드캐스트 하겠다는 주소를 의미합니다.
브로드캐스트란 같은 네트워크 대역에 있는 모든 컴퓨터에게 요청을 보냅니다.
2. 스위치가 이더넷 프로토콜을 확인하고 목적지 MAC 주소를 확인하고 보냅니다.
이때 목적지 MAC 주소가 브로드캐스트를 의미하기 때문에 같은 네트워크에 있는 모든 컴퓨터에게 요청을 보냅니다.
3. 각 컴퓨터가 이더넷 프로토콜과 ARP 프로토콜을 확인합니다.
이때 목적지 IP주소가 본인의 IP주소와 일치한다면 ARP 응답 프로토콜을 생성하여 A컴퓨터에게 전송합니다.
C 컴퓨터는 이제 A컴퓨터의 IP주소와 MAC 주소를 알고 있습니다.
4. A는 이제 C의 MAC주소를 알게 되고 ARP 캐시 테이블에 이를 등록합니다.
5. 이후에 캐시 테이블을 참조하여 통신이 시작됩니다.
출처
https://www.youtube.com/watch?v=LDsp-Xb168E&t=5s
https://coding-factory.tistory.com/720
'CS > 네트워크' 카테고리의 다른 글
세션 하이재킹과 TCP Sequence Number (0) 2022.07.28 ICMP 프로토콜이란? (0) 2022.07.22 공인 IP와 사설 IP (0) 2022.07.15 HTTP 1.1 , HTTP 2.0, HTTP 3.0 정리 (0) 2022.05.30 Reliable UDP(RUDP)란 무엇인가? (0) 2022.05.28