홍카나의 공부방

[컴퓨터 네트워크] 8. ARP Protocol과 Python으로 요청 보내기 본문

Computer Network

[컴퓨터 네트워크] 8. ARP Protocol과 Python으로 요청 보내기

홍문관카페나무 2023. 1. 27. 15:47

ARP 프로토콜은 네트워크 계층의 프로토콜이다.

IP에서 라우팅 테이블을 참조하여 패킷을 보내야하는 논리주소를 리턴하면

ARP는 이 논리주소에 해당하는 호스트의 물리주소를 매핑하는 역할을 한다.

네트워크의 장치가 다른 장치와 통신해야 하는 경우, 올바른 장치로 전송하려면 대상 장치의 MAC 주소를 알아야 하기 때문이다.

 

ARP는 요청과 응답으로 패킷의 유형이 나뉜다.

ARP 요청은 보통 broadcast 방식으로 전달이 되며,

같은 물리네트워크에 연결되어 있는 호스트에게 모두 전송이 된다.

( 대상 호스트의 논리 주소를 알고 있다면 1:1 방식인 Unicast 방식으로 전송해도 무방함. )

 

네트워크의 브로드캐스트 주소로 ARP 요청을 보내면

네트워크의 모든 장치가 요청을 수신하고 해당 IP 및 MAC 주소로 응답한다.

이를 ARP "프로브" 또는 "스위프"라고 한다.

 

ARP 응답은 ARP 요청을 받은 Destination 호스트가

MAC주소를 Source host로 보내는 유니캐스트 방식(1:1) 전송이다.


브로드캐스트 방식으로 ARP 요청을 뿌리는 것은

네트워크 검색, 문제 해결 및 보안 감사에서 일반적으로 사용된다.

 

파이썬 예제 코드는 다음과 같다.

 

# for Windows and Linux:
import os

def send_arp_request():
    os.system("arp -a")

send_arp_request()


# for MacOS:
import subprocess

def send_arp_request():
    output = subprocess.run(["arp", "-a"], capture_output=True, text=True)
    print(output.stdout)

send_arp_request()

 


 

ARP를 이용한 네트워크 공격(ARP Spoofing 등..)도 있는데, 관심이 있다면 아래의 유튜브를 참고하며 공부하면 좋다.

(꼭 본인 소유의 공유기, 컴퓨터, 스마트폰을 이용해야 한다!)

https://youtu.be/xHDihS87ND4

 

 

반응형