MAC Address, IP Address, 그리고 ARP

피터전샘이 만든 랜스위칭1 책을 이용해서 썰을 풀고있습니다.


부족한 실력이지만 이렇게 포스팅을 해가면서 저도 덩달아 공부도 하고 좋은 기회인 것 같습니다.


누가 시켜서 이 짓을 하고 있는건 아니거든요 ㅎ;;


이번엔 제목처럼 맥주소, IP주소, ARP에 대해서 이야기 해보겠습니다.


책 89페이지네요.


책에 있는내용대로 이더넷프레임은 출발지와 목적지의 MAC주소를 알아야지 전송할 수 있습니다.


당연한 이야기지만 이더넷 프레임을 전송해야 라인을 타고 데이터가 목적지로 가고 수신지에서 이더넷 프레임을


수신해야 IP패킷도 열어볼 수 있고 그 상위계층의 데이터내용도 파악 할 수 있겠죠?


데이터 전송시에 목적지 IP주소는 이미 3계층에서 정의되어 알고있지만(OSI 7계층을 기억하세요)


MAC주소를 모르는 상황에서 이 목적지 MAC주소를 알아내는 프로토콜이 ARP (address resolution protocol)입니다.


패킷의 목적지 IP가 유니캐스트 일때 ARP를 이용하여 넥스트 홉의 IP와 MAC주소를 맵핑할 수 있다.


헌데 유니캐스트가 아니라면?


브로드캐스트와 멀티캐스트는 각각 약속된 MAC 주소가 있습니다.


브로드캐스트 IP는 보통 255.255.255.255 이다. 이럴때 MAC 주소는 FFFF.FFFF.FFFF로 약속되어 있고,


멀티캐스트도 마찬가지이다.







멀티캐스트란? 특정한 그룹의 장비들에게만 전달되는 패킷을 말합니다. (ex: EIGRP, OSPF, STP 등)


당연한 이야기지만 각 그룹마다 멀티캐스트 주소는 정해져 있고 이것들은 고유한 주소를 가지게되고,


다 다르다는 이야기이다.







ARP과정을 이야기 해 봅시다.







그림과 같이 3개의 라우터와 1개의 스위치가 연결되어 있습니다


이 장비들은 모두 같은 네트워크에 연결되어 있다고 가정해봅시다.


R1의 10.10.10.1에서 R2의 10.10.10.2로 ping을 보냈을 때 과정을 이야기해 보겠습니다.













R1에서 "ping 10.10.10.2"라고 입력을 하게 되면 R1은 자기가 보내는 패킷의 목적지 IP주소가 10.10.10.2라고


알지만 10.10.10.2를 가지고 있는 인터페이스의 MAC Address는 알지 못하죠.


때문에 목적지 MAC 주소를 FFFF.FFFF.FFFF로 해서 스위치로 포워딩하게 됩니다.













패킷을 받은 스위치는 목적지 MAC 주소를 확인하고 브로드캐스트 패킷임을 인지한뒤 수신받은 포트를 제외한 


다른 모든 포트로 패킷을 flooding(플러딩)합니다. 이 때는 같은 VLAN에 속하는 포트만 해당되겠죠?













R2는 자신의 IP가 10.10.10.2이니 스위치가 보낸 패킷에 응답합니다. 자신의 인터페이스 IP가 10.10.10.2이고


MAC 주소가 aaaa.aaaa.bbbb라고 알려주는 패킷을 R1에게 보낸다. 


R3은 패킷을 수신하였지만 자신과 관계없는 패킷이니 드랍시킨다.

















R2가 응답한 패킷을 수신한 R1은 IP 10.10.10.2인터페이스의 MAC주소가 aaaa.aaaa.bbbb인것을 학습하게 되고


다시 본래목적인 "ping 10.10.10.2"패킷을 재조정하여 포워딩한다. 이것이 같은 네크워크상에 있을 때


ARP를 통한 MAC주소 학습의 과정입니다









이번엔 라우터를 이용하여 나뉘어진 네트워크에서는 ARP가 어떻게 동작하는지 알아보겠습니다









다음 그림과 같은 네트워크가 있다고 가정해 봅니다


R2를 기준으로 좌우 양쪽 네트워크가 다르죠? 왼쪽은 10.10.10.0/24, 오른쪽은 10.10.100.0/24 네트워크네요.


설명의 이해를 돕기위해 스위치에는 게이트웨이가 설정되어 있습니다. 그림에 보이는건 설정 명령어입니다.












이 때, R1에서 "ping 10.10.100.1"이라고 명령어를 치면 일어나는 과정에 대해서 이야기해 보겠습니다.

일단 핑을 치면 R1은 목적지 IP주소가 SRC 인터페이스와 네트워크가 다릅니다.

그러므로 패킷을 게이트웨이로 전송해야 하죠. 그래서 출발지 IP는 10.10.10.1 목적지는 10.10.10.254의 ARP 패킷을 전송합니다














SW1에서 이미 게이트웨이가 설정되었기 때문에 SW1은 R1으로 부터 받은 패킷을 R2에게 전달합니다.


R2는 자신의 IP에 대한 ARP요청 패킷을 수신했으니 자신의 인터페이스 MAC Address를 R1에게 알려주죠.













그럼 R1은 게이트웨이 인터페이스의 MAC address를 학습하게 되고 ARP 테이블을 완성 후 게이트웨이로

ping 패킷을 전송하게 됩니다.


앞서 같은 네트워크랑 다른점은 ARP 요청과 학습. ARP 테이블의 생성과정은 동일하지만 출발지 인터페이스와 동일하지 않은 목적지에 대한 패킷은 우선 게이트웨이로 전송하게 된다는 점입니다.


이렇게 게이트웨이로 "ping 10.10.100.1"을 전송하게 되면 그 후에는 어찌 될까요?















R2에는 IP Routing Table란게 존재할 겁니다.


그림에 예제가 있긴 한데요 이 라우팅테이블은 L3개념입니다.


쉽게 이야기 하면 출발지 IP와 목적지 IP를 가지고 패킷의 경로를 지정하는 겁니다.


그림에서 보면 R1이 던진 패킷은 출발지가 10.10.10.1이고 목적지는 10.10.100.1이죠.


R2는 이 두 IP로 가는 경로에 대해서 이미 학습을 하고 있다는 겁니다.


학습한 내용을 라우팅테이블이란 곳에 기억하고 있는거죠. 목적지 IP를 라우팅테이블을 참조해서


10.10.100.1에 연결된 인터페이스로 패킷을 보내게 됩니다.








그 후에는? 



위 그림은 라우터와 End단 클라이언트가 바로 연결되어 있지만 왼쪽 네트워크와 같이 스위치가 연결되어 있고


또 그 건너에 클라이언트가 있다면 또 L2개념으로 넘어와서 MAC address table을 참조하여 패킷을 전달합니다.


여기서 중요한건 L3장비를 거쳐가게 되면 SRC MAC address는 변경되게 됩니다.


그림은 파란색과 붉은색 네트워크로 나뉘어져 있습니다


MAC은 2계층 주소개념이기 때문에 저 색깔을 넘어가게 되면 Source MAC address는 변경되는 겁니다.














이렇게 되는거죠. L3장비를 지나치게 되면 IP주소는 변경되지 않지만 SRC MAC주소는 마지막 떠난 인터페이스로 변경됩니다




End-to-End의 기본적인 구조입니다. 



이 L2와 L3의 주소참조 형식이 분리되어 있다는 개념이 OSI 7 Layer 모델의 핵심이죠.


이러니 앞부분의 내용이 소홀하다거나 만만해보인다고 쉽게 지나가면 나중에 중심을 잡기가 어렵습니다.


ARP는 IP주소를 이용해서 수신지의 MAC 주소를 알아내는 거죠. RARP(Reverse ARP)라고 반대의 개념도 있습니다.


MAC주소를 이용해서 IP주소를 알아내는 프로토콜이죠. 지금은 이런게 있다라고만 알고 넘어가는게 좋겠습니다.


이번 포스팅은 여기까지 입니다. 감사합니다.

댓글

이 블로그의 인기 게시물

ping 일반오류 (General failure)를 고쳐보자

Piolink TiFront Switch password recovery (파이오링크 스위치 비밀번호 초기화)

Windows 10. 공유폴더 쉽게 삭제하기 (feat. CMD)