본 포스팅은 네트워크 스터디를 기반으로 개인 정리를 위한 포스팅입니다.
잘못된 부분이 있다면 언제든 지적해주시면 감사하겠습니다!
APR 프로토콜
ARP 프로토콜은 같은 네트워크 대역에서 통신을 하기위해 필요한 MAC주소를 IP주소를 이용해서 알아오는 프로토콜
IP 주소는 단순히 L3에서 단대단 연결을 위한 주소이고 실질적인 데이터 이동은 MAC 주소를 사용하는 L2단을 거쳐야 한다.
여기서 IP 주소와 MAC 주소를 이어 주는 역할을 하는 프로토콜이 바로 ARP
같은 네트워크 대역에서 통신을 한다고 하더라도 데이터를 보내기 위해서는 7계층부터 캡슐화를 통해 데이터를 보내기 때문에 IP주소와 MAC주소가 모두 필요함
이 때 IP주소는 알고 MAC주소는 모르더라도 ARP를 통해 통신이 가능
ARP가 중요하게 여겨지는 추가적인 이유는 보안 이슈가 존재
예를 들어 ARP spoofing 공격이 있는데 이는 해킹 중 중간자 공격기법 중 하나임
여기서 공격자가 자신이 게이트웨이(공유기)라고 허위로 적은 ARP 패킷을 뿌리면 해당 네트워크 내에 있는 다른 사용자들은 공격자를 게이트웨이로 인식하게 됨
이리하여 모든 피해자는 공격자에게 모든 패킷을 전송하게 되며, 공격자는 이를 적절히 원래 게이트웨이로 중계해주기만 하면 되기에 비교적 간단한 공격에 속함.
ARP 헤더 구조
총 28Byte로 Ethernet 프로토콜(20Byte)보다 많은 구조를 가짐
Source Hadware Adress : 출발지 MAC주소
Source Protocol Adress : 출발지의 IP 주소
Destination Hadware Adress : 목적지 MAC주소
Destination Protocol Adress : 목적지 IP주소
Ethernet의 경우에는 특이하게 목적지의 정보가 먼저 오고 나머지 프로토콜은 출발지가 먼저 옴
Hardware type : 2계층에서 사용하는 프로토콜의 타입을 의미 (간단하게 Ethernet을 뜻하는 고유값(0001)이 온다고 생각)
Protocol type : IPv4 프로토콜의 타입인 0800값이 오는 공간
Hardware Address Lengh : MAC주소의 길이 (06)
Protocol Address Length : IPv4의 길이 (04)
Opcode : Operation code로써 어떻게 동작하는지 나타내는 코드값, IP를 통해 MAC주소를 요청하는지, 요청에 대한 응답인지를 나타내는 플래그값 (1 or 2로 표현)
위 구조 중 Opcode를 제외한 나머지는 고정값이라고 생각하면 됨.
ARP프로토콜 통신 과정
상대방의 MAC주소를 알아오기 위한 과정
상대방의 MAC주소를 모르는데 어떻게 상대방에게 ARP 요청을 보내는가에 대해서는
목적지 MAC주소를 0으로 비워놓고, C의 IP주소는 알고있기에 작성해서 요청을 보냄.
Ethernet을 통해 캡슐화를 진행할 때도 상대방의 MAC주소를 F로 가득 채워 초기화
F로 초기화되어있는 MAC주소는 브로드캐스트를 의미 : 같은 네트워크 대역의 모든 장치에 요청
네트워크 중간에 있는 2계층 장비인 Switch는 Ethernet 프로토콜의 목적지 MAC주소(F로 초기화 된 값)를 통해 브로드캐스트인걸 확인하고 모든 장치에 해당 ARP요청을 전송
각 장치들은 받은 Ethernet 프로토콜을 역캡슐화를 통해 3계층 ARP 프로토콜의 정보를 열어봄.
ARP 프로토콜의 Destination Protocol Adress를 요청받은 장치의 IP주소와 대조하여 틀리면 프로토콜을 버리고, 같다면 ARP응답 프로토콜을 만들어 전송
최종적으로 응답을 받은 장치는 받은 MAC주소를 ARP 캐시 테이블에 기록
어떤 통신을 하던 간 위와 같은 ARP 프로토콜 통신과정이 거치고 난 후 통신이 시작됨.
실습
CMD -> arp -a 명령어를 통해 ARP 캐시테이블을 확인할 수 있음.
위 테이블의 값은 휘발성이므로 일정시간이 지난 후 삭제됨
영구적으로 등록하기 위한 방법이 추가로 존재하긴 함.
Reference
[따라學IT] 05. 통신하기 전 반드시 필요한 ARP 프로토콜 - 이론 (youtube.com)
https://namu.wiki/w/ARP%20%EC%8A%A4%ED%91%B8%ED%95%91
'CS > 네트워크' 카테고리의 다른 글
[네트워크] 4계층 - TCP, UDP 프로토콜 (1) | 2024.01.02 |
---|---|
[네트워크] 3계층 - IPv4 프로토콜, ICMP 프로토콜 (0) | 2024.01.02 |
[네트워크] 2계층 - 이더넷 프로토콜(Ethernet Protocol) (1) | 2023.12.18 |
[네트워크] 웹 서비스 구조(Web Service Structure) (0) | 2023.12.14 |
[네트워크] Web 개요 (0) | 2023.12.14 |
개발 기술 블로그, Dev
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!