새소식

Cloud/Network

Packet Travel - 다른 네트워크로 Ping을 보내면 진행되는 과정 (feat.Ping이 초반에 실패하는 이유 w/ ARP Table)

  • -

Packet Travel - 다른 네트워크로 Ping을 보내면 진행되는 과정
(feat.Ping이 초반에 실패하는 이유 w/ ARP Table)

Packet Tracer를 이용하여
라우터와 스위치가 아래와 같이 연결된 상황에서
PING을 보내면 어떻게 동작하는 지를 살펴보려고 한다.

우선, 패킷은 간단하게
[MAC주소 [IP주소 [ Port번호 [메세지] ] ] ]
이렇게 4개의 헤더로 쌓여있다.

라우터는 L3 장비로 L2 Address인 MAC주소를 벗겨내고
IP주소를 확인한 후 새로운 MAC 주소를 씌운다.

반드시 모든 패킷은 MAC주소를 알아야 보낼 수 있다.

Overview

먼저 PING은 ICMP 프로토콜로 패킷을 보낸다.

이때 Ping 보낼 때
입력한 IP주소로 Destination IP Address는 알지만,
해당 IP의 MAC Address는 ARP Table을 보고 찾는다.

첫 전송이라서
아직 ARP Table에 정보가 없다면,
MAC 주소를 알기 위해 ARP가 사용된다.

ARP는
IP주소는 알지만 MAC 주소를 모를 때, 패킷에 알고 싶은 IP 주소를 담아 보내는 Protocol이다.

L2인 스위치는
IP주소를 읽을 수 없어 주변으로 다시 브로드캐스트로 뿌리고
라우터에서 이는 잡힌다.

원하는 대역으로 나갈 수 있는 라우터 IP의 MAC 주소를 받아온 다음
ping 패킷이 다시 만들어진다.

중간에 네트워크 대역이 바뀔 때,
다시 MAC주소를 모르면(ARP테이블에 원하는 IP 대역과 MAC주소 매팽이 없다면)
해당 패킷은 버려진다.

그리고 버려진 라우터에서 다시 ARP를 전송하고
다시 처음부터 Ping을 보낸다.

이러한 이유로 ping 중 초반에 실패하는 경우가 생기는 것이다.


아래는 이러한 과정을 더 상세히 보기 위해 구현해보았다.

아래의 아키텍처는 총 3개의 네트워크가 존재한다.

빨간박스가 있는 네트워크는 10.1.1.X, 파란박스가 있는 네트워크는 10.1.2.X, 노란색 박스가 있는 네트워크가 10.1.3.X를 사용한다.

노란색 박스가 있는 서버가 10.1.3.3이며, 빨간색 박스가 있는 서버가 10.1.1.1이다.

  1. 노란색 → 빨간색으로 Ping을 보냈다.

Ping은 ICMP 프로토콜을 사용하기에
ICMP 패킷이 만들어졌다.

하지만 첫 전송이기에
ARP Table에 매핑되는 MAC주소가 없어 ARP를 보낸다.

전송되는 ARP 패킷을 열어보면
브로트캐스트 MAC주소인 FFFF.FFFF.FFFF를 가지고 있다.

또한 PING의 목적지 IP가 다른 네트워크 주소이기 때문에
다른 네트워크 대역으로 나가기 위해
Default Gateway 주소인 10.1.3.1을 MAC주소를 알고 싶은 Target IP 주소로 설정하여 담고있다.

목적지와 맞는 라우터에 도착하면
자신의 MAC주소를 담아 응답을 보내고
목적지가 아닌 곳에 도착하면 버려진다.

ARP 응답이 도착했으면, 다시 PING을 보낸다.

이번에는 10.1.2.X 대역의 네트워크에서
목적지 MAC주소를 모르는 문제로 인해 PING의 ICMP 패킷이 버려진다.

이후 다시 ARP 패킷이 전송하여 MAC 주소를 찾는다.

다음은 이전과 동일한 방식으로 진행된다.

이번에도 다시 ping을 보낸다.

이번에는 10.1.1.X 대역의 네트워크에서
MAC주소를 알지 못해 패킷이 버려진다.

또 다시 같은 방식은 ARP 가 진행되고 다시 PING을 보낸다.

목적지인 10.1.1.1로 PING이 잘 보내진 것을 확인할 수 있다.

응답까지 잘 도착한 것을 확인할 수 있다.

이후 터미널에서 초반에 2번의 실패가 있었다는 것을 확인할 수 있다.

 

 

 

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.