IP 및 라우팅
IP 주소 지정과 라우팅이 상호 연결된 네트워크를 통해 패킷을 이동시켜 인터넷에서 올바른 목적지에 도달하게 하는 방식.
IP 주소란 무엇인가?
- IP 주소는 라우터가 네트워크를 통해 데이터를 어디로 보낼지 판단하는 데 도움을 줍니다.
- 이 주소는 네트워크에 의해 할당되며, 다른 네트워크로 이동하면 변경될 수 있습니다.
- 그 구조는 인터넷이 수십억 개의 장치를 효율적으로 확장할 수 있게 해 줍니다.
상세정보
웹사이트를 방문할 때 DNS는 도메인 이름을 IP 주소로 변환합니다. 그 IP 주소는 인터넷에 목적지 장치가 어디에 있는지 알려 줍니다.
라우터는 도메인 이름을 이해하지 못합니다 — 패킷은 IP 주소를 기준으로 전달됩니다. 인터넷을 통해 이동하는 모든 패킷에는 출발지 IP와 목적지 IP가 포함됩니다.
IP 주소에는 구조가 있습니다. 한 부분은 더 넓은 네트워크를 식별하고, 다른 부분은 그 네트워크 안의 특정 장치를 식별합니다. 이 구조 덕분에 라우터는 전 세계의 모든 장치에 대해 각각 경로를 저장하지 않고도 효율적으로 전달 결정을 내릴 수 있습니다.
하드웨어에 연결된 MAC 주소와 달리, IP 주소는 논리적입니다. 이는 네트워크에 의해 할당되며, 다른 곳에 연결하면 변경될 수 있습니다 — 예를 들어 집 Wi-Fi에서 카페 네트워크로 전환할 때처럼요.
이러한 구조와 유연성의 조합이 인터넷이 전 세계적으로 확장되면서도 관리 가능하게 유지되는 이유입니다.
공인 IP vs 사설 IP
사설 IP 트래픽이 라우터로 들어오면 NAT가 이를 다시 쓰고, 공인 IP로 나갑니다.
- 사설 IP는 가정, 학교, 회사 내부에서 사용되며 공용 인터넷에서는 라우팅되지 않습니다.
- 공인 IP는 전 세계적으로 고유하며, 어디서든 장치나 서비스에 접근할 수 있게 해줍니다.
- 라우터는 NAT를 사용해 나가는 트래픽의 사설 주소를 공인 주소로 변환합니다.
상세정보
10.x.x.x, 172.16.x.x–172.31.x.x, 192.168.x.x와 같은 사설 IP 범위는 내부 네트워크 사용을 위해 예약되어 있습니다. 이 범위는 전 세계 인터넷에서 보이지 않기 때문에, 수많은 서로 다른 네트워크가 같은 범위를 재사용할 수 있습니다.
반면 공인 IP 주소는 전 세계적으로 고유해야 합니다. 이는 인터넷 기관에 의해 할당되며, 인터넷과 직접 통신하는 데 필요합니다.
일반적인 가정용 네트워크에서는 장치들이 내부적으로 사설 IP 주소를 사용합니다. 인터넷으로 트래픽을 보낼 때, 가정용 라우터는 NAT(Network Address Translation)를 수행하여 사설 출발지 IP를 라우터의 공인 IP로 바꿉니다.
이 변환 덕분에 여러 내부 장치가 하나의 공인 주소를 공유하면서도, 올바른 응답 경로를 유지할 수 있습니다.
라우팅이란 무엇인가?
네트워크 A
라우터 1
라우터 2
목적지
각 라우터는 목적지 IP만 독립적으로 확인하고, 패킷을 다음 네트워크 홉으로 전달합니다.
- 라우터는 서로 분리된 네트워크를 연결하고 그 사이에서 패킷을 이동시킵니다.
- 전달 결정은 목적지 IP 주소를 사용해 이루어집니다.
- 라우터는 네트워크 계층에서 동작하며 HTTP 같은 애플리케이션 수준 데이터는 무시합니다.
상세정보
라우터의 역할은 좁지만 매우 중요합니다. 들어오는 패킷의 목적지 IP 주소를 확인하고, 다음에 어디로 보낼지 결정합니다.
라우터는 서로 다른 네트워크를 연결하여 트래픽이 하나의 로컬 세그먼트를 넘어 이동할 수 있게 합니다. 라우터가 없다면 통신은 하나의 고립된 네트워크 안으로 제한됩니다.
중요하게도, 라우터는 애플리케이션 데이터를 해석하지 않습니다. HTTP 헤더를 읽거나, 해당 패킷이 웹 요청인지 비디오 스트림인지 파일 전송인지 이해하지 않습니다.
Layer 3에서는 IP 목적지만 중요합니다. 라우터는 패킷을 한 홉씩 대상 네트워크를 향해 전달합니다.
라우팅 테이블
여러 경로가 일치할 수 있습니다. 라우터는 가장 구체적인 네트워크 — 가장 긴 프리픽스 — 를 선택합니다.
- 라우팅 테이블은 목적지 네트워크를 다음 홉 라우터에 매핑합니다.
- 패킷이 도착하면 라우터는 가장 잘 일치하는 네트워크 항목을 찾습니다.
- 라우터는 longest-prefix 로직을 사용해 가장 구체적인 일치를 우선합니다.
상세정보
라우팅 테이블은 본질적으로 의사결정 차트입니다. 각 항목은 이렇게 말합니다: 목적지가 이 네트워크에 속하면, 이 다음 홉으로 전달하라.
패킷이 도착하면 라우터는 목적지 IP 주소를 테이블에 있는 모든 알려진 네트워크 항목과 비교합니다.
여러 항목이 일치하면 라우터는 가장 구체적인 항목을 선택합니다. 이를 longest-prefix match라고 합니다. 개념적으로, 이는 더 작고 더 정확한 네트워크를 설명하는 경로가 더 넓은 경로보다 우선된다는 뜻입니다.
예를 들어, 하나의 경로가 조직 전체를 포함하고 다른 경로가 특정 부서의 서브넷을 포함한다면, 라우터는 더 정확한 경로를 선택합니다. 이렇게 하면 라우팅이 정확하고 효율적으로 유지됩니다.
패킷이 인터넷을 가로질러 이동하는 방식
- 패킷은 송신자에서 수신자로 직접 이동하는 것이 아니라 여러 라우터를 거칩니다.
- 각 라우터는 패킷을 목적지 네트워크에 한 단계 더 가깝게 전달합니다.
- 전체 경로는 여러 독립적인 라우팅 결정의 결과로 형성됩니다.
상세정보
뉴욕에 있는 클라이언트가 캘리포니아에 있는 서버로 요청을 보낸다고 생각해 보세요.
패킷은 먼저 클라이언트 장치를 떠나 로컬 라우터(보통 가정이나 사무실의 게이트웨이)에 도달합니다. 그다음에는 인터넷 서비스 제공업체(ISP)의 네트워크로 들어갑니다.
ISP 내부에서 패킷은 대량의 트래픽을 처리하도록 설계된 더 큰 백본 라우터들을 거쳐 이동합니다. 이 과정에서 여러 중간 라우터를 지나 지역 및 국가 네트워크를 횡단할 수 있습니다.
결국 패킷은 서버의 IP 주소를 소유한 목적지 네트워크에 도달합니다. 마지막 라우터가 이를 서버 자체로 전달합니다.
어떤 단일 라우터도 전체 여정을 알고 있지는 않습니다. 각 라우터는 다음에 가야 할 최선의 한 단계만 알고 있습니다.
TTL(Time To Live)이란 무엇인가?
- TTL은 IP 헤더에 있는 필드로, 처음에 정해진 숫자 값으로 시작합니다.
- 각 라우터는 모든 홉마다 TTL을 1씩 감소시킵니다.
- TTL이 0이 되면 패킷은 폐기됩니다.
상세정보
TTL (Time To Live)은 모든 IP 패킷에 내장된 안전 장치입니다.
패킷이 생성되면 초기 TTL 값이 할당됩니다(일반적으로 운영 체제에 따라 64 또는 128). 패킷이 라우터를 지날 때마다 해당 라우터는 TTL을 1씩 줄입니다.
TTL이 패킷이 목적지에 도착하기 전에 0이 되면, 라우터는 이를 폐기하고 보통 오류 메시지를 다시 보냅니다.
이 메커니즘은 무한 라우팅 루프를 방지합니다. 라우터 설정이 잘못되었거나 일시적으로 루프가 형성되더라도, TTL이 결국 만료되도록 보장하므로 패킷이 영원히 순환할 수 없습니다.
TTL이 없다면 라우팅 오류가 대역폭을 무한히 소모하고 네트워크의 큰 부분을 불안정하게 만들 수 있습니다.
일반적인 네트워크 계층 장애
- 잘못된 목적지 IP는 “no route to host”를 유발할 수 있습니다.
- 라우팅 테이블 설정 오류는 트래픽을 잘못된 다음 홉으로 보낼 수 있습니다.
- TTL이 목적지에 도달하기 전에 만료되면 패킷이 드롭될 수 있습니다.
상세정보
패킷이 잘못된 IP나 존재하지 않는 네트워크로 주소 지정되면, 라우터는 유효한 경로를 찾을 수 없습니다. 그 결과 애플리케이션 계층이 관여하기도 전에 실패가 발생합니다.
라우팅 테이블 설정 오류도 또 다른 흔한 원인입니다. 라우터가 트래픽을 잘못된 다음 홉으로 보내도록 설정되어 있으면, 패킷이 잘못 전달되거나 완전히 유실될 수 있습니다.
TTL 만료도 패킷 드롭의 원인이 될 수 있습니다. 패킷이 너무 많은 홉을 지나가면 — 보통 비효율적인 라우팅이나 루프 때문에 — 도착하기 전에 폐기됩니다.
더 심각한 장애는 네트워크 분할로, 장애나 물리적 링크 실패로 인해 네트워크의 두 구간이 서로 연결되지 않는 상태를 말합니다. 이 경우에는 아예 경로가 존재하지 않습니다.
네트워크 계층에서 장애란 결국 한 가지를 의미합니다: 패킷을 목적지로 전달할 수 없다는 것입니다.
IP vs TCP 책임
TCP는 전달을 모니터링하고 손실된 세그먼트를 다시 보냅니다.
IP는 최선형으로 패킷을 전달합니다. 손실된 패킷은 여기서 복구되지 않습니다.
- IP는 도착이나 순서에 대한 보장 없이 best-effort 방식으로 전달합니다.
- IP는 손실된 패킷을 재전송하지 않으며 혼잡을 관리하지도 않습니다.
- TCP는 확인 응답과 재전송을 통해 IP 위에 신뢰성을 구축합니다.
상세정보
IP는 네트워크 계층에서 동작하며, 소스에서 목적지로 패킷을 이동시키는 데만 집중합니다. 패킷이 도착하는지, 한 번만 도착하는지, 또는 올바른 순서로 도착하는지는 보장하지 않습니다.
혼잡이나 라우팅 문제로 인해 패킷이 손실되더라도 IP는 이를 복구하지 않습니다. 단지 best-effort 기준으로 전달을 시도할 뿐입니다.
TCP는 IP 위의 전송 계층에서 동작합니다. 연결을 설정하고, 세그먼트에 시퀀스 번호를 할당하며, 확인 응답을 기다리고, 필요할 때 데이터를 재전송합니다.
TCP는 또한 순서 있는 전달을 보장하고 흐름 제어와 혼잡 제어를 관리합니다. 한마디로, IP는 패킷을 전달하고 TCP는 그 패킷들을 신뢰할 수 있는 대화로 바꿉니다.
IP는 상태를 유지하지 않음
- IP는 패킷 사이의 세션 또는 연결 상태를 유지하지 않습니다.
- 같은 애플리케이션 요청에 속하더라도 각 패킷은 독립적으로 라우팅됩니다.
- 네트워크 계층에서는 패킷 순서가 보장되지 않습니다.
상세정보
IP는 본질적으로 상태를 유지하지 않습니다. 라우터는 대화, 세션, 또는 애플리케이션 컨텍스트를 추적하지 않습니다.
패킷이 라우터에 도착하면, 라우터는 목적지 IP 주소만 확인하고 라우팅 테이블에 따라 전달합니다. 이전 패킷이 어디로 갔는지, 또는 이전 패킷이 성공했는지는 기억하지 않습니다.
이 때문에 같은 요청에 속한 패킷들도 인터넷을 통해 서로 다른 경로를 사용할 수 있습니다. 패킷이 순서대로 도착하지 않을 수도 있고, 일부는 완전히 드롭될 수도 있습니다.
이러한 상태 비저장 설계는 라우터를 빠르고 확장 가능하게 만듭니다. 모든 라우터가 연결별 메모리를 유지한다면 전 세계 인터넷은 훨씬 더 느리고 복잡해질 것입니다.
그 대신 신뢰성과 순서 보장은 IP 자체가 아니라 상위 계층에서 처리해야 합니다.
질문 섹션
1 / 5