L3 - ARP(Address Resolution Protocol)
원격과의 데이터통신에는 총 3개의 주소가 필요하다.
L4 Port Number, L3 IP Address, L2 Ethernet Address(MAC Address)
IP와 Port에 대해서는 서비스 제공자로부터 App 내에 코딩된 정보 혹은
웹페이지의 도메인이름이 사전에 등록이 되어있는 경우 DNS 서버의 도움을 받아 쉽게 알아 낼 수 있다.
L4와 L3는 그렇다고 치고, L2 주소( Ethernet Address)는 대체 어떻게 알아내서 통신이 진행되는 것일까?
라우터와 라우터 사이에는 별도의 프로토콜이 존재하지만,
같은 라우터를 공유하는 다른 서브넷내의 머신과의 통신에는 간단하게 ARP가 이용된다.
같은 라우터를 사용하는 다른 서브넷일 경우 ARP를 이용하면 간단하게 이더넷 주소를 얻어온다.
이때, 본격적인 통신에 들어가기 앞서 ARP(Address Resolution Protocol) Table을 세팅한다.
cmd 창을 열고 arp -a 를 입력하면 다음과 같은 결과를 볼수 있다.
위 테이블이 arp 테이블이다.
L3 ARP 프로토콜 의 실행결과로 IP 주소에 맞는 이더넷 주소가 입력 되어 있는 것이다.
언제 입력되었을까? 잘 모르겠다. 그래서 위 테이블을 초기화 해본다.
관리자 권한으로 cmd를 켠뒤 arp -d 실행후
다시 arp -a 해본다.
위와 같은 결과를 얻을 수 있다.
이제 arp 테이블은 초기화 된 상태이다.
내 PC의 arp 테이블에는 무엇이 들어갈까?
나와 같은 서브넷을 쓰고 있는 장비들의 정보가 기록된다.
만약 google.com 과 통신하려고 하면, 우선은 가장 가까운 스위치 혹은 라우터부터 거친다.
가장 가까운 라우터는 집에서 사용하는 공유기가 될수도, 모뎀이 될수도 있다.
어찌 되었던 다음 장비 라는 것이다.
결국 내 PC에서 알아낼 수 있는건 단지 나와 직접적으로 연결된 장비뿐이다.
그래서, Wireshark로 gateway에 대한 MAC 주소를 확인을 해보기로 한다.
나의 서브넷내 내 PC의 앞단에 달린 장비의 주소가 arp table에 잘 기록이 되는지 말이다.
다음과 같이 실행한다.
1. cmd 창 열고 ipconfig /all 결과로 나온 기본게이트웨이 주소와 내 아이피 주소를 적어둔다.
2. wireshark 에서 캡처시작. (이제부터 모든 들어오고 나가는 모든 패킷이 감시된다.)
3. arp -d
4. cmd 창 열고 ping 게이트웨이 주소
5. wireshark 에서 arp && ip.src.proto_ip_v4 == 내 아이피 주소 필터를 적용시킨 후 결과 확인.
Sender Mac Address 에는 나의 Mac주소가 기록 되어 있을 것이다.
Sender IP Address에는 나의 IP 주소가 기록된다.
Target IP Address 에는 방금전 ping의 argument로 입력한 Gateway ip가 기록된다.
Wireshark에서 필터는 ip.src.proto_ip_v4 에 내 아이피로 걸어두었다.
즉 보고있는 결과는
내가 ping을 gateway에 보내려 하는 순간, gateway의 MAC주소가 필요해
ping을 실행하기 전에 , arp가 실행된 그 결과를 보고 있는 것이다.
이제 Wireshark에서 필터를 ip.src.proto_ip_v4 부분을 ip.dst.proto_ip_v4 로
바꾸고 뒤 IP는 그대로 내 IP로 유지한다.
Sender와 Target 의 IP 가 뒤바뀐 패킷을 볼 수 있다.
내가 보낸 ARP에 대한 Response이다.
또한 Sender의 MAC주소가 설정되어있다.
주목해야 할 부분은 두 부분이다.
L3 ARP 헤더에 MAC Address 는 모르기 때문에 전부 0으로 기록된다는 점.
L2 이더넷 헤더에 들어가는 MAC Address가 255:255:255:255:255:255 즉, Broadcast 된다는점.
ARP는 브로드 캐스트로 실행된다.
연결된 모든 L2 머신으로 브로드 캐스트 된 후 해당 IP 주소에 대한 정보를 가진 머신이
'이 IP를 사용중이다' 하고 응답을 보낸다.
PC 랜카드에서 스위치, 스위치에서 라우터, 라우터 에서 다른 서브넷,
또 다른 서브넷으로 , 또 다른 서브넷으로 퍼져나가고
특정 서브넷안의 머신으로으로부터의 결과를 받게된다.
이 과정에서 L2 장비는 L2 주소를 기억해두고.
L3 장비는 L3 주소를 기억해둔다.
서브넷과 서브넷사이 에서도 ARP가 이루어진다.
'라우터는 스위치들에게 Broadcast 한다. 스위치는 하부의 머신들에게 다시 Broadcast. ' 를 계속 한다.
응답을 차례 차례 받다보면 L2와 L3장비에
특정 IP , 특정 MAC Address 로 향하는 머신이 테이블 형태로 입력된다.
이렇게해서 다른 서브넷의 내부에 있는 머신과도 통신이 가능하게 되는 것이다.
다만 , 이 과정을 경로의 생성과정으로 이해하면 곤란하다.
라우터와 라우터 사이에는 별도의 경로 생성 프로토콜이 있다.
arp는 같은 라우터를 사용하는 네트워크내에서 의미를 가지는 통신이다.
arp는 단순히 MAC Address를 얻기위한 과정이며,
정보입력이 각 gateway에서 일어난다는 것,
gateway는 입력된 정보를 바탕으로 다른 서브넷으로 보낸다는 것만 기억하면된다.
'네트워크 및 데이터통신 이론' 카테고리의 다른 글
L2 - LAN Adapter(랜카드) 의 동작 (0) | 2021.12.31 |
---|---|
네트워크/데이터 통신 기본 이론 - Packet Header 의 구분 (0) | 2021.12.31 |
L4 - TCP Sliding Window (0) | 2021.12.29 |
L4 - TCP Header 구조 (0) | 2021.12.27 |
L4 - TCP의 Connect 과정시 3Way-Hand Shake (0) | 2021.12.23 |
댓글
이 글 공유하기
다른 글
-
L2 - LAN Adapter(랜카드) 의 동작
L2 - LAN Adapter(랜카드) 의 동작
2021.12.31 -
네트워크/데이터 통신 기본 이론 - Packet Header 의 구분
네트워크/데이터 통신 기본 이론 - Packet Header 의 구분
2021.12.31 -
L4 - TCP Sliding Window
L4 - TCP Sliding Window
2021.12.29 -
L4 - TCP Header 구조
L4 - TCP Header 구조
2021.12.27