ARP프로토콜
ARP가 하는일
ARP프로토콜은 같은 네트워크 대역에서 통신을 하기위해 필요한 MAC주소를 IP주소를 이용해서 알아오는 프로토콜이다.
같은 네트워크 대역에서 통신을 한다고 해도 데이터를 보내기 위해서는 7계층부터 캡슐화를 통해 데이터를 보내기 때문에 IP주소와 MAC주소가 모두 필요하다. 이 때 IP주소는 알고 MAC주소는 모르더라도 ARP를 통해 통신이 가능하다.
Hardware type : 이더넷만 오기 때문에 16진수로 0001이온다
Protocol type : IPv4만 오기때문에 16진수로 0800이온다
Hardware Address Length : MAC주소 6바이트기때문에 06
Protocol Address Length : IP주소 4바이트이므로 04
Opcode는 물어볼때는 0001 응답할때는 0002이다
A가 C컴퓨터에 통신을 하려고 IP밖에 모르는 상태일 때 어떻게 통신을 할까
A컴퓨터가 상대방에게 ARP요청을 한다 이걸 보낼 때 인캡슐레이션해서 보낸다.
ARP가 3계층이기 때문에 2게층인 이더넷프로토콜을 앞에 붙여서 보낸다.
근데 여기서 이상한 점은 A가 C한테 요청을 보내는데 ARP구조를 살펴보면 출발지 MAC주소, 출발지 IP주소를 알고 목적지 MAC 주소, 목적지 IP주소를 알아야한다. 목적지 MAC주소를 몰라서 목적지 IP주소 가지고 아려고 하는것이다.
ARP는 그렇다 쳐도 이더넷 프로토콜 구조는 목적지 MAC주소, 출발지MAC주소, 상위프로토콜인데 목적지 맥주소를 모르는것이다. 그래서 일단 아래 사진처럼 한다.
그리고 이더넷 프로토콜도 인캡슐레이션한다.
목적지 MAC주소를 모르기 때문에 아래 사진처럼 FF:FF:FF:FF:FF:FF로 꽉채우게 된다면, IP주소 뒷부분을 1로 꽉채우게 된다면 브로드 캐스트가 되는것 처럼 이 프로토콜을 작성해서 같은 네트워크에 있는 모두에게 보내게된다.
가운데있는 장비는 2계층 장비인 스위치이다.
2계층 장비이기 때문에 2게층 프로토콜까지만 확인한다.
그리고 목적지 MAC주소가 브로드캐스니까 같은 네트워크에 있는 모두에게 보낸다.
이걸 받은 모두는 인캡슐레이션 과정을 거친다.
목적지 MAC주소를 확인해보니 브로드캐스트라 본인에게 온건 맞으니 3계층까지 까보게된다. 그러면 본인의 IP와 목적지IP가 맞는 애가 있고 안맞는애가 있다.
그렇게 되면 본인 IP랑 안맞는 애들은 패킷을 버리게된다.
그러면 C는 응답프로토콜을 만들고 마찬가지로 인캡슐레이션을 한다.
그렇게 보내게 된다면 2계층 장비인 스위치가 2계층까지 디캡슐레이션 해보고 A에게 보내는걸 알기 때문에 A에게 보낸다.
그럼 A는 그것을 디캡슐레이션 해보고 C의 MAC주소를 알게된다.
그리고 ARP 캐시 테이블이라는곳에 30번 IP를 쓰는 C의 컴퓨터 MAC주소를 등록한다.
이것이 ARP프로토콜을 이용해서 상대방의 MAC주소를 알아내는 과정이다.
통신했던 컴퓨터들의 주소는 ARP 테이블에 남는다.
이 테블도 일정시간이 지난다면 없어지게 된다.
만약 다시 통신을 하려고 하면 ARP 프로토콜로 다시 알아야한다.
CMD에 arp -a를 치게되면 본인의 ARP 테이블을 확인할 수 있다.
'네트워크 끄적끄적' 카테고리의 다른 글
2023/01/13 4계층 프로토콜 (0) | 2023.01.13 |
---|---|
2023/01/12 IPv4, ICMP, 라우팅테이블, 조각화 (0) | 2023.01.12 |
2023/01/10 OSI 7의 3계층 (0) | 2023.01.10 |
2023/01/09 OSI 7의 2계층 (0) | 2023.01.09 |
2023/01/06 네트워크 모델 (0) | 2023.01.06 |