웹 그 이상의 서비스들. 이메일 프로토콜(SMTP/IMAP)의 차이점과 넷플릭스의 비밀인 CDN/DASH, 그리고 통신의 관문 소켓을 정리합니다.
HTTP와 DNS라는 거대한 산을 넘었다면, 이제 우리 일상에 깊숙이 침투해 있는 이메일과 스트리밍 서비스, 그리고 이 모든 것을 가능하게 하는 프로그래밍의 관문인 **소켓(Socket)**을 알아볼 차례입니다.
이메일은 웹보다 역사가 깊은 인터넷의 '킬러 앱'입니다. 단순히 텍스트를 보내는 것 같지만, 배후에는 우체국 역할을 하는 정교한 서버 망이 존재합니다.
SMTP (Simple Mail Transfer Protocol) * 역할: 사용자가 서버로 메일을 보낼 때, 혹은 서버끼리 메일을 전달할 때 사용합니다. * 특징: 텍스트 기반이며, 트럭(SMTP 연결)에 편지(메일)를 실어 나르는 과정과 비슷합니다.
넷플릭스나 유튜브가 전 세계 사용자에게 끊김 없이 고화질 영상을 보여줄 수 있는 비결은 무엇일까요?
**DASH(Dynamic Adaptive Streaming over HTTP)**는 영상을 한 번에 보내지 않고 작은 조각으로 나눕니다.
미국 본사에만 서버가 있다면 한국 사용자는 느린 속도를 견뎌야 합니다. 이를 해결하기 위해 CDN을 사용합니다.
전 세계 곳곳에 캐시 서버(Edge Server)를 두고, 사용자와 가장 가까운 서버에서 데이터를 서빙합니다. 물리적 거리를 줄여 지연 시간(Latency)을 획기적으로 개선하는 핵심 인프라입니다.
지금까지 배운 모든 프로토콜(HTTP, DNS, SMTP 등)을 실제로 구현하려면 어떻게 해야 할까요? 바로 **소켓(Socket)**이라는 관문을 통해야 합니다.
애플리케이션 프로세스와 네트워크(전송 계층) 사이의 **문(Door)**입니다. 개발자는 복잡한 네트워크 하부 구조를 몰라도 이 문에 데이터를 밀어 넣기만 하면 됩니다.
소켓을 여는 순간 OS의 자원을 사용하므로, 사용이 끝나면 반드시 문을 닫아주어야 합니다.
| 구분 | TCP 소켓 | UDP 소켓 |
|---|---|---|
| 특징 | 연결 지향, 신뢰성 보장 | 비연결성, 속도 우선 |
| 장점 | 데이터가 순서대로, 빠짐없이 도착함 | 오버헤드가 적고 전송 속도가 빠름 |
| 용도 | 웹(HTTP), 파일 전송, 이메일 | 실시간 스트리밍, 온라인 게임, DNS |
Node.js 개발자 팁 > 보통
http모듈이나Express가 소켓 작업을 추상화해서 감싸주고 있지만, 로우 레벨 통신이 필요할 때는net모듈(TCP)이나dgram모듈(UDP)을 직접 사용하여 소켓을 제어할 수 있습니다.
애플리케이션 계층은 복잡한 데이터 전송의 세부 사항을 숨기고, 우리에게 **서비스(이메일, 웹, 영상)**라는 결과물을 제공합니다. 이 계층 아래에는 데이터의 신뢰성을 책임지는 **전송 계층(Transport Layer)**이 기다리고 있습니다.