본문 바로가기
Network

라우팅(Routing)

by xogns93 2024. 12. 16.

1. 네트워크 라우팅

네트워크에서 라우팅은 데이터 패킷을 출발지에서 목적지로 전달하기 위해 최적의 경로를 선택하고 관리하는 과정입니다. 이 작업은 라우터(router)라는 네트워크 장비에 의해 수행됩니다.

네트워크 라우팅의 과정

  1. 라우터의 역할:
    • 데이터 패킷의 헤더 정보를 읽어 목적지를 확인.
    • 목적지까지 도달할 수 있는 경로를 계산.
    • 적절한 인터페이스로 데이터를 전달.
  2. 경로 결정 방식:
    • 정적 라우팅: 관리자가 직접 경로를 설정. 고정된 네트워크에 적합.
    • 동적 라우팅: 라우터가 네트워크 상태를 실시간으로 학습하고 경로를 자동으로 변경.
  3. 동적 라우팅 프로토콜 예시:
    • RIP (Routing Information Protocol): hop 수(경유 횟수)를 기반으로 경로 결정.
    • OSPF (Open Shortest Path First): 네트워크 상태 정보를 기반으로 최단 경로 계산.
    • BGP (Border Gateway Protocol): 인터넷 서비스 제공업체 간 데이터 전송에 사용.

라우팅의 핵심 목표

  • 데이터를 가장 효율적으로 전달.
  • 장애 발생 시 대체 경로로 우회.
  • 네트워크 성능 및 신뢰성 최적화.

2. 서버 사이드 라우팅 (웹 서버에서의 라우팅)

서버 사이드 라우팅은 클라이언트가 보낸 요청을 처리하기 위해 적절한 핸들러(Controller, Function 등)에 연결하는 과정입니다.

예시: Spring Boot에서의 라우팅

  • URL 요청을 처리하는 방법을 정의합니다.
  • 예를 들어, 클라이언트가 http://example.com/user를 요청하면 이를 처리할 메서드를 지정해야 합니다.
@RestController
@RequestMapping("/user")
public class UserController {

    @GetMapping("/{id}")
    public String getUserById(@PathVariable String id) {
        return "User ID: " + id;
    }
}

서버 라우팅의 핵심 개념

  1. 라우팅 테이블: URL 경로와 이를 처리할 메서드의 매핑 정보.
  2. HTTP 메서드:
    • GET: 데이터 조회 요청.
    • POST: 데이터 생성 요청.
    • PUT: 데이터 수정 요청.
    • DELETE: 데이터 삭제 요청.
  3. 동작 방식:
    • 클라이언트 요청을 URL 및 HTTP 메서드에 따라 분석.
    • 매칭되는 핸들러 메서드로 요청 전달.
  4. 장점:
    • 복잡한 요청 처리 가능.
    • 서버에서 데이터 검증 및 응답 관리.

3. 클라이언트 사이드 라우팅 (SPA에서의 라우팅)

클라이언트 사이드 라우팅은 SPA(Single Page Application)에서 사용되며, URL 변경에 따라 브라우저 새로고침 없이 화면을 동적으로 전환합니다.

프론트엔드 라우팅의 동작 방식

  1. History API를 사용하여 브라우저 URL을 변경.
  2. 브라우저는 서버에 요청을 보내지 않고, 자바스크립트가 URL 변경에 따라 적절한 컴포넌트를 렌더링.
  3. 필요한 경우 서버 API에서 데이터를 가져와 화면에 표시.

React Router를 사용한 예시

React Router는 클라이언트 사이드 라우팅을 구현하기 위한 라이브러리입니다.

import React from "react";
import { BrowserRouter as Router, Route, Routes } from "react-router-dom";
import Home from "./Home";
import About from "./About";

function App() {
  return (
    <Router>
      <Routes>
        <Route path="/" element={<Home />} />
        <Route path="/about" element={<About />} />
      </Routes>
    </Router>
  );
}

프론트엔드 라우팅의 특징

  1. 뷰 렌더링:
    • URL 경로에 따라 다른 화면이나 컴포넌트를 동적으로 렌더링.
  2. 장점:
    • 빠른 화면 전환.
    • 네트워크 요청 감소.
  3. 단점:
    • 첫 로드 시 필요한 리소스를 모두 가져오기 때문에 초기 로딩 속도가 느릴 수 있음.
    • SEO(Search Engine Optimization)에 불리.

4. API 게이트웨이에서의 라우팅

API 게이트웨이는 여러 서비스로의 요청을 단일 진입점에서 관리하는 라우팅 방식입니다.

예시: Spring Cloud Gateway

  • 클라이언트 요청을 받아 백엔드 마이크로서비스로 전달.
spring:
  cloud:
    gateway:
      routes:
        - id: user-service
          uri: http://localhost:8081
          predicates:
            - Path=/user/**
        - id: order-service
          uri: http://localhost:8082
          predicates:
            - Path=/order/**

결론

라우팅은 데이터, 요청, 화면 등 다양한 요소를 목적지에 올바르게 전달하기 위한 경로를 결정하는 작업입니다. 네트워크, 서버, 클라이언트, 그리고 API 게이트웨이 등 다양한 환경에서 중요한 역할을 수행하며, 각각의 동작 방식과 사용 목적이 다릅니다.

'Network' 카테고리의 다른 글

First Class 네트워크 주소  (0) 2024.12.05
포트 포워딩(Port Forwarding)  (0) 2024.12.05
언더레이 네트워크  (0) 2024.12.05
HTTP 헤더  (0) 2024.10.15
마샬링(Marshalling)과 시리얼라이제이션(Serialization)  (1) 2024.10.14