Aggiornato 1 mese fa
네트워크 계층은 패킷이 집을 떠나는 법을 배우는 곳입니다.
2계층은 이웃 간의 대화를 처리합니다 — 같은 케이블이나 무선 채널을 공유하는 장치들 사이의 통신입니다. 하지만 도쿄에 있는 서버나 도시 반대편에 있는 친구의 컴퓨터에 접속하려면 어떻게 해야 할까요? 그러려면 네트워크를 건너야 합니다. 여러 네트워크를. 서로 다른 회사가 소유하고, 서로 다른 기술을 사용하며, 당신의 존재를 한 번도 들어본 적 없는 라우터들이 줄줄이 연결된 네트워크들을요.
이것이 3계층이 가능하게 만드는 일입니다. 고립된 네트워크들을 인터넷으로 탈바꿈시키는 계층이죠.
3계층이 해결하는 문제
초창기 네트워킹 시절을 상상해 보세요. 한 사무실에는 이더넷 네트워크가 있습니다. 다른 사무실에도 이더넷 네트워크가 있습니다. 한 대학교에는 토큰 링 네트워크가 있습니다. 어느 정부 연구소에는 전혀 다른 무언가가 있습니다.
각 네트워크는 내부적으로는 잘 작동합니다. 하지만 서로 대화할 수 없습니다. 각기 다른 주소 체계, 다른 프레임 형식, 다른 전제를 사용합니다. 고립된 섬이나 다름없습니다.
네트워크 계층은 이런 차이들을 추상화하는 공통 언어를 만들어냅니다. 이 계층이 제공하는 것:
- 전역 주소: 모든 네트워크에 걸쳐 각 장치를 고유하게 식별
- 라우팅: 서로 연결된 네트워크들의 미로를 통과하는 경로를 찾아냄
- 공통 패킷 형식: 어떤 네트워크든 운반할 수 있는 형식
이 추상화가 인터넷을 가능하게 합니다. 패킷은 자신이 광섬유 케이블을 통해 이동하는지, 위성 링크를 타는지, 아니면 누군가의 가정용 Wi-Fi를 통해 이동하는지 알 필요가 없습니다. IP 주소와 목적지만 있으면 됩니다.
IP 주소: 전 세계에서 통하는 신원
MAC 주소는 로컬 네트워크에서 여러분을 식별합니다. IP 주소는 인터넷에서 여러분을 식별합니다.
IPv4는 32비트 주소를 사용하며, 점으로 구분된 네 개의 숫자로 표기합니다:
각 숫자는 8비트(0~255)를 나타내며, 약 43억 개의 주소를 제공합니다. 1980년대에는 충분해 보였습니다. 하지만 그렇지 않았습니다.
IPv6는 128비트 주소를 사용하며, 16진수로 표기합니다:
이는 3.4×10³⁸개에 달하는 주소를 제공합니다 — 지금까지 살았던 모든 인간에게 수십억 개씩 나눠줘도 남을 만큼 방대한 양입니다. 절대 부족해지지 않을 것입니다.
공인 주소와 사설 주소의 분리
모든 장치가 전 세계적으로 고유한 주소를 가질 필요는 없습니다. 여러분의 노트북, 스마트폰, 스마트 온도 조절기 — 이 모든 것들은 가정용 라우터의 단일 공인 IP 주소 뒤에 숨어 있습니다.
사설 주소 범위(192.168.x.x나 10.x.x.x 등)는 지구상의 모든 가정과 사무실에서 재사용될 수 있습니다. 라우터의 NAT(네트워크 주소 변환)가 이러한 사설 주소와 하나의 공인 주소 사이를 변환합니다. IPv4의 주소 부족에도 불구하고 수십억 개의 장치가 인터넷을 공유할 수 있는 이유가 바로 이것입니다.
라우팅이 실제로 작동하는 방식
google.com에 패킷을 보낼 때, 그 패킷은 순간이동하지 않습니다. 라우터를 거치고 또 거치며, 각 라우터는 다음에 어디로 보낼지 결정합니다.
각 라우터에서 일어나는 일:
- 패킷이 도착합니다
- 라우터가 목적지 IP 주소를 확인합니다
- 라우터가 라우팅 테이블을 참조합니다: "이 목적지로 가는 패킷을 어디로 보낼까?"
- 라우터가 패킷을 다음 홉 방향으로 전달합니다
- 목적지에 도달할 때까지 반복합니다
어떤 라우터도 전체 경로를 알지 못합니다. 각 라우터는 다음 단계만 알 뿐입니다. 낯선 도시에서 길을 물어볼 때 "저 길로 가다가 다시 물어보세요"라는 답을 듣는 것과 같습니다. 그래도 어떻게든 목적지에 도착하게 됩니다.
라우팅 테이블
라우팅 테이블은 목적지와 다음 홉의 목록입니다. 간략한 예시:
| 목적지 | 다음 홉 |
|---|---|
| 10.0.0.0/8 | Router A |
| 172.16.0.0/16 | Router B |
| 0.0.0.0/0 | Router C |
마지막 항목이 기본 경로입니다 — 더 구체적으로 일치하는 항목이 없을 때 패킷을 보내는 곳입니다. 대부분의 가정용 장치에서는 라우터를 가리킵니다. 라우터에서는 ISP를 가리킵니다.
가장 긴 프리픽스 일치
여러 경로가 일치할 때는 가장 구체적인 것이 우선합니다. 라우팅 테이블에 10.0.0.0/8과 10.1.2.0/24 항목이 모두 있다면, 10.1.2.50으로 가는 패킷은 더 구체적이기 때문에 /24 경로를 사용합니다.
이를 통해 계층적 라우팅이 가능해집니다. 인터넷의 핵심 라우터들은 여러분의 가정 네트워크를 구체적으로 알 필요가 없습니다 — ISP의 주소 블록에 대한 패킷을 어느 방향으로 보낼지만 알면 됩니다.
TTL: 패킷의 수명
이상한 사실이 하나 있습니다: 모든 패킷은 태어나는 순간부터 죽어가고 있습니다.
TTL(Time To Live) 필드는 보통 64나 128로 시작합니다. 패킷을 처리하는 모든 라우터가 이 값을 하나씩 줄입니다. TTL이 0이 되면 패킷은 폐기됩니다.
가혹해 보이지만, 이는 중요한 문제를 해결합니다. 라우팅 테이블에는 버그가 있을 수 있습니다. 네트워크가 잘못 구성될 수 있습니다. TTL이 없다면, 라우팅 루프에 빠진 패킷이 영원히 순환하고, 더 많은 패킷이 합류하여, 불사의 좀비 트래픽의 무게로 네트워크가 결국 붕괴될 것입니다.
TTL은 traceroute가 작동하는 원리이기도 합니다. TTL=1인 패킷을 보내고, 그다음 TTL=2, TTL=3을 보냅니다. 각 패킷은 다른 라우터에서 소멸하고, 그 라우터는 오류 메시지를 돌려보냅니다. 이 오류 응답들을 모아 패킷이 이동하는 경로를 지도화할 수 있습니다.
단편화: 작은 파이프를 위해 패킷을 쪼개기
네트워크마다 최대 패킷 크기(MTU — 최대 전송 단위)가 다릅니다. 이더넷은 보통 1500바이트를 지원합니다. 더 많이 지원하는 네트워크도 있고, 더 적게 지원하는 네트워크도 있습니다.
라우터가 다음 네트워크의 MTU보다 큰 패킷을 전달해야 할 때, 두 가지 선택이 있습니다: 패킷을 더 작은 조각으로 단편화하거나, 거부하거나.
단편화는 작동하지만 비용이 큽니다. 어떤 단편이라도 손실되면 원래 패킷 전체를 재전송해야 합니다. 수신 측은 나머지 단편을 기다리는 동안 부분적인 패킷을 메모리에 보관해야 합니다.
현대 시스템은 경로 MTU 탐색을 사용하여 단편화를 피합니다. "단편화 금지" 플래그를 설정한 패킷을 보냅니다. 라우터가 단편화해야 할 상황이 되면 오류 메시지를 돌려보냅니다. 발신자는 종단 간에 작동하는 크기를 찾을 때까지 더 작은 패킷으로 다시 시도합니다.
ICMP: 네트워크의 신경계
ICMP(인터넷 제어 메시지 프로토콜)는 네트워크가 문제를 보고하고 질문에 답하는 방식입니다. 3계층 내의 진단 계층입니다.
오류 메시지:
- "목적지 도달 불가" — 패킷을 전달할 수 없음
- "시간 초과" — TTL이 0에 도달함 (traceroute가 사용하는 방식)
- "단편화 필요" — 패킷이 너무 크지만 단편화 금지 플래그가 설정됨
진단 메시지:
- "에코 요청"과 "에코 응답" —
ping이 호스트에 도달 가능한지 테스트하는 데 사용
서버에 ping을 보내 응답을 받으면, 여러분과 그 서버 사이에서 양방향으로 3계층이 작동하고 있음을 확인한 것입니다. ping이 실패하면 3계층 또는 그 아래 어딘가에서 문제가 생겼음을 알 수 있습니다.
서브넷팅: 주소 공간 나누기
서브넷팅은 네트워크를 더 작은 네트워크들로 나눕니다. /24 네트워크(256개 주소)가 있다면, 두 개의 /25(각 128개), 네 개의 /26(각 64개)으로 분할할 수 있습니다.
왜 서브넷을 나눌까요?
- 조직화: 부서나 용도에 따라 다른 서브넷 사용
- 보안: 방화벽으로 서브넷 간 트래픽 제어
- 효율성: 브로드캐스트 트래픽이 서브넷 안에 머물게 됨
- 규모: 작은 네트워크는 관리하기 쉬움
서브넷 마스크는 IP 주소의 어느 부분이 네트워크를 식별하고 어느 부분이 호스트를 식별하는지 장치에 알려줍니다. 장치는 이를 사용하여 목적지가 로컬인지(같은 서브넷이면 2계층을 통해 직접 통신) 원격인지(다른 서브넷이면 라우터로 전송)를 결정합니다.
3계층에 속하는 것들
IP (인터넷 프로토콜): 핵심 프로토콜 — 주소 체계와 패킷 형식
ICMP: 오류 보고 및 진단
라우팅 프로토콜 (RIP, OSPF, BGP): 라우터들이 서로 경로 정보를 주고받는 방법
IPsec: IP 패킷의 암호화 및 인증
라우터: 주로 이 계층에서 작동하며, IP 주소를 기반으로 네트워크 간 패킷을 전달하는 장치
3계층이 고장났을 때
흔히 발생하는 문제들:
- 호스트로 가는 경로 없음: 라우팅 테이블이 목적지에 도달하는 방법을 모름
- TTL 초과: 패킷이 전송 중에 소멸 (라우팅 루프 가능성)
- 목적지 도달 불가: 목적지 네트워크나 호스트가 존재하지 않거나 응답하지 않음
- MTU 문제: 패킷이 너무 크고 단편화 실패
- IP 충돌: 같은 IP 주소를 가진 두 장치가 예측 불가능한 동작을 유발
진단 순서: 기본 게이트웨이에 ping할 수 있나요? (로컬 3계층 테스트.) 8.8.8.8 같은 공인 IP에 ping할 수 있나요? (인터넷으로의 라우팅 테스트.) 호스트명으로 ping할 수 있나요? (3계층 위에 있는 DNS 테스트.)
각 단계는 문제가 어디에 있는지를 좁혀줍니다.
추상화의 아름다움
3계층의 탁월함은 그것이 감추는 것에 있습니다. 패킷은 자신이 광섬유 케이블로 대양을 건너는지, 위성에서 반사되는지, 아니면 셀룰러 기지국들의 메시 네트워크를 통해 이동하는지 알지 못합니다. 네트워크 계층은 이 모든 것을 단순한 모델로 추상화합니다: 주소와 경로.
이 추상화 덕분에 인터넷은 끝없이 성장할 수 있고, 새로운 네트워크 기술이 기존 것들을 망가뜨리지 않고 추가될 수 있으며, 여러분의 스마트폰에서 보낸 패킷이 매 순간 바뀌는 경로를 통해 다른 대륙의 데이터 센터에 있는 서버에 닿을 수 있습니다.
2계층은 이웃을 연결합니다. 3계층은 세계를 연결합니다.
네트워크 계층에 관해 자주 묻는 질문들
MAC 주소와 IP 주소의 차이점은 무엇인가요?
MAC 주소는 로컬 네트워크 세그먼트에서 장치를 식별합니다 — 하드웨어에 새겨져 있으며 이웃 간의 직접 통신에서만 의미가 있습니다. IP 주소는 인터넷 전체에 걸쳐 장치를 전역적으로 식별합니다. MAC 주소를 건물 내 호실 번호(그 건물 안에서만 의미 있음)라고 생각하고, IP 주소를 전체 우편 주소(전 세계 어디서든 통함)라고 생각해 보세요.
왜 IPv4와 IPv6가 모두 필요한가요?
IPv4의 43억 개 주소가 고갈되었습니다. IPv6의 주소는 사실상 무한에 가까워 고갈될 일이 없습니다. 전환이 느린 이유는 모든 장치, 라우터, 서비스가 IPv6를 지원해야 하고, IPv4는 NAT 덕분에 여전히 작동하기 때문입니다. 두 프로토콜이 공존하며, IPv6 도입은 꾸준히 증가하고 있습니다.
내 패킷은 인터넷을 어떻게 가로질러 찾아가나요?
어떤 단일 장치도 전체 경로를 알지 못합니다. 패킷은 라우터를 거치고 또 거치며, 각 라우터는 라우팅 테이블을 참조하여 다음 홉을 결정합니다. 각 주자가 다음 바톤 전달 지점만 아는 릴레이 경주와 같습니다. BGP 같은 라우팅 프로토콜이 라우터들 사이에서 도달 가능성 정보를 공유하여 이러한 테이블이 최신 상태를 유지합니다.
TTL이 0이 되면 어떻게 되나요?
라우터가 패킷을 폐기하고 발신자에게 ICMP "시간 초과" 메시지를 보냅니다. 이는 패킷이 라우팅 루프에서 영원히 순환하는 것을 방지합니다. 또한 traceroute가 작동하는 원리이기도 합니다 — 점점 커지는 TTL 값의 패킷을 의도적으로 보내고, 경로상의 각 라우터에서 돌아오는 오류 메시지를 수집합니다.
왜 공인 IP 주소 대신 사설 IP 주소를 갖고 있나요?
IPv4 주소 부족 때문입니다. 모든 장치에 할당할 공인 주소가 충분하지 않아서, 대부분의 네트워크는 내부적으로 사설 주소를 사용하고 NAT를 통해 단일 공인 주소를 공유합니다. 라우터는 인터넷과 통신할 때 여러분의 사설 주소(192.168.1.100 같은)와 공인 주소 사이를 변환합니다.
Questa pagina è stata utile?