네트워크 (5) | 3계층 프로토콜(ARP)

Jihun Kim·2021년 10월 19일
2

네트워크

목록 보기
5/13
post-thumbnail

ARP가 하는 일

  • ARP 프로토콜은 같은 네트워크 대역에서 통신을 하기 위해 필요한 MAC 주소를 IP 주소를 이용해서 알아노는 프로토콜이다.
    👉 따라서 IP 주소만 입력해도 ARP 프로토콜이 상대방의 MAC 주소를 알아오고, 같은 네트워크 대역에서 MAC 주소를 이용해 통신을 하게 된다.

ARP 프로토콜의 구조

* ARP는 28바이트이다.(이더넷은 14바이트임)
  1. 하드웨어 타입: 2계층에서 사용하는 프로토콜의 타입
    👉 16진수로 0001이 오며 이는 이더넷을 뜻한다(2계층은 거의 이더넷만 온다고 보면 된다.).

  2. 프로토콜 타입: IPv4 프로토콜의 타입인 0800이 온다.

  3. Hardward Address Length: 맥주소를 의미하며 맥주소의 길이 6byte가 온다. 06이 들어간다.

  4. Protocol Address Length: IPv4 길이가 들어가며 4byte이고 04가 들어간다.

  5. Opcode(Operation code): 어떻게 동작하는 지를 나타내는 코드 값인데 2개 밖에 없다.
    👉 ARP 프로토콜은 IP 주소를 입력하면 상대방의 MAC 주소를 알아오는 프로토콜이다. 즉, 요청하고 있는지 응답하고 있는 지를 나타낸다. 따라서, 1로 보내면 상대방은 2로 작성해서 보내게 된다. 그러므로 1은 요청, 2는 응답이 되는 것이다.

  6. 출발지의 MAC 주소: 6바이트
    👉 여기서 주의할 것은, 이더넷만 다른 프로토콜과는 다르게 '목적지의 MAC주소'가 먼저 온다는 것이다. 일반적으로는 출발지의 MAC 주소가 먼저 온다.

  7. Source Protocol Address(IPv4): 4바이트

  8. 목적지의 MAC 주소 : 6바이트

  9. Source Protocol Address(IPv4)(4바이트)


위의 1~4까지는 고정 값이라고 봐도 무방하다.

ARP 프로토콜의 통신과정

  1. ARP 프로토콜은 3계층이기 때문에 상대방의 ip를 이용해 mac주소를 알아오기 위해 헤더에 이더넷을 붙여 encapsulation 해서 보내게 된다.
    👉 구조 : 이더넷 + ARP 요청 = (목적지 mac주소 + 출발지 mac 주소) + (출발지 mac주소 + 출발지 ip주소 + 목적지 mac 주소 + 목적지 ip 주소)
    👉 그런데 이 때 ARP는 목적지 mac 주소를 모르는 상태이기 때문에 이를 00 00 00 00 00 00 으로 비워둔다.
    👉 또한, 이더넷의 경우 목적지 mac주소를 모르기 때문에 비슷하게 ff ff ff ff ff ff로 작성하게 된다. 이는 이진수로 따지면 1로 꽉 채운 것이다. ip주소의 경우 뒷 부분을 전부 1로 꽉 채우면 브로드 캐스트가 되는데, 맥 주소도 전부 1로 꽉 채우면 브로드 캐스트 주소가 되는 것이다.

  2. 그 다음, 2계층 장비가 2계층 까지만 decapsulation을 한 후 브로드 캐스트 맥주소임을 확인하고, 같은 네트워크 대역에 있는 모두에게 "이더넷 + ARP" 패킷을 보내게 된다.
    👉 즉, 해당 프로토콜을 작성한 후 같은 네트워크 대역에 있는 모두에게 보낸다. 왜냐하면 목적지 대상이 어느 것인지 현재는 모르기 때문이다.

  3. 그 다음 이를 받은 모두는 디캡슐레이션을 통해 이더넷 프로토콜을 열어 본다.

  4. 그 다음 3계층도 열어보게 되고 본인의 ip 주소와 목적지 ip 주소가 일치하지 않는 것들은 패킷을 버리고 일치하는 것은 응답 프로토콜을 만들어 주게 된다.

  5. 응답이므로 operation code는 2번이 되고 출발지 맥주소에 자신의 맥 주소를 쓰고 목적지 맥주소를 원래 원래의 노드로 써서 보내주게 된다.
    👉 이 경우 목적지 맥주소를 알고 있기 때문에 이더넷에 브로드캐스트를 할 필요가 없다.
    👉 그러면 이를 다시 받은 노드는 응답 받은 맥주소를 ARP 캐시 테이블에 등록한다.

⚡ 이렇게 맥주소를 알아온 다음에 통신이 시작된다. 즉, 최초의 통신을 하는 경우에는 무조건 한 번 실행이 된 다음 통신이 시작 되는 것이다.




🔑 참고
따라하면서 배우는 IT

profile
쿄쿄

1개의 댓글

comment-user-thumbnail
2022년 2월 7일

정리 되게 잘하셨어요! 잘 봤습니다 :)

답글 달기