네트워크의 기초
메시지를 보내면 1초도 안 되어 지구 반대편 친구의 휴대폰에 도착한다. 그 사이에 데이터는 공유기, 통신사 건물, 바닷속 케이블, 수십 대의 라우터를 거친다. 누가 길을 알려 주는 걸까? 중간에 데이터가 사라지면? 이 장에서는 인터넷이라는 거대한 우편 시스템의 규칙을 살펴본다.
- 데이터를 작은 패킷으로 나눠 보내는 이유를 설명한다.
- 응용·전송·네트워크·링크 계층이 편지 봉투처럼 데이터를 겹겹이 싸는 과정을 따라간다.
- IP 주소, 포트, MAC 주소의 역할을 구분한다.
- 라우터들이 패킷을 한 단계씩 전달하며 고장 난 길을 돌아가는 라우팅을 체험한다.
- TCP가 확인 응답과 재전송으로 잃어버린 패킷을 되찾는 원리를 이해한다.
- 대역폭과 지연(레이턴시)의 차이, 빛의 속도가 만드는 한계를 안다.
통째로 보내지 않고 쪼개서 보낸다
옛날 유선 전화는 통화하는 동안 두 집 사이에 전용 회선을 하나 잡아 두었다. 말을 안 하는 동안에도 회선은 묶여 있다. 인터넷은 다르게 동작한다. 데이터를 수백~1,500바이트 정도의 작은 조각, 즉 패킷(packet)으로 나누고, 각 패킷에 받는 사람 주소와 순서 번호를 붙여 따로따로 보낸다. 이를 패킷 교환이라 한다.
두꺼운 책을 통째로 보내는 대신 한 쪽씩 엽서에 옮겨 적고 “37/200쪽” 같은 번호를 붙여 우체통에 넣는다. 엽서들은 서로 다른 우체국, 다른 트럭을 타고 가서 뒤죽박죽 순서로 도착하지만, 받는 사람은 번호대로 정리해 책을 복원한다. 엽서 하나가 사라지면 그 쪽만 다시 보내 달라고 하면 된다. 그리고 우편 트럭은 여러 사람의 엽서를 섞어 싣고 다니므로 길을 효율적으로 쓴다.
패킷으로 쪼개고, 따로 보내고, 다시 맞추기
계층: 봉투 안의 봉투
패킷 하나가 목적지까지 가려면 해결할 문제가 많다. “어떤 앱의 데이터인가?”, “순서와 분실은 누가 챙기나?”, “지구 반대편까지 어떤 길로 가나?”, “바로 옆 공유기까지는 전파로 어떻게 보내나?” 이 문제들을 한꺼번에 풀면 너무 복잡해서, 인터넷은 일을 계층(layer)으로 나눴다. 각 계층은 자기 일만 하고, 데이터를 자기 정보가 적힌 봉투에 넣어 아래 계층에 넘긴다. 이를 캡슐화(encapsulation)라 한다.
| 계층 | 하는 일 | 봉투에 적는 것 | 우편 비유 |
|---|---|---|---|
| 응용 | 앱끼리 대화하는 규칙 (HTTP, 메신저 규칙 등) | 요청 내용 | 편지 내용 |
| 전송 (TCP/UDP) | 앱 구분, 순서, 분실 확인 | 포트 번호, 순서 번호 | “김철수님께, 3/5쪽” |
| 네트워크 (IP) | 지구 어디든 찾아가는 길 | 보내는·받는 IP 주소 | 건물 주소 |
| 링크 (이더넷/Wi-Fi) | 바로 옆 장치까지 한 구간 전달 | 다음 장치의 MAC 주소 | 다음 우체국까지 트럭 번호 |
캡슐화: 한 겹씩 싸고, 한 겹씩 벗기기
세 가지 주소: IP, 포트, MAC
- IP 주소: 인터넷에서 컴퓨터를 찾는 주소.
203.0.113.42처럼 0~255 숫자 네 개(IPv4, 약 43억 개)로 쓰고, 주소가 모자라2001:db8::1처럼 훨씬 긴 IPv6로 옮겨 가는 중이다. 건물 주소에 해당한다. - 포트 번호: 한 컴퓨터 안에서 어느 프로그램에게 줄지 정하는 번호(0~65535). 웹 서버는 보통 443번, 메일은 25번처럼 관례가 있다. 건물 안의 호수에 해당한다.
- MAC 주소: 네트워크 장치마다 공장에서 붙여 나오는 고유 번호. 같은 공유기에 붙은 이웃 장치끼리 한 구간을 전달할 때 쓴다. 사람의 주민번호처럼 장치에 붙어 다닌다.
집의 휴대폰, 노트북, TV는 모두 192.168.0.x 같은 사설 IP를 받는다. 이 주소는 집 안에서만 통한다. 공유기는 바깥으로 나가는 패킷의 보내는 주소를 자기의 공인 IP로 바꿔 적고, 답장이 오면 누구에게 보낼지 표를 보고 되돌려 준다. 회사 대표 전화번호와 내선 번호의 관계와 같다. 이 덕분에 IPv4 주소 43억 개로 수백억 대의 기기가 인터넷을 쓴다.
라우팅: 한 걸음씩 길 찾기
패킷이 서울에서 뉴욕으로 갈 때 처음부터 전체 경로를 아는 사람은 없다. 대신 길목마다 있는 라우터(router)가 패킷의 목적지 IP를 보고 “이 방향으로 가면 더 가깝다”는 표(라우팅 테이블)에 따라 다음 한 걸음만 결정한다. 라우터들은 서로 정보를 주고받으며 이 표를 계속 갱신하고, 어떤 길이 끊기면 몇 초 안에 다른 길로 돌아간다. 인터넷이 핵전쟁에도 살아남는 통신망을 목표로 연구되었다는 이야기가 나온 이유다.
라우터 네트워크: 연결선을 눌러 끊어 보세요
컴퓨터의 명령 창에서 tracert google.com(윈도우) 또는 traceroute google.com(맥·리눅스)을 입력하면, 내 패킷이 거쳐 가는 실제 라우터 목록과 각 구간의 지연 시간을 볼 수 있다. 보통 10~20개의 라우터를 거친다.
TCP: 잃어버린 패킷 되찾기
IP는 “최선을 다해 배달”할 뿐 보장하지 않는다. 라우터가 너무 바쁘면 패킷을 버리고, 순서가 바뀌기도 한다. 그 위의 TCP(Transmission Control Protocol)가 신뢰성을 책임진다. 받는 쪽은 패킷을 받을 때마다 “몇 번까지 잘 받았다”는 확인 응답(ACK)을 보낸다. 보내는 쪽은 일정 시간 안에 ACK가 오지 않으면 그 패킷이 사라졌다고 보고 다시 보낸다.
ACK를 기다리느라 패킷 하나 보내고 쉬면 너무 느리므로, TCP는 ACK를 받기 전에도 여러 개(윈도우 크기만큼)를 연달아 보낸다.
TCP 전송 타임라인
영상 통화나 온라인 게임은 TCP 대신 UDP를 많이 쓴다. UDP는 확인도 재전송도 하지 않는다. 0.5초 전에 사라진 영상 조각을 다시 받아 봐야 이미 늦었기 때문이다. 정확성이 중요한 파일 전송과 웹은 TCP, 실시간성이 중요한 통화와 게임은 UDP를 주로 쓴다.
대역폭과 지연: 도로의 폭과 길이
인터넷이 “빠르다”는 말에는 두 가지 뜻이 섞여 있다.
- 대역폭(bandwidth): 1초에 보낼 수 있는 데이터 양(예: 1 Gbps). 도로의 차선 수. 큰 파일을 내려받을 때 중요하다.
- 지연(latency): 패킷 하나가 도착하는 데 걸리는 시간(예: 30 ms). 도로의 길이. 게임, 영상 통화, 웹 페이지가 처음 뜨는 속도에 중요하다.
차선을 늘리면 한 번에 더 많은 차가 가지만, 서울에서 부산까지 걸리는 시간은 줄지 않는다. 지연에는 넘을 수 없는 한계가 있다. 빛은 광섬유 안에서 1초에 약 20만 km를 간다. 아래 계산기로 거리별 최소 지연을 확인해 보자.
빛의 속도로 계산한 최소 왕복 시간
핵심 정리
- 인터넷은 데이터를 패킷으로 쪼개 번호를 붙여 따로 보내고, 받는 쪽이 다시 맞춘다.
- 통신은 응용 → 전송(TCP/UDP) → 네트워크(IP) → 링크 계층으로 나뉘고, 각 계층이 봉투를 한 겹씩 씌운다(캡슐화).
- IP 주소는 컴퓨터, 포트는 그 안의 프로그램, MAC 주소는 바로 옆 장치를 가리킨다.
- 라우터는 다음 한 걸음만 결정한다. 길이 끊기면 경로를 다시 계산해 돌아간다.
- TCP는 ACK와 재전송으로 분실을 복구하고, 윈도우로 여러 패킷을 겹쳐 보내 속도를 높인다.
- 대역폭은 도로의 폭, 지연은 도로의 길이다. 지연은 빛의 속도라는 물리 한계에 묶여 있다.
확인 퀴즈
패킷에 순서 번호를 붙이는 이유는?
한 컴퓨터에서 웹 브라우저와 메신저가 동시에 데이터를 받는다. 도착한 패킷을 어느 프로그램에게 줄지 정하는 것은?
라우터가 패킷을 받았을 때 하는 일은?
TCP에서 보낸 패킷의 ACK가 정해진 시간 안에 오지 않으면?
인터넷 요금제를 100 Mbps에서 1 Gbps로 올렸다. 가장 덜 좋아지는 것은?