[네트워크] ARP 프로토콜

최동혁·2023년 1월 27일
0

컴퓨터 네트워크

목록 보기
12/19

ARP 프로토콜

  • 컴퓨터가 알아서 MAC 주소를 ARP 프로토콜로 알아온다.

  • 총 28바이트이다.
  • Hardware type
    • 하드웨어 물리적인 주소
    • 내가 쓰는 물리적인 주소는 MAC 주소만 있다.
    • 0001로 지정되어 있다.
  • Protocol type
    • 3계층 주소를 무엇을 쓸것이냐?(논리적인 주소)
    • 0800으로 지정되어 있다.
  • Hardware Address Length
    • MAC 주소의 크기는 6바이트이다.
    • 06 지정
  • Protocol Address Length
    • 0000.0000.0000.0000 (IP를 쓴다)
    • 4byte이기 때문에 04 지정
  • Opcode
    • ARP 패킷이 요청(Request) 또는 응답(Reply)에 따라 값이 바뀌게 되고 요청의 경우 1, 응답의 경우 2가 세팅
  • Source Hardware Address
    • 보내는 사람의 MAC 주소
  • Source Protocol Address
    • 보내는 사람의 IP 주소
  • Destination Hardware Address
    • 목적지 MAC 주소
    • 우리가 ARP 프로토콜을 쓰는게 목적지 MAC 주소를 몰라서 쓰는것임.
    • 그래서 일단 모르기 때문에 0으로 채워넣음.
  • Destination Protocol Address
    • 목적지 IP 주소
    • ARP 프로토콜이 이 IP 주소를 가지고 목적지 MAC 주소를 알아냄.

  • a가 c랑 통신하고 싶은데 c의 MAC 주소를 모른다면?
  • a는 c에게 MAC 주소를 물어보기 위해 ARP 프로토콜을 사용한다.

  • 이게 a가 c에 보내는 ARP 요청 구조이다.
  • 보통 00 01 08 00 고정, 06 04 고정
  • 그 이후 00 01은 요청하는 것이기 때문에 0001이다. (opcode)

  • 이더넷 프로토콜이다.
  • FF로 꽉 차있는 것이 브로드캐스트 주소이다.
  • 여기는 목적지 주소가 쓰여있는 곳이다.
  • 이 네트워크 대역에 있는 모두에게 보내는 것이다.

  • 출발지는 aaaa니깐 a 컴퓨터가 전체에게 보낸 것이다.

  • ARP 프로토콜을 사용해서 c의 MAC 주소를 알아내기 위해서!

  • 다시 ARP 프로토콜을 보자.

  • op 코드 이후의 MAC 출발 주소는 a, 그 다음이 a의 ip 주소를 16진수로 써놓은 것이다.
  • 그 이후 목적지 MAC주소는 모르기 때문에 00으로 채워넣은 것이고, 목적지 ip 주소는 16진수로 쓰여있다.
  • 그렇다면 브로드캐스트 주소를 사용하여 모두에게 보냈는데, 받은 컴퓨터들은 ARP 프로토콜을 뜯어서 자신의 ip와 일치하는지 확인한다.

  • c 컴퓨터가 ARP 프로토콜을 뜯어서 자신의 ip와 일치하기 때문에

  • opcode를 2로 바꾸어서 응답을 해주게 된다.
  • 출발을 c MAC 주소를 쓰고, 출발 ip 주소는 c의 ip 주소이다.
  • 목적지는 a MAC 주소, 목적지 ip 주소는 a의 ip 주소이다.

  • 이더넷 프로토콜에도 출발 MAC 주소와 목적지 MAC 주소가 적혀있다.

  • 이렇게 a에게 전달이 되면 c의 MAC 주소는 ARP 캐시 테이블에 저장이 된다.
  • 한번 통신을 하고 나면 c의 MAC 주소가 기억이 되는 것이다.

  • cmd를 켜서 arp -a를 치게 되면 그 동안 통신을 하면서 각 ip 들의 MAC 주소가 쓰여져 있는 것을 볼 수 있다.

주의

  • 만약 ARP 프로토콜을 사용하여 MAC 주소가 저장이 되는데, 게이트웨이 주소와 MAC 주소가 잘못 쓰인 채로 전달이 되어서 캐시 메모리에 잘못 저장이 되었다면?
  • 외부와 통신을 위해서 게이트웨이 주소를 거쳐가야 하는데, MAC 주소 매핑이 잘못 되어 있어서 공유기(게이트웨이 주소)가 아닌, 실제 MAC 주소와 맞는 ip 주소를 가진 컴퓨터에게 모든 요청 정보가 날라간다.
  • 이게 ARP 스푸핑이라고 부른다.
  • 막기 위해서는 동적으로 저장되는 MAC 주소를 수동으로... ㅎ
  • 어차피 직접 세팅할 일 없음.

실습

  • arp -d 를 arp 테이블에 저장되어 있는 MAC 주소를 전부 지운다.
  • 확인해보면 게이트웨이 주소를 제외한 나머지 통신했던 ip 주소들의 MAC 주소가 없는것을 확인 할 수 있다.

  • ping으로 통신을 하면 MAC 주소가 저장된 것을 확인할 수 있다.

  • wireshark를 통해서 보면 MAC 주소가 날라갔기 때문에 broadcast 통신으로 192.168.163.129를 가진 애가 누구냐고 통신을 날린다.
  • arp를 뜯어보면 위의 그림과 같이 목적지 MAC 주소는 0으로 채워져 있다.
  • 왜냐면 테이블이 초기화 되서 모르기 때문이다.
  • 그렇다면 해당 ip 주소를 가진 컴퓨터가 다시 대답을 보내면서 MAC 주소를 채워주고 테이블에 저장이 되는 것이다.
profile
항상 성장하는 개발자 최동혁입니다.

0개의 댓글