네트워크와 계층화 - 인터넷은 왜 층으로 나뉘었나
거대한 통신 문제를 어떻게 나눌 것인가? 패킷 교환이라는 선택, 그리고 각 계층이 자기 책임만 지도록 만든 계층화 설계.
들어가며
이 시리즈는 데이터가 케이블을 떠나 브라우저 화면에 도달하기까지의 과정을 계층을 따라 올라가며 살펴본다. 핵심 질문은 하나다: 거대한 통신 문제를 어떻게 나눌 것인가.
첫 번째 편에서는 인터넷의 두 가지 근본 설계, 패킷 교환과 계층화를 본다.
회선 교환과 패킷 교환
전통적인 전화망은 회선 교환(circuit switching) 방식이다. 통화가 연결되면 두 사람 사이의 회선이 통화가 끝날 때까지 독점적으로 점유된다. 품질은 보장되지만, 말을 하지 않는 순간에도 회선은 낭비된다.
인터넷은 패킷 교환(packet switching) 을 택했다. 데이터를 패킷(packet) 이라는 작은 조각으로 쪼개고, 각 패킷이 독립적으로 목적지를 찾아가게 한다. 회선을 독점하지 않으므로 하나의 경로를 수많은 통신이 공유할 수 있고, 중간 경로에 장애가 생겨도 다른 경로로 우회할 수 있다.
물론 공짜는 아니다. 패킷은 유실될 수 있고, 중복되거나 순서가 뒤바뀌어 도착할 수도 있다. 이 문제를 누가 책임질 것인가가 시리즈 전체를 관통하는 질문이 된다.
프로토콜: 통신의 규약
서로 다른 제조사의 장비, 서로 다른 운영체제가 통신하려면 양쪽이 합의한 규칙이 필요하다. 이 규칙이 프로토콜(protocol) 이다. 메시지의 형식은 무엇인지, 어떤 순서로 주고받는지, 오류가 나면 어떻게 하는지를 정의한다. 객체지향에서 인터페이스가 객체 간의 계약을 정의하듯, 프로토콜은 통신 주체 간의 계약을 정의한다.
계층화: 문제를 나누는 방법
“한국의 노트북에서 미국의 서버로 사진을 보낸다”는 문제를 통째로 풀려고 하면 너무 복잡하다. 전기 신호 변환, 같은 네트워크 안의 전달, 네트워크 사이의 경로 결정, 유실 복구, 응용 데이터의 해석까지 전부 한 덩어리가 된다.
계층화(layering) 는 이 문제를 역할별로 쪼갠다. 각 계층은 아래 계층이 제공하는 서비스를 사용하고, 위 계층에 자신의 서비스를 제공한다. 그리고 인접 계층과는 약속된 경계를 통해서만 상호작용한다. 덕분에 한 계층의 구현이 바뀌어도(예: 유선 Ethernet에서 Wi-Fi로) 나머지 계층은 영향을 받지 않는다.
OSI 7계층과 TCP/IP 4계층
계층 모델로는 두 가지가 자주 언급된다. OSI 7계층은 표준화를 위해 만들어진 참조 모델이고, TCP/IP 4계층은 실제 인터넷 구현에서 출발한 실용적인 모델이다.
| TCP/IP 4계층 | 대응하는 OSI 계층 | 역할 | 대표 프로토콜 |
|---|---|---|---|
| 응용 (Application) | 응용, 표현, 세션 (7, 6, 5) | 응용 프로그램 간의 데이터 교환 규약 | HTTP, DNS |
| 전송 (Transport) | 전송 (4) | 프로세스 간 통신, 신뢰성 | TCP, UDP |
| 인터넷 (Internet) | 네트워크 (3) | 호스트 간 주소 지정과 경로 결정 | IP, ICMP |
| 링크 (Link) | 데이터링크, 물리 (2, 1) | 같은 네트워크 안의 실제 전송 | Ethernet, Wi-Fi |
이 시리즈는 TCP/IP 4계층을 기준으로, 가장 아래의 링크 계층부터 위로 올라간다.
캡슐화: 계층을 통과하는 방법
데이터가 송신될 때는 응용 계층에서 시작해 아래로 내려가며, 각 계층이 자신의 헤더(header) 를 덧붙인다. 이를 캡슐화(encapsulation) 라고 한다.
응용: [ HTTP 메시지 ]
전송: [ TCP 헤더 | HTTP 메시지 ] ← 세그먼트
인터넷: [ IP 헤더 | TCP 헤더 | HTTP 메시지 ] ← 패킷
링크: [ Eth | IP 헤더 | TCP 헤더 | HTTP 메시지 | FCS ] ← 프레임
수신 측에서는 정확히 역순으로 각 계층이 자신의 헤더만 해석하고 제거하며 위로 전달한다. TCP는 Ethernet 헤더의 내용을 모르고, Ethernet은 HTTP 메시지의 내용을 모른다. 서로의 영역을 모른다는 것이 계층화의 약점이 아니라 핵심이다.
요약
| 계층 | 전달 단위 | 주소 | 책임 범위 |
|---|---|---|---|
| 응용 | 메시지 (message) | - | 응용 간 대화 |
| 전송 | 세그먼트 (segment) | 포트 | 프로세스에서 프로세스 |
| 인터넷 | 패킷 (packet) | IP 주소 | 호스트에서 호스트 |
| 링크 | 프레임 (frame) | MAC 주소 | 한 홉(hop) |
핵심은 이것이다.
인터넷은 패킷 교환 위에 세워졌고, 각 계층은 자기 책임만 지며 인접 계층과는 약속된 경계로만 만난다.
다음 편 예고
다음 편에서는 가장 아래의 링크 계층부터 본다. 같은 네트워크 안에 있는 두 장비는 서로를 어떻게 찾아내고, 프레임은 어떻게 정확한 상대에게만 도착하는가?