Chapter 01컴퓨터 네트워크와 인터넷

유튜브 영상이 끊김 없이 흘러나오고, 카톡이 1초 안에 친구 폰으로 도착하고, 게임 핑이 30ms를 찍는 이 모든 과정이 사실은 꽤나 정신 나간 일입니다. 내 노트북에서 출발한 비트(bit) 한 무더기가 공유기를 거쳐 통신사의 광케이블을 타고, 어느 데이터센터의 서버까지 갔다가, 다시 같은 거리를 거꾸로 돌아오는 것 — 그것도 매번 수십 개의 라우터(router)를 경유하면서요. 이걸 0.x초 안에 해낸다는 게 솔직히 좀 사기입니다.

1장의 목표는 이 마법을 마법이 아니게 만드는 거예요. 인터넷이라는 거대한 기계를 부분 부분 분해해서, "아하, 이렇게 굴러가는구나" 정도의 큰 그림을 머릿속에 박아 넣는 게 1장의 임무입니다. 호스트가 뭐고 패킷이 뭔지부터, 왜 우리 집 인터넷은 광이 좋고 LTE는 가끔 답답한지, 왜 어떤 날은 게임이 렉이 걸리고 어떤 날은 멀쩡한지 — 그 모든 질문이 결국 같은 몇 가지 개념으로 풀린다는 사실을 보여드릴게요. 책 한 권의 첫걸음이지만, 이 한 장만 제대로 머리에 들어가도 나머지 7장이 훨씬 수월해집니다.

1.1 인터넷이라는 게 뭐길래

"인터넷이 뭐야?"라는 질문은 사실 두 가지 답이 있어요. 하나는 부품 관점, 또 하나는 서비스 관점. 부품 관점에서 보면 인터넷은 수십억 개의 컴퓨터가 서로 연결된 거대한 네트워크의 네트워크입니다. 서비스 관점에서 보면 분산 애플리케이션(웹, 메일, 게임, 스트리밍)을 굴리는 인프라고요. 1장에서는 우선 부품을 한번 펼쳐 봅시다.

호스트, 패킷, 그리고 라우터

인터넷에 직접 연결돼서 메시지를 주고받는 모든 기기를 호스트(host) 또는 엔드 시스템(end system)이라고 불러요. 노트북, 데스크탑, 스마트폰은 물론이고 스마트 TV, 카페 키오스크, 라즈베리파이 같은 작은 보드, 심지어 무선 도어락까지. 핵심은 "이 기기가 통신의 출발점이자 도착점"이라는 점입니다.

호스트가 다른 호스트한테 뭔가를 보낼 때, 데이터를 한 덩어리로 쭉 보내지 않고 잘게 쪼개요. 이 작은 덩어리 하나하나를 패킷(packet)이라고 부릅니다. 비유하자면 택배 시스템과 똑같아요. 큰 가구를 통째로 트럭에 못 싣잖아요. 분해해서, 각 부품을 박스에 담고, 박스마다 송장 붙이고, 트럭에 실어 보냅니다. 받는 사람이 도착한 박스를 다시 조립해서 가구를 완성하죠. 패킷도 마찬가지로 헤더(header)라는 송장과 페이로드(payload)라는 실제 내용물로 구성돼요.

패킷이 출발지 호스트에서 목적지 호스트까지 가는 길에 만나는 분류 센터가 라우터입니다. 라우터는 들어온 패킷의 헤더를 보고 "어, 이건 저쪽으로 가야겠네" 하면서 적절한 출구 회선으로 던져 줘요. 하나의 패킷이 종단까지 가려면 보통 십수 개의 라우터를 거치고, 라우터마다 자기만의 라우팅 테이블이 있어서 다음 홉(next hop)을 결정합니다. 비슷한 일을 하는 친구로 링크 계층 스위치(link-layer switch)도 있는데 이건 좀 더 작은 동네(LAN) 안에서만 활동해요. 자세한 건 5장에서 다시 만나게 됩니다.

여기서 한 가지 강조하고 싶은 건, 라우터는 의외로 우리가 보낸 데이터의 "내용"엔 관심이 없다는 점이에요. 라우터 입장에서 패킷의 페이로드는 그냥 전달해야 할 화물일 뿐, 그 안이 카톡인지 유튜브인지는 아무 상관이 없습니다. 이 무관심이 바로 인터넷이 빠르게 굴러가는 비밀이기도 하고요. 만약 라우터가 매번 패킷 안을 들여다보면서 "이건 무슨 트래픽이지?"를 판단해야 한다면, 1초에 수천만 패킷을 처리하는 백본은 도저히 버틸 수가 없어요.

[내 노트북] [유튜브 서버] 호스트 호스트 | | WiFi 10G 이더넷 | | [공유기]---[모뎀]---[ISP 라우터]===[ISP 라우터]---[CDN 엣지]---[데이터센터] (KT/SK/LG) (Tier-1 백본) | [IXP] ← 다른 ISP들과 만나는 환승역 | (다른 대륙으로)

ISP라는 사다리

호스트 혼자서는 인터넷에 닿을 수 없어요. 누군가 우리를 "인터넷"이라는 망에 끼워줘야 하죠. 그 일을 해주는 회사가 ISP(Internet Service Provider, 인터넷 서비스 제공자)입니다. 한국 기준으로는 KT, SK브로드밴드, LG U+ 같은 회사들이고, 모바일에선 이동통신사가 ISP 역할을 겸해요.

ISP끼리도 또 서로 연결돼야 해요. 그래야 KT 가입자가 SK 가입자에게, 한국 사용자가 미국 서버에 닿을 수 있죠. 이 ISP들의 ISP 같은 큰 형님들이 있어서, 결국 인터넷은 작은 동네 ISP부터 대륙 간 백본을 굴리는 글로벌 ISP까지 이어지는 사다리꼴 구조가 됩니다. 이 계층 구조는 1.3절에서 좀 더 자세히 보고요.

프로토콜이라는 메타 질문

이쯤에서 메타한 질문 하나. "두 기기가 통신한다"는 건 정확히 뭘까요? 그냥 비트를 던진다고 통신이 되진 않아요. 받는 쪽이 그 비트를 어떻게 해석할지 미리 합의가 돼 있어야 합니다. 이 합의를 프로토콜(protocol)이라고 불러요.

프로토콜은 세 가지를 정의합니다. 첫째 형식(format): 메시지가 어떤 비트 배열로 생겼는지. 둘째 순서(order): 누가 먼저 말하고 누가 응답하는지. 셋째 의미와 행동(semantics & actions): 메시지를 받았을 때 뭘 해야 하는지. 사람이 인사를 주고받을 때 "안녕하세요"에 "안녕하세요"로 답하는 게 자연스럽듯, 컴퓨터도 "TCP SYN을 받으면 SYN-ACK으로 답한다" 같은 식의 사회적 약속이 다 정해져 있어요.

잠깐

이 책에서 "프로토콜"이라는 단어가 수백 번 나올 거예요. 매번 거창한 게 아니라, 그냥 "이런 모양으로 메시지 주고받자는 약속"이라고 가볍게 이해하면 됩니다. HTTP, TCP, IP, DNS, BGP, ARP 다 같은 부류예요. 이름만 다르지 본질은 약속입니다.

1.2 네트워크의 가장자리

네트워크를 한 발 떨어져서 보면 두 부분으로 나눌 수 있어요. 호스트들이 옹기종기 모여 있는 가장자리(network edge)와, 패킷을 실어 나르는 라우터들의 숲인 코어(network core). 이번 절은 가장자리 이야기입니다. 코어는 1.3에서 다룰게요.

엣지 호스트와 액세스 네트워크

가장자리에 있는 호스트는 그냥 떠 있을 수 없어요. 코어에 닿기 위한 첫 회선이 필요한데, 이걸 액세스 네트워크(access network)라고 부릅니다. "내 기기가 인터넷 백본까지 도달하는 첫 한 구간"이라고 이해하면 편해요. 보통 ISP가 깔아 둔 회선을 임대해서 쓰죠.

액세스 네트워크는 누가 어떻게 쓰느냐에 따라 종류가 달라집니다. 크게 가정용, 회사용, 모바일 세 그룹으로 나눠 볼게요.

가정용: 광·케이블·DSL

한국 가정에서 가장 흔한 건 FTTH(Fiber To The Home, 광 가입자망)예요. 광케이블이 집 안 ONT(Optical Network Terminal)까지 들어와서, 거기서 이더넷이나 와이파이로 호스트와 연결되는 구조죠. 대역폭(bandwidth)이 넉넉하고 지연도 짧아서, 솔직히 말하자면 한국은 가정용 회선 면에서 세계적으로 사기 캐릭터입니다.

광이 들어오기 전에는 케이블 모뎀(cable modem)DSL(Digital Subscriber Line)이 주력이었어요. 케이블은 동축 케이블 TV망을 빌려 쓰는 방식, DSL은 옛날 전화선의 고주파 대역을 활용하는 방식이에요. 두 방식 모두 한 회선에 여러 가구가 묶여 있어서 저녁에 다 같이 넷플릭스 보면 느려지는 그 유명한 현상이 발생하기도 합니다. 요즘 한국에선 거의 광으로 갈아 탔지만, 해외 일부 지역은 아직도 DSL/케이블이 주력이에요.

회사·학교: 이더넷과 와이파이

오피스, 캠퍼스, 카페 안에서는 이더넷(Ethernet)와이파이(Wi-Fi, IEEE 802.11)가 압도적입니다. 이더넷은 RJ45 케이블 한 가닥으로 호스트와 스위치를 연결하는 유선 방식. 케이블 한 줄에 1Gbps, 10Gbps 같은 대역폭을 깔끔하게 보장해요. 와이파이는 그 이더넷의 마지막 한 구간을 무선으로 바꿔놓은 거고요. 회사 건물 천장에 박혀 있는 액세스 포인트(AP)들이 사실은 다 유선으로 스위치에 묶여 있다는 것, 의외로 모르는 사람 많습니다.

와이파이가 편한 만큼 약점도 있어요. 같은 채널을 쓰는 사람이 많아지면 패킷이 충돌해서 재전송이 늘고, 벽이나 가구 때문에 신호가 약해지면 링크 속도가 자동으로 낮아집니다. 그래서 카페 와이파이는 표시상 빠른 회선에 붙어 있어도, 실제 체감 속도는 들쭉날쭉하기 마련이에요. 이런 변동성을 줄이려고 회사들은 고밀도 환경에서 채널 계획과 AP 배치에 꽤 공을 들입니다.

모바일: 4G와 5G

스마트폰이 셀룰러망에 붙으면 통신사의 기지국(base station)과 무선으로 통신해요. 4G LTE는 대체로 수십 Mbps에서 수백 Mbps, 5G는 이론상 Gbps급까지 올라가는 게 가능합니다. 다만 5G도 지연 면에선 광 가정망과 비교하면 살짝 더 길게 잡힐 때가 있어요. 무선 환경 자체가 외부 노이즈에 약하기도 하고, 한 셀에 사람이 많이 몰리면 자원 분배 때문에 느려지기도 하니까요.

모바일망의 진짜 매력은 이동성이에요. 지하철 안에서, 버스 안에서, 심지어 KTX 안에서도 호스트가 셀에서 셀로 옮겨 다니면서 끊김 없이 통신을 이어가요. 이걸 가능하게 하는 게 핸드오버(handover)와 코어망의 정교한 세션 관리인데, 이건 책 후반부에서 다시 짧게 다룹니다. 지금은 "모바일 액세스망 = 무선 + 이동성을 책임지는 인프라" 정도로 기억해 두면 충분해요.

물리 매체 한 줄 요약

액세스 네트워크 아래에 깔리는 물리 매체(physical medium)는 결국 두 분류예요. 유도형(guided) — 광섬유, 동축 케이블, 트위스트 페어 케이블처럼 비트가 정해진 통로를 따라가는 매체. 비유도형(unguided) — 와이파이, 셀룰러, 위성처럼 공기 중을 떠도는 전자기파. 같은 1Gbps 회선이라도 광섬유와 와이파이에서 비트가 겪는 인생은 꽤 다릅니다. 물리 계층 디테일은 5장에서 다시 다룰게요.

꿀팁

"우리 집 인터넷이 느려요"라고 할 때, 십중팔구는 액세스 네트워크 구간에서 답을 찾아야 해요. 공유기를 재부팅한다거나 와이파이 채널을 바꾸는 행위가 효과 있는 이유는, 진짜 병목이 백본이 아니라 우리 집 거실에서 생기기 때문입니다. 1.4절에서 이 "병목"을 좀 더 정량적으로 다뤄 볼게요.

1.3 네트워크의 코어

이번엔 라우터의 숲, 코어 이야기. 가장자리에서 출발한 패킷이 어떻게 이 숲을 헤치고 목적지까지 가는지 들여다봅시다.

패킷 스위칭 vs 회선 스위칭

두 호스트가 데이터를 주고받는 방식에는 역사적으로 두 가지 큰 학파가 있었어요. 회선 스위칭(circuit switching)패킷 스위칭(packet switching)입니다.

회선 스위칭은 전화망의 옛 방식이에요. 통화를 시작하기 전에, 두 사람 사이에 일정한 대역폭을 가진 전용 회선을 통신 시간 내내 점유해 두는 거죠. 통화 중에 아무 말도 안 해도 그 회선은 다른 사람이 못 씁니다. 좋은 점은 품질이 일정하다는 것. 나쁜 점은 자원 활용이 비효율적이라는 것.

패킷 스위칭은 정반대 철학이에요. 회선을 미리 잡아 두지 않고, 보낼 게 있을 때만 패킷에 실어서 던져요. 코어 라우터는 받은 패킷을 큐(queue)에 넣어두고 차례로 다음 홉으로 보냅니다. 저장-전송(store-and-forward)이라고 부르는 이 방식이 인터넷의 기본기예요. 여러 송신자가 같은 회선을 시간을 쪼개 같이 쓸 수 있고, 회선 활용률이 훨씬 높아집니다.

통계적 다중화의 마법

패킷 스위칭이 회선 스위칭보다 좋은 이유의 핵심은 통계적 다중화(statistical multiplexing)예요. 사용자 100명이 각자 평균 1Mbps를 쓰는데, 모두가 동시에 풀로 쓸 일은 거의 없잖아요? 회선 스위칭이라면 100명한테 각각 1Mbps씩 100Mbps를 예약해 둬야 하지만, 패킷 스위칭은 그냥 50Mbps 회선 하나만 두고 "어차피 다 같이 풀로 쓰진 않을 거야"라고 도박을 거는 거예요. 그리고 대부분의 시간엔 그 도박이 잘 먹힙니다. 단점은? 아주 가끔 모두가 동시에 통신할 때 큐가 쌓이고 지연이 튀는 것. 1.4에서 자세히 봅시다.

기준 회선 스위칭 패킷 스위칭
자원 예약 통신 시작 전 대역폭 미리 확보 예약 없음, 그때그때 큐에 들어감
회선 활용률 낮음 (안 쓸 때도 점유) 높음 (남는 자원 다 쓰임)
지연 변동성 거의 없음 큐잉에 따라 들쭉날쭉
대표 사례 전통 전화망(PSTN) 오늘날의 인터넷
실패 대응 회선이 끊기면 통화 종료 경로 우회 가능

ISP 계층 구조: Tier-1, IXP, ICP

인터넷이라는 거대한 도로망은 한 회사가 만들지 않았어요. ISP라고 불리는 수많은 사업자가 자기 영역을 쌓아 올리고, 서로 연결해서 돌아가는 구조입니다. 보통 세 단계로 분류해요.

ISP들이 매번 1:1로 회선 깔면 N제곱으로 비용이 폭발해요. 그래서 한 건물에 여러 ISP가 모여서 서로 회선을 꽂아두는 환승역, IXP(Internet Exchange Point)가 등장합니다. KINX, AMS-IX, DE-CIX 같은 게 유명한 IXP예요. 한 건물에 들어가서 라우터 한 대만 두면 거기 입주한 모든 ISP와 한 번에 친구가 될 수 있는 거죠.

그리고 요즘 빼놓을 수 없는 게 ICP(Internet Content Provider)입니다. 구글, 메타, 넷플릭스, 마이크로소프트처럼 콘텐츠를 만드는 거대 기업들이에요. 이들은 트래픽이 너무 커져서, 차라리 자기네가 직접 사설 백본을 깔고 전 세계에 데이터센터를 박아 넣는 게 싸다는 결론에 이르렀습니다. 그래서 요즘 인터넷 트래픽 통계를 보면, 사실 대부분의 비트가 ICP의 사설 망 안에서 굴러가요. 사용자가 "인터넷"을 쓴다고 느끼지만, 실제로는 구글 백본 안에서 모든 게 끝나는 경우가 흔합니다.

핵심

인터넷 = 라우터들이 패킷을 저장-전송으로 넘기는 거대한 네트워크. 이 네트워크는 한 회사가 아니라 수만 개의 ISP가 자율적으로 운영하면서, IXP에서 만나거나 직접 피어링으로 연결돼서 돌아가요. "분산된 협업"이라는 표현이 잘 어울립니다.

1.4 지연·손실·처리율

"네트워크가 느리다"고 말할 때, 사실 우리는 서너 가지 다른 현상을 한 단어로 뭉뚱그려 말하고 있어요. 정확히 따져 보면 지연(delay), 손실(loss), 처리율(throughput) 세 축이 있고, 이 절에서는 그 셋을 분리해서 보겠습니다.

한 라우터에서 일어나는 4가지 지연

패킷 한 개가 라우터 한 대를 통과할 때 겪는 지연은 네 가지로 쪼개집니다. 다 합치면 노드 지연(nodal delay)이 되고, 종단 간 지연은 경로 위 모든 라우터의 노드 지연을 다 합한 값이에요.

패킷 한 개가 라우터 한 대를 지나가는 모습 [입력 회선] ───▶ [헤더 검사: 처리 지연] ───▶ [큐: 큐잉 지연] │ ▼ [출력 회선에 밀어 넣기: 전송 지연] │ ▼ [회선 끝까지 도달: 전파 지연] │ ▼ [다음 라우터] 종단 간 지연 = (라우터마다 위 네 가지의 합) 을 모든 홉에 걸쳐 누적

트래픽 강도와 큐잉 지연

큐잉 지연을 이해하려면 트래픽 강도(traffic intensity)라는 개념이 필요해요. 평균 패킷 도착률을 a (패킷/초), 패킷 길이를 L 비트, 출력 회선 속도를 R bps라고 두면, 트래픽 강도는 La/R입니다.

버퍼는 유한하니까, La/R이 1에 가까워지면 큐잉 지연이 폭발적으로 커지다가 어느 순간 큐가 가득 차서 새로 들어온 패킷이 그냥 버려져요. 이걸 패킷 드롭(drop)이라고 합니다. 인터넷에서 패킷이 사라지는 가장 흔한 이유가 바로 큐 오버플로예요. 무선 구간에서는 신호 간섭으로 비트가 깨지는 경우도 있고요.

RTT와 처리율

실제로 우리가 체감하는 지연은 종종 RTT(Round-Trip Time, 왕복 시간)예요. 패킷이 가서 응답이 돌아오기까지 걸리는 시간. 핑(ping) 결과가 바로 이 RTT입니다. 한국 안에서는 보통 한 자리 ms, 한국-일본은 30~40ms, 한국-미국 서부는 100~200ms 정도가 흔해요.

$ traceroute www.example.org
 1  192.168.0.1                 0.8 ms   0.7 ms   0.7 ms     ← 집 공유기
 2  10.220.0.1                  4.1 ms   3.9 ms   4.0 ms     ← ISP 첫 라우터
 3  61.x.x.x  (KT 백본)         8.2 ms   8.4 ms   8.0 ms
 4  211.x.x.x (KINX/IXP)       12.1 ms  12.0 ms  12.4 ms
 5  * * *                                                    ← ICMP 응답 차단
 6  72.14.x.x (구글 백본)      28.5 ms  28.7 ms  28.6 ms
 7  142.250.x.x                30.2 ms  30.0 ms  30.4 ms     ← 목적지 근처

처리율은 또 다른 이야기예요. "1초에 몇 비트가 흐르는가"의 평균값입니다. 종단 간 처리율은 경로 위에서 가장 느린 구간 — 병목 링크(bottleneck link) — 에 의해 결정돼요. 회선 100개를 직렬로 연결해도, 그 중 하나가 1Mbps면 전체 흐름이 1Mbps에 갇힙니다. 그리고 회선 자체 용량 외에도, 같은 회선에 다른 트래픽이 같이 흘러서 실질 처리율이 더 떨어지는 경우도 흔해요.

한 가지 재미있는 건, 처리율과 지연이 늘 같은 방향으로 움직이지 않는다는 점이에요. 위성 인터넷처럼 대역폭은 넉넉한데 RTT가 500ms씩 나오는 회선도 있고, 반대로 좁고 짧은 회선도 있어요. 그래서 "회선 굵기"와 "전송 거리"는 별개로 생각하는 게 좋습니다. 큰 파일을 받을 땐 처리율이, 게임이나 화상 통화에선 지연이 더 결정적이에요.

# 간단한 처리율 직관
# end-to-end 경로:  [서버] --10G-- R1 --1G-- R2 --100M-- R3 --100M-- [내 노트북]
# 단일 흐름의 최대 처리율 ≈ min(10G, 1G, 100M, 100M) = 100Mbps
# 만약 R3-노트북 구간을 다른 가족 4명도 같이 쓴다면, 1/5 정도까지 떨어질 수 있음
주의

대역폭(=회선 용량)과 처리율(=실제로 흐르는 양)을 헷갈리지 마세요. 1Gbps 회선이라고 해서 항상 1Gbps가 흐르는 게 아니에요. 트래픽 강도, 다른 흐름과의 경쟁, TCP 혼잡 제어, 무선 신호 품질 등 여러 요인이 처리율을 깎아 먹습니다.

1.5 프로토콜 계층과 캡슐화

지금까지 보고 있는 인터넷이라는 시스템은 솔직히 너무 복잡해요. 호스트, 라우터, 회선, 무선, 광, 모바일, 그리고 위에서 굴러가는 수천 개의 애플리케이션까지. 이걸 한 덩어리의 모놀리스로 만들었다면 아마 진작에 무너졌을 겁니다. 그래서 등장한 게 프로토콜 계층(protocol layering)이에요.

왜 계층화하는가

핵심 아이디어는 단순합니다. "각 계층은 자기 일만 하고, 위·아래 계층의 사정은 신경 쓰지 않는다." 위 계층은 아래 계층이 제공하는 서비스만 쓰고, 그 안이 어떻게 굴러가는지는 묻지 않아요. 이렇게 책임을 나눠 두면 한 계층의 구현을 바꿔도 다른 계층은 영향을 안 받죠. 이더넷에서 와이파이로 갈아타도 웹 브라우저는 멀쩡히 굴러가는 이유가 이거예요.

TCP/IP 5계층

오늘날 인터넷의 표준 모델은 TCP/IP 5계층입니다. 위에서 아래로 적어 볼게요.

참고로 학교에서는 종종 OSI 7계층을 같이 가르쳐요. TCP/IP의 응용 계층을 응용/표현/세션 셋으로 더 잘게 쪼갠 모델이죠. 학술적으로는 7계층이 더 정밀하지만, 실제 인터넷은 5계층 모델로 굴러갑니다. 면접에선 둘 다 알면 무난해요.

캡슐화의 누적

각 계층은 자기만의 헤더를 메시지 앞에 붙이고 다음 계층에 넘겨요. 이걸 캡슐화(encapsulation)라고 하는데, 결과적으로 회선을 떠나는 비트 다발은 양파처럼 헤더가 겹겹이 쌓인 모양이 됩니다.

보내는 쪽 (위에서 아래로 캡슐화) 응용: [ HTTP 메시지 ] │ ▼ 전송: [ TCP 헤더 | HTTP 메시지 ] │ ▼ 네트워크: [ IP 헤더 | TCP 헤더 | HTTP 메시지 ] │ ▼ 링크: [ 이더넷 헤더 | IP 헤더 | TCP 헤더 | HTTP 메시지 | 이더넷 트레일러 ] │ ▼ 물리: 01010100 11010010 ... 비트 스트림이 회선으로 ───────────────────────────────────────────────────────── 받는 쪽 (아래에서 위로 디캡슐화) 물리: 01010100 11010010 ... │ ▼ 링크: 이더넷 헤더 떼고 → IP 패킷 │ ▼ 네트워크: IP 헤더 떼고 → TCP 세그먼트 │ ▼ 전송: TCP 헤더 떼고 → HTTP 메시지 │ ▼ 응용: [ HTTP 메시지 ] 처리

중요한 건 라우터와 호스트의 차이예요. 라우터는 보통 네트워크 계층까지만 들여다 봅니다 — IP 헤더만 보고 다음 홉을 결정하면 끝이니까요. 그 위 TCP나 HTTP는 라우터 입장에선 그냥 페이로드 안의 불투명한 비트 다발이에요. 반면 종단 호스트는 5계층을 다 거쳐서 응용 메시지를 꺼냅니다. 이 차이가 인터넷의 단순함을 만드는 핵심이고, "엣지에 똑똑함을 두고 코어는 단순하게"라는 설계 철학으로 이어져요.

꿀팁

네트워크 트러블슈팅을 할 때 "이 문제가 어느 계층에서 발생했나?"를 먼저 묻는 습관이 진짜 큰 도움이 돼요. DNS가 안 풀리면 응용 계층, 핑은 가는데 HTTPS가 안 되면 보통 전송/응용 사이의 인증서 문제, 핑조차 안 가면 네트워크/링크 계층 등 — 계층 모델은 디버깅 트리 그 자체입니다.

1.6 보안 위협 살짝 맛보기

1장 마지막은 살벌한 동네 이야기예요. 인터넷이 이렇게 개방적이고 분산적이라는 건, 똑같은 이유로 공격에도 활짝 열려 있다는 뜻이거든요. 보안 자체는 8장에서 본격적으로 다루지만, 여기서는 가장 흔한 위협 네 가지만 가볍게 짚고 가요.

멀웨어

멀웨어(malware)는 악의적인 코드의 통칭이에요. 바이러스, 웜(worm), 트로이 목마, 스파이웨어, 랜섬웨어가 다 여기 들어갑니다. 옛날엔 USB로 옮겨 다녔다면, 요즘은 대부분 네트워크를 타고 들어와요. 한 호스트가 감염되면 같은 LAN 안의 다른 호스트로 번지거나, C&C 서버로 연결해서 봇넷(botnet)의 졸병이 됩니다. 보호 대책의 첫걸음은 운영체제와 브라우저 업데이트, 그리고 출처 모를 실행 파일 안 받기입니다.

DDoS

DDoS(Distributed Denial of Service)는 수많은 좀비 호스트를 동원해서 한 서버에 트래픽을 쏟아붓는 공격이에요. 서버나 회선의 자원을 고갈시켜 정상 사용자가 서비스를 못 쓰게 만들죠. 어떤 의미로는 1.4의 트래픽 강도 La/R을 일부러 1 이상으로 올려서 모든 정상 패킷을 큐에서 밀어내는 거라고 볼 수도 있어요.

흔한 변종으로 SYN 플러드(SYN flood), 증폭 공격(amplification attack — DNS·NTP 같은 응답이 큰 프로토콜을 악용), 응용 계층 DDoS(예: 무거운 검색 쿼리 폭주) 등이 있어요. 방어는 보통 CDN과 클라우드 사업자의 거대한 흡수 용량에 기대게 됩니다.

패킷 스니핑

패킷 스니핑(packet sniffing)은 같은 매체를 공유하는 누군가가 회선을 흐르는 모든 비트를 몰래 들여다보는 행위예요. 카페 와이파이가 위험하다는 이야기를 한 번쯤 들어 봤을 텐데, 그 카페 와이파이가 평문 트래픽을 흘려 보내면 옆 자리 사람이 공짜 노트북에 와이어샤크 띄워 두는 것만으로도 우리 트래픽을 다 볼 수 있다는 뜻입니다.

다행히 요즘은 HTTPS, TLS, QUIC 같은 암호화 프로토콜이 표준이라, 응용 계층 페이로드는 대부분 보호돼요. 그래도 어떤 사이트와 통신하는지(즉 메타데이터)는 여전히 노출될 수 있고, 공공 와이파이에서 민감한 작업은 VPN 등 추가 방어막을 끼는 게 안전합니다.

IP 스푸핑

IP 스푸핑(IP spoofing)은 패킷의 출발지 IP 주소를 거짓으로 적는 행위예요. 인터넷의 IP 헤더에는 출발지 주소를 검증하는 강제 메커니즘이 사실상 없어서, 누구든 자기 라우터에서 "이 패킷의 출발지는 1.2.3.4야"라고 거짓말을 하고 보낼 수 있습니다. 이걸 응답이 큰 서버에 쏘면, 응답이 1.2.3.4로 돌아가서 무고한 호스트가 트래픽 폭탄을 맞는 — 위에서 말한 증폭 공격이 가능해져요.

근본 대책은 ISP 단에서의 출발지 주소 필터링(BCP 38)인데, 전 세계 ISP가 다 협조해야 효과가 나는 일이라 아직도 완벽하진 않아요. 응용 단에서는 단순히 IP를 신뢰하지 않고 인증서·토큰으로 진짜 신원을 검증하는 식으로 우회합니다. 즉 "이 패킷이 누구한테서 왔다"는 IP 주소의 주장은 참고만 하고, 실질적인 신원 확인은 위 계층 암호 프로토콜에 맡기는 거죠.

주의

"인터넷은 원래 신뢰하는 연구자들끼리 쓰던 망"이라는 역사적 사실이 지금까지의 보안 약점 대부분을 설명해요. 출발지 IP를 검증 안 한다거나, 라우팅 프로토콜이 인증 없이 메시지를 받는다거나 하는 디자인은, 1970~80년대엔 합리적이었지만 지금은 공격면이 됐습니다. 8장에서 이 약점들을 어떻게 메우는지(IPsec, TLS, DNSSEC 등) 본격적으로 다룰게요.

한 줄 요약