CS 공부/기타

[ETC] 트래픽 흐름에 대해서 알아보기

강_토발즈 2025. 9. 4. 20:58

 

모름지기 네트워크라고 하면, 연결된 상태에서 상호간의 의사전달이 되는 것을 의미한다고 할 수있다. 즉 서로가 연결되어 있고 전달하고자 하는 메시지가 왔다갔다 해야 한다는 것인데, 네트워크 연결을 위해서는 각각의 장비들에 설정해줘야 할 것들이 있고, 이 설정 값들이 잘못되면 서로 통신하지 못하는 문제가 생기게 된다.

 

실무에서 내 기기와 통신하고 싶은 목적지 장비가 통신이 안되면 생각해 봐야할 장애물(?)  들이 있는데, 어제 방화벽에 대해 알아봤으니, 이제는 내가 파악하고 있어야 할 네트워크 경로에 대해 한 번 더 정리해보려 한다. 즉 어떤 설정을 필수적으로 해 주어야 양 기기간 통신이 가능한지 되짚어 보도록 한다.

 

1. 네트워크 통신을 위해 필요한 기본 설정

내 장비 A가, 목적지 장비 B 와 통신하려면 기본적으로 네 가지 기본 정보가 하다.

  1. 내 IP 주소
    • 예: 192.168.0.10/24
    • 내가 누군지, 어떤 네트워크에 속했는지를 정의하는 것
  2. 서브넷 마스크
    • 예: 255.255.255.0 (/24)
    • 내 IP와 목적지 IP가 같은 네트워크인지, 다른 네트워크인지 판별할 수 있다.
  3. 게이트웨이(기본 경로)
    • 예: 192.168.0.1
    • 트래픽이 나가야 하는 최초의 관문이라고 할 수 있다. 예를들면 우리집 현관문 이라고 할 수 있다.
    • 목적지가 내 네트워크가 아니면, 이 IP로 패킷을 보냄
  4. 목적지 IP
    • 예: 10.10.10.20
    • 내가 가야 할 최종 상대방의 주소

 

2. 트래픽의 전달 과정

위 네가지 요소들이 설정되어 있다면, 패킷이 실제로 어떤 경로를 통해 목적지까지 도달하는지 알아보자.

 

2-1. 내 네트워크 인터페이스 출발

  • 애플리케이션이 목적지 IP(10.10.10.20)로 패킷 생성
  • OS는 라우팅 테이블을 보고 판단:
    • 내 IP(192.168.0.10)와 목적지(10.10.10.20)를 서브넷 마스크로 비교
    • 결과: 서로 다른 네트워크 → 게이트웨이(192.168.0.1)로 보냄

 

2-2. 게이트웨이로 전달

  • A 장비는 게이트웨이의 MAC 주소를 알아내야 함 (ARP 요청).
  • 이더넷 프레임 생성:
    • Source MAC = 내 NIC MAC
    • Destination MAC = 게이트웨이 MAC
    • 안에는 “목적지 IP = 10.10.10.20” 정보 포함
  • 즉, 겉봉투는 게이트웨이 주소, 편지 안에는 진짜 목적지 주소가 적힌 셈.

 

2-3. 게이트웨이 → 라우터 경유

  • 게이트웨이는 받은 패킷을 보고 “목적지가 10.10.10.20이구나” 확인
  • 자신의 라우팅 테이블을 보고, 다음 홉(next hop)을 결정
  • 필요하다면 또 다른 라우터로 전달

 

2-4. 여러 라우터를 거쳐 목적지 네트워크로 이동

  • 중간 라우터들은 “목적지 IP”만 보고 다음 홉을 계속 결정
  • 이 과정에서 NAT, 방화벽, ACL 등이 개입할 수 있음

 

(5) 목적지 네트워크 도착

  • 마지막 라우터가 “10.10.10.0/24 네트워크는 내 인터페이스에 연결돼 있다” 판단
  • 최종적으로 목적지(10.10.10.20)의 MAC 주소를 ARP로 알아낸 뒤 전달

 

(6) 목적지 장비 수신

  • 장비 B(10.10.10.20)가 패킷을 받음
  • 네트워크 스택에서 IP 확인 → TCP/UDP 계층 확인 → 애플리케이션에 전달

3. 요약 (트래픽 경로 공식화)

장비 A → 장비 B로 패킷이 가는 과정은 규칙처럼 이렇게 요약할 수 있다.

  • 내 IP & 서브넷 마스크로 같은 네트워크인지 확인
    • 같으면 바로 목적지로 전달 (ARP → MAC → 직접 전송)
    • 다르면 게이트웨이로 전달
  • 게이트웨이로 전달 후, 라우터들이 라우팅 테이블을 참조해 다음 홉 결정
  • 목적지 네트워크에 도착하면, 최종 장비의 MAC 주소를 알아내서 패킷 전달