동혁이의 개발일지
로그인
동혁이의 개발일지
로그인
[네트워크] ARP 프로토콜
최동혁
·
2023년 1월 27일
팔로우
0
CS
컴퓨터 네트워크
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 주소를 채워주고 테이블에 저장이 되는 것이다.
최동혁
항상 성장하는 개발자 최동혁입니다.
팔로우
이전 포스트
[네트워크] 3 계층 관련 문제
다음 포스트
[네트워크] IPv4 프로토콜
0개의 댓글
댓글 작성