Profile picture

[네트워크] 서브넷 간 이루어지는 통신 자세하게 파헤쳐보기

JaehyoJJAng2023년 01월 20일

개요

이번 게시글에서는 서로 다른 네트워크 대역(서브넷)에 있는 장비 간의 통신이 어떻게 이루어지는에 대해서 자세하게 파헤쳐보겠습니다.


🚀 다른 동네 친구에게 편지 보내기

우리가 오늘 해결할 미션은 바로 이것입니다.


  • A 컴퓨터: IP 주소 192.168.0.10, 서브넷 마스크 /24 (255.255.255.0)
  • B 컴퓨터: IP 주소 192.168.1.10, 서브넷 마스크 /24 (255.255.255.0)

A와 B는 각각 다른 동네(서브넷)에 살고 있죠?

이 둘이 서로 ping과 같은 통신을 하려면 어떤 여정을 거쳐야 할까요?


🗺️ 먼저, 동네 지도 그려보기! (네트워크 구성도)

글로만 보면 복잡하죠?

전체적인 그림을 먼저 그려봅시다.
image

  • A PC와 B PC: 오늘의 주인공들입니다.
  • L2 스위치: 같은 동네(서브넷) 안에서 장비들을 서로 연결해주는 역할을 합니다. 우체국보다는 동네 골목길 같은 존재죠.
  • 라우터 (게이트웨이): 다른 동네로 나가거나 들어오는 '관문' 역할을 합니다. 우리 동네의 모든 편지가 모이는 '우체국'이라고 생각하면 완벽합니다! A의 게이트웨이는 192.168.0.1, B의 게이트웨이는 192.168.1.1로 설정했습니다.

💌 A가 B에게 보내는 편지

자, 이제 A(192.168.0.10)가 B(192.168.1.10)에게 'Ping'을 보낸다고 가정하고 그 여정을 따라가 봅시다!


1단계: "이 친구, 우리 동네 사람이오?" (목적지 주소 확인)

A 컴퓨터는 데이터를 보내기 전, 가장 먼저 목적지 IP(192.168.1.10)가 자신과 같은 동네(서브넷)에 있는지 확인합니다.

  • 자신의 IP(192.168.0.10)와 서브넷 마스크(255.255.255.0)를 계산 → 192.168.0.0/24 (A의 동네)
  • 목적지 IP(192.168.1.10)와 서브넷 마스크(255.255.255.0)를 계산 → 192.168.1.0 (B의 동네)

"어라? 192.168.0.0/24192.168.1.0/24은 다르네! 다른 동네 친구구나!


A는 B가 다른 네트워크에 있다는 것을 깨닫고, 직접 데이터를 전달할 수 없다고 판단합니다.

따라서 이 편지를 동네 우체국, 즉 자신의 게이트웨이(192.168.1.1)에게 보내기로 결심했습니다.


2단계: "우체국(게이트웨이)는 어디 있지?" (ARP 요청)

A는 게이트웨이의 IP 주소는(192.168.0.1)는 알지만, 바로 옆으로 데이터를 전달하는 데 필요한 게이트웨이의 물리적 주소(MAC)는 모릅니다.


1. A는 자신의 ARP 캐시(최근 통신한 IP-MAC 주소 목록)를 확인합니다.


2. 만약 게이트웨이의 MAC 주소가 없다면, L2 스위치를 통해 같은 192.168.0.x 네트워크에 있는 모든 장비에게 소리칩니다. (ARP Request)

  • 🗣️ "IP 주소가 192.168.0.1인 분 계신가요? MAC 주소 좀 알려주세요!"

3. 이 외침을 들은 라우터 A(게이트웨이)가 응답합니다. (ARP Reply)

  • 📬 "저예요! 제 MAC 주소는 AA-AA-AA-AA-AA-AA입니다."

4. A는 이 MAC 주소를 자신의 ARP 캐시에 저장하고, 이제 게이트웨이로 가는 길을 알게 되었습니다.


3단계: 우체국으로 편지 발송! (패킷 캡슐화)

A는 이제 B에게 보낼 IP 패킷(편지)을 만듭니다.

  • 출발지 IP: 192.168.0.10 (A 자신)
  • 목적지 IP: 192.168.1.10 (최종 목적지 B)

그리고 이 편지를 이더넷 프레임 에 담아 포장합니다.

여기서 중요한 점! 택배 상자의 주소는 최종 목적지가 아닌, 당장 배달해야 할 바로 다음 목적지 를 적는다는 겁니다.


  • 출발지 MAC: A의 MAC 주소
  • 목적지 MAC: 라우터 A (게이트웨이)의 MAC 주소

핵심 포인트: IP 주소는 끝까지 변하지 않지만, MAC 주소는 한 구간(Hop)을 건널 때마다 계속 바뀝니다.


4단계: 라우터 A의 길 찾기 (라우팅)

1. 라우터 A는 자신에게 온 택배(프레임)를 받고, 목적지 MAC 주소가 자신과 일치하므로 패킷을 엽니다.


2. 안에 있는 편지(IP 패킷)의 최종 목적지 IP가 192.168.1.10인 것을 확인합니다.


3. 자신이 가진 리우팅 테이블을 펼쳐서 192.168.1.0 동네로 가려면 어느 길로 가야하는 지 찾습니다.


4. 지도에는 192.168.1.0/24 네트워크는 라우터 B를 통해 갈 수 있다고 적혀 있겠죠?


5. 라우터 A는 이제 이 편지를 라우터 B로 보낼 준비를 마칩니다.


5단계: 라우터 B로 포워딩!

라우터 A는 다시 편지를 새로운 택배 상자에 담습니다.


  • 출발지 MAC: 라우터 A의 외부 통신용 MAC 주소
  • 목적지 MAC: 라우터 B의 MAC 주소

(내용물인 IP 패킷의 출발/목적지 IP는 그대로 유지됩니다.)

이 택배는 외부망을 통해 라우터 B에게 안전하게 전달됩니다.


6단계: 최종 배달 준비 (라우터 B)

라우터 B는 자신에게 온 택배를 받고, 목적지 IP가 192.168.1.10임을 확인합니다.


"어! 이 주소는 바로 내 관할 구역(직접 연결된 네트워크)이잖아!"라고 인지합니다.

이제 라우터 B는 최종 목적지인 B PC에게 직접 편지를 전달해야 합니다. 그러려면 B PC의 MAC 주소를 알아야 합니다.


라우터 B는 2단계와 마찬가지로 192.168.1.x 네트워크에 ARP 요청을 보냅니다.

  • 🗣️ "IP 주소가 192.168.1.10인 분? MAC 주소 알려주세요!"

B PC가 응답하며 자신의 MAC 주소를 알려줍니다.


7단계: 도착 ✅

라우터 B는 마지막 택배 상자를 포장합니다.

  • 출발지 MAC: 라우터 B의 내부 통신용 MAC 주소
  • 목적지 MAC: B PC의 MAC 주소

(IP 패킷 정보는 여전히 A → B로 유지)


L2 스위치 B를 거쳐 이 프레임이 B PC에 도착하면, B는 목적지 MAC 주소가 자신과 일치하는 것을 보고 데이터를 수신합니다.

드디어 A의 Ping 요청이 B에게 성공적으로 도착했습니다!


B가 A에게 응답(Ping Reply)을 보낼 때도 지금까지의 과정이 정확히 역순으로 똑같이 일어납니다.

    Tag -

Loading script...