- 이번 포스팅은 스위치 및 ARP에 대해 알아볼 것이다.
ARP(Address Resolution Protocol)은 네트워크 상에서 IP 주소를 물리적 네트워크 주소(MAC)로 대응 시키기 위해 사용되는 프로토콜이다.
스위치는 2계층 장비로 물리적 포트에 연결된 기기에서 전송된 패킷을 받아 패킷이 도달해야 하는 기기로 이어지는 포트를 통해서 전달한다. 이 때 MAC 주소를 사용한다.
- Switch
- 스위치는 ARP를 통해 MAC address 정보를 받아온다.
- 허브와 다르게 저장 기능이 한번 MAC address 정보가 들어오게 되면 MAC address를 찾기 위해 매번 모든 포트에 전기적 신호를 주지 않아도 된다.
- 처음에는 허브와 마찬가지로 아무런 정보가 없기 때문에 모든 포트로 패킷을 전달한다. 이를 플러딩이라고 한다. 한 번 알아낸 MAC address는 스위치의 MAC address table에 저장된다.
- MAC address table에 저장된 정보를 가지고 다음 통신에 사용한다. (모든 포트에 신호를 주지 않고 필요한 대상이랑 통신하기 때문에 스니핑이 불가능하다.)
- ARP 통신 과정
- pc1과 pc2가 통신을 해야하는 상황
1. pc1이 pc2와 통신하기 위해 프레임 헤더에 pc1의 MAC 주소(출발지)와 pc2의 MAC(목적지)를 작성한다. 출발지인 pc1의 MAC 주소는 00:00:00:00:00:01로 알고 있고 목적지인 pc2의 경우 IP 주소를 알고 있지만 MAC 주소는 모르는 상황이기 때문에 기본 게이트웨이 ff:ff:ff:ff:ff:ff(브로드 캐스트로 뿌려주겠다는 의미)를 작성해준다.
2. pc 사이에 있는 스위치는 pc1의 MAC 주소를 스위치 MAC address 테이블에 저장한다.
3. 스위치가 ARP 요청을 받고 MAC address 테이블에 pc2의 IP(10.0.0.201)에 대한 MAC 주소가 저장되어 있지 않다면 pc2에 ARP 요청이 전달된다. pc2는 ARP 요청을 받은 다음 프레임 헤더의 목적지 주소에 자신의 IP가 있는지 확인 한 뒤 있을경우 자신의 MAC address를 알려준다. 이 후 스위치는 B의 MAC 주소를 MAC address 테이블에 저장한다.
3-1. 스위치 MAC address 테이블에 pc2의 IP(10.0.0.201)에 대한 MAC 주소가 존재하는 경우에는 pc1에게 pc2의 MAC 주소를 전달한다.
4. pc2의 MAC 주소를 전달받은 pc1은 pc2와의 통신을 시작한다.
- Windows
- Windows 환경에서 arp를 통해 MAC 주소를 확인하는 방법이다.
- Packet Tracer
- 시스코가 만든 가상의 네트워크를 구성 할 수 있는 packet tracer 프로그램을 이용하여 네트워크를 구성하여 ARP를 통한 MAC 주소를 확인하는 방법이다.
- 다음과 같이 PC 4대와 스위치 2개를 구성한다. 각 PC의 MAC 주소는 위의 사진과 같다. 또 현재 PC끼리 ping을 각 PC로 보낸 상태이다.
- Switch 0번에서 show mac address-table 명령어를 이용하여 MAC address 테이블을 확인해보면 각 포트로 어떤 MAC 주소의 정보가 담겨있는지 확인 할 수 있고 각 PC쪽으로 연결되어 있는 스위치 포트의 MAC 주소를 보게 되면 해당 포트와 연결된 PC의 MAC 주소와 일치하는 것을 볼 수 있다.
- Windows(가상 환경)
- 2개의 Windows(가상 환경)를 이용하여 서로 ping을 보낸 다음 패킷 분석 프로그램인 wire shark를 이용하여 어떤 방식으로 통신을 하였는지 알아 볼 것이다.
- Ethernet Frame Header
- 위의 그림은 ethernet frame header에 해당하는 그림이다. 패킷에는 많은 정보들이 담겨 다른 PC들과 통신을 하게 되는데 그 중 ARP과 관련된 ethernet frame header에 대해서 알아 볼 것이다. wire shark 프로그램을 통해 볼 수 있는 데이터 정도는 Destination Address, Source Address, Type, Data 정보들이다.
- Preamble : 송신측과 수신측의 비트 동기화를 위해 사용한다. (와이어 샤크에 보이지 않는다.)
- Destination Address : 목적지 주소, 목적지의 2계층 주소 MAC 주소
- Source Address : 출발지의 2계층 주소
- TYPE : Ethernet Frame의 Data 부분에 실려있는 상위계층(IP계층)의 Protocol의 종류를 표시
- Data : 상위 계층으로부터 받은 데이터 혹은 상위 계층에 전달한 데이터, 최소 46byte가 안된 경우 Padding(0으로 채움)영역을 추가하여 46Byte로 만든다.
- FCS : Preamble과 FCS 부분을 제외한 유효한 Frame의 Bit열에서 오류 검사 (와이어 샤크에 보이지 않는다.)
- Windows 2대에서 각각의 PC로 ping을 보낸다.
- wire shark를 통해 arp 패킷을 캡쳐해본다.
- 패킷 분석
- wire shark를 통한 패킷 분석을 해 볼 것이다.
- 위 그림의 1,2,3번을 우선 볼 것이다.
- 우선 처음 통신하는 PC와는 MAC 주소의 정보가 스위치에 없기 때문에 ff:ff:ff:ff:ff:ff 브로드 캐스팅으로 모든 목적지를 지정한다.
- 출발지에 대한 MAC 주소 정보가 담겨 있는 것을 볼 수 있다.
- 현재 ARP 패킷을 알아보고 있기 때문에 TYPE 정보가 ARP인 것을 확인 할 수 있다.
- TYPE 패킷 정보 이후에 DATA 패킷 부분에 해당하는 정보들을 알아 볼 것이다. DATA 패킷은 위의 사진과 같이 여러가지 정보가 담겨져 있는 것을 알 수 있다.
- ethernet frame header이기 때문에 hardware type가 ethernet인 것을 볼 수 있다.
- protocol은 현재 IPv4를 사용중이기 때문에 IPv4인 것을 볼 수 있다.
- hardware size 확인이 가능하다.
- protocol size 확인이 가능하다.
- Opcode 확인이 가능하다.
- 출발지 MAC address를 확인 할 수 있다.
- 출발지 IP 주소를 확인 할 수 있다. 0a 00 00 fe는 16진수로 10진수로 변환 시키면 10.0.0.254가 나온다.
- 목적지 MAC address를 확인 할 수 있다. 00:00:00:00:00:00은 목적지 MAC address를 모르기 때문에 브로드 캐스트로 전체에 뿌리겠다는 의미와 같다.
- 목적지 IP 주소를 알 수 있다. 현재 목적지 IP는 알고 있고 MAC 주소로 확인만 못한 상황이기 때문에 다음과 같이 IP 주소 정보는 보이게 된다.
- DATA 패킷의 경위 최소 46byte를 넘겨야 하기 때문에 부족한 부분은 0으로 채우게 되고 이 부분을 Padding이라고 부른다.
- 서로의 PC에 ping을 통한 통신 확인을 한 이후
- ping을 보낸 뒤 서로의 pc에 통신이 가능한 상태를 확인 한 뒤 ARP 패킷을 확인 해 볼 것이다. 현재 ping을 통한 통신 확인을 한 이후에는 스위치에 출발지와 목적지의 MAC address가 저장되어 있다.
- 목적지 MAC address를 확인 할 수 있다. ff:ff:ff:ff:ff:ff에서 다음과 같이 구체적인 MAC address로 변한 것을 볼 수 있다.
- 출발지 MAC address를 확인 할 수 있다.
- 출발지 MAC 주소를 확인 할 수 있다.
- 출발지 IP 주소를 확인 할 수 있다.
- 목적지 MAC address를 알 수 있다. 위의 00:00:00:00:00:00에서 다음과 같이 구체적으로 바뀐 것을 볼 수 있다.
- 목적지 IP 주소를 볼 수 있다.
'Network > Network' 카테고리의 다른 글
Network - Inter Vlan (L3 switch, Routed Port, SVI, Trunk) / 1 (0) | 2022.04.17 |
---|---|
Network - VLAN (L2 Switch, L3 Switch, trunk) (0) | 2022.04.12 |
Network - 토폴로지 구성 (VLAN) (0) | 2022.04.11 |
Network - 토폴로지 구성 (VLAN) (0) | 2022.04.11 |
Network - VLSM, 서브네팅 (packet tracer) (0) | 2022.03.27 |