coredot.today
네트워크 기초 완전 정복: IP, 포트, DNS, HTTP — 인터넷이 진짜로 작동하는 원리
블로그로 돌아가기
네트워크IPDNSHTTPTCPUDPOSI포트CIDR클라우드

네트워크 기초 완전 정복: IP, 포트, DNS, HTTP — 인터넷이 진짜로 작동하는 원리

주소창에 URL을 입력하고 엔터를 누르면 무슨 일이 벌어질까? IP 주소, 포트, DNS, TCP/UDP, HTTP — 인터넷을 구성하는 핵심 개념을 하나씩 해부하고, 이것이 클라우드 인프라와 어떻게 연결되는지 완전히 이해한다.

코어닷투데이2026-04-0185

들어가며: 엔터를 누른 순간, 무슨 일이 벌어질까?

카페에서 노트북을 열고 주소창에 www.core.today를 입력한다. 엔터를 누르면 0.3초 만에 화면에 웹사이트가 나타난다. 우리는 이것을 너무 당연하게 받아들인다.

하지만 이 0.3초 동안 실제로 벌어지는 일은 놀라울 정도로 복잡하다. 여러분의 노트북은 수십 개의 네트워크 장비를 거쳐 지구 반대편에 있을 수도 있는 서버를 찾아내고, 그 서버에 "이 페이지 좀 보여줘"라고 요청하고, 서버가 보내준 데이터를 받아 화면에 그려낸다. 이 모든 과정이 사람이 눈을 한 번 깜빡이는 시간(약 0.3초) 안에 끝난다.

이 글에서는 그 0.3초 안에서 벌어지는 모든 일을 하나하나 해부한다. IP 주소란 무엇인지, 포트가 왜 필요한지, DNS는 어떻게 도메인 이름을 IP로 바꾸는지, TCP와 UDP는 뭐가 다른지, HTTP 요청과 응답은 어떤 구조인지 — 네트워크의 기초를 완전히 이해하는 것이 목표다.

왜 이것을 알아야 할까? 클라우드에서 서버를 띄우면 Security Group(보안 그룹)에 포트 규칙을 설정해야 한다. VPC(가상 사설 네트워크)를 구성하려면 CIDR 표기법을 알아야 한다. 로드밸런서를 붙이려면 HTTP 상태 코드를 이해해야 한다. 네트워크 기초 없이 클라우드를 다루는 것은, 교통법규를 모르고 운전대를 잡는 것과 같다.

💡
이 글의 대상: 클라우드와 DX(디지털 전환)에 입문하려는 분들을 위한 네트워크 기초 완전 가이드다. 전공자가 아니어도 괜찮다. 인터넷을 쓸 줄 안다면 이 글을 이해할 수 있다.

1. OSI 7계층: 네트워크의 설계도

인터넷은 한 덩어리가 아니다. 마치 택배 시스템이 포장, 분류, 운송, 배달로 나뉘듯, 네트워크도 역할별로 층(Layer)이 나뉘어 있다. 이것을 OSI(Open Systems Interconnection) 7계층 모델이라고 부른다.

OSI 7계층을 7층 건물에 비유한 귀여운 일러스트

7개 층을 모두 외울 필요는 없다. 실무에서 정말 중요한 4개 층에 집중하자.

계층이름하는 일현실 비유
7응용 계층 (Application)사용자가 직접 접하는 프로토콜 (HTTP, DNS, SMTP)편지의 내용
6표현 계층 (Presentation)데이터 암호화, 압축, 인코딩편지를 암호로 작성
5세션 계층 (Session)연결 유지 및 관리전화 통화 시작/끝
4전송 계층 (Transport)데이터를 쪼개서 안전하게 전달 (TCP, UDP)택배 추적 번호
3네트워크 계층 (Network)목적지까지의 경로 결정 (IP)우편번호 + 주소
2데이터 링크 계층 (Data Link)인접 장치 간 통신 (MAC 주소, 이더넷)같은 건물 내 우편함
1물리 계층 (Physical)전기 신호, 빛, 전파로 실제 데이터 전송도로, 철길, 항공로

왜 층을 나눌까?

핵심은 분업이다. 각 층은 자기 역할만 하고, 다른 층의 내부 동작을 알 필요가 없다. 택배 기사는 상자 안에 뭐가 들었는지 몰라도 배달할 수 있다. 포장 담당자는 택배가 어떤 경로로 갈지 신경 쓰지 않는다.

이 분업 구조 덕분에 각 층의 기술을 독립적으로 발전시킬 수 있다. 와이파이(물리 계층)가 2.4GHz에서 6GHz로 업그레이드되어도, HTTP(응용 계층)는 바꿀 필요가 없다. 반대로 HTTP가 1.1에서 3으로 발전해도, 랜 케이블을 바꿀 필요는 없다.

실무에서 중요한 4개 층

실무에서는 물리(1층), 네트워크(3층), 전송(4층), 응용(7층) 이 4개 층을 주로 다룬다. 나머지 3개(2, 5, 6층)는 현대 프로토콜에서 다른 층에 흡수되었다. 실제로 인터넷의 실질적 모델인 TCP/IP 4계층 모델은 이 현실을 반영해 4개 층만 정의한다.

응용 계층
전송 계층
네트워크 계층
물리 계층
HTTP, DNS, SMTP
TCP, UDP
IP, ICMP
이더넷, 와이파이

이 4개 층의 핵심 프로토콜을 하나씩 파고들어 보자. 3층(IP)부터 시작한다.


2. IP 주소: 인터넷의 우편번호

데이터 패킷이 택배 트럭처럼 고속도로를 달리며 라우터 교차로에서 분류되는 모습

IP 주소란?

세상의 모든 건물에 주소가 있듯, 인터넷에 연결된 모든 장치에는 IP 주소(Internet Protocol Address)가 있다.

IP 주소를 집 주소에 비유한 디지털 동네 우체부 여러분의 노트북, 스마트폰, 카페의 와이파이 공유기, 넷플릭스 서버, 코어닷투데이의 웹 서버 — 모두 고유한 IP 주소를 갖고 있다.

IP 주소가 없으면 데이터가 어디로 가야 하는지 알 수 없다. 편지에 주소를 안 쓰면 배달이 안 되는 것과 같다.

IPv4: 우리가 아는 그 주소

가장 익숙한 형태는 IPv4 주소다.

IPv4 주소 예시
192.168.1.100

4개의 숫자를 점(.)으로 구분
각 숫자의 범위: 0 ~ 255 (8비트)
총 32비트 → 약 43억 개의 고유 주소

43억 개면 충분해 보이지만, 2026년 현재 인터넷에 연결된 장치는 300억 개가 넘는다. 스마트폰, 노트북, 태블릿은 물론이고, 스마트 TV, 냉장고, 자동차, 공장의 센서까지. IPv4 주소는 이미 2011년에 고갈됐다.

IPv6: 주소 부족 문제의 해결

IPv6는 128비트를 사용해 사실상 무한에 가까운 주소를 제공한다.

IPv6 주소 예시
2001:0db8:85a3:0000:0000:8a2e:0370:7334

8개의 16진수 그룹을 콜론(:)으로 구분
총 128비트 → 3.4 × 1038의 고유 주소
지구의 모든 모래알에 IP를 부여하고도 남는 양
43억 IPv4 주소 수 32비트, 2011년 고갈
340간 IPv6 주소 수 128비트, 사실상 무한
300억+ 현재 인터넷 연결 장치 2026년 기준

공인 IP vs 사설 IP: 집 주소와 방 번호

여기서 중요한 구분이 하나 있다. 모든 장치가 전 세계에서 유일한 IP를 가질 필요는 없다. 아파트에 비유하면 이렇다:

  • 공인(Public) IP: 아파트의 도로명 주소. 전 세계에서 유일하다. 택배 기사는 이 주소로 찾아온다.
  • 사설(Private) IP: 아파트 안의 방 번호. 같은 아파트 안에서만 의미가 있다. 다른 아파트에도 "201호"가 있을 수 있다.
공인 IP vs 사설 IP — 아파트 비유
인터넷 (바깥 세상)
공인 IP: 203.0.113.10
전 세계에서 유일
공유기 (NAT)
공인 ↔ 사설 변환
아파트 로비 역할
내부 네트워크 (사설 IP)
192.168.1.10 (노트북)
192.168.1.11 (스마트폰)

집에서 와이파이를 쓸 때, 여러분의 기기들은 모두 사설 IP(192.168.x.x)를 갖는다. 인터넷으로 나갈 때는 공유기가 NAT(Network Address Translation)을 통해 하나의 공인 IP로 변환해준다. 카페에서도 마찬가지다 — 카페의 모든 손님이 하나의 공인 IP를 공유한다.

사설 IP 대역은 전 세계적으로 정해져 있다:

대역범위주소 수주 용도
10.0.0.0/810.0.0.0 ~ 10.255.255.255약 1,677만 개대규모 기업, 클라우드 VPC
172.16.0.0/12172.16.0.0 ~ 172.31.255.255약 104만 개중규모 네트워크
192.168.0.0/16192.168.0.0 ~ 192.168.255.255약 6만 5천 개가정, 소규모 사무실

CIDR 표기법: 클라우드에서 필수인 이유

위 표에서 /8, /12, /16 같은 표기를 봤을 것이다. 이것이 CIDR(Classless Inter-Domain Routing) 표기법이다. 클라우드를 다루려면 반드시 알아야 한다.

CIDR은 IP 주소 뒤에 슬래시(/)와 숫자를 붙여 네트워크의 크기를 나타낸다. 숫자가 클수록 네트워크가 작다.

CIDR 표기법 읽는 법
10.0.0.0/16 → 앞의 16비트가 네트워크 주소, 나머지 16비트가 호스트 주소
→ 216 = 65,536개의 IP 사용 가능

10.0.1.0/24 → 앞의 24비트가 네트워크 주소, 나머지 8비트가 호스트 주소
→ 28 = 256개의 IP 사용 가능

10.0.1.0/28 → 앞의 28비트가 네트워크 주소, 나머지 4비트가 호스트 주소
→ 24 = 16개의 IP 사용 가능
CIDR 크기 비교 (사용 가능 IP 수)
/8
16,777,216
/16
65,536
/24
256
/28
16
/32
1

왜 이것이 클라우드에서 중요한지는 나중에 VPC 섹션에서 다시 다룬다. 일단 기억해둘 것: CIDR의 숫자가 클수록 네트워크가 작다. /16은 큰 동네, /24는 작은 골목, /32는 딱 한 채의 집이다.


3. 포트: 건물 안의 방 번호

IP만으로는 부족하다

IP 주소가 건물의 주소라면, 포트(Port)는 건물 안의 방 번호다.

생각해보자. 하나의 서버에서 웹사이트(HTTP), 이메일(SMTP), 데이터베이스(MySQL)를 동시에 돌리고 있다. 누군가 이 서버에 요청을 보냈을 때, 이 요청이 웹사이트용인지 이메일용인지 데이터베이스용인지 어떻게 구분할까? 포트 번호로 구분한다.

하나의 서버, 여러 개의 포트
서버 IP: 203.0.113.10
:22 → SSH (원격 접속)
:80 → HTTP (웹사이트)
:443 → HTTPS (보안 웹)
:3306 → MySQL (DB)

포트 번호는 0 ~ 65535 범위의 숫자다. IP주소:포트번호 형태로 표현한다. 예를 들어 203.0.113.10:443은 "이 서버의 HTTPS 서비스에 접속하겠다"는 뜻이다.

"포트에서 리스닝한다"의 의미

"서버가 80번 포트에서 리스닝(listening)하고 있다"는 말을 자주 듣게 될 것이다. 이것은 서버의 특정 프로그램이 80번 포트로 들어오는 요청을 기다리고 있다는 뜻이다.

카페에 비유하면, 80번 포트에서 리스닝한다 = "80번 창구에 직원이 앉아서 주문을 기다리고 있다." 아무도 앉아 있지 않은 창구(닫힌 포트)로 주문하면 응답이 없다.

외워야 하는 주요 포트

포트프로토콜용도클라우드에서 만날 때
22SSH원격 서버 접속 (터미널)EC2 인스턴스에 SSH 접속
80HTTP웹사이트 (암호화 없음)로드밸런서 인바운드 규칙
443HTTPS웹사이트 (SSL/TLS 암호화)프로덕션 웹 서비스 필수
3000관례적Node.js/React 개발 서버개발 환경 테스트
3306MySQLMySQL 데이터베이스RDS MySQL 접속
5432PostgreSQLPostgreSQL 데이터베이스RDS PostgreSQL 접속
6379Redis인메모리 캐시/DBElastiCache 접속
8080관례적대체 HTTP (개발/프록시)톰캣, Jenkins 등

포트 범위 분류

포트 번호는 세 구간으로 나뉜다:

0-1023 Well-Known 포트 — 국제적으로 표준이 정해진 포트. SSH(22), HTTP(80), HTTPS(443) 등. 일반 사용자 프로그램은 이 범위를 쓰면 안 된다.
1024-49151 Registered 포트 — 특정 서비스가 등록해서 쓰는 포트. MySQL(3306), PostgreSQL(5432), Redis(6379) 등.
49152-65535 Dynamic/Private 포트 — 운영체제가 임시로 할당하는 포트. 브라우저가 서버에 요청할 때 자동으로 이 범위에서 출발 포트를 받는다.
💡
왜 브라우저 주소창에 포트를 안 쓸까? `https://www.core.today`에 접속할 때 포트를 명시하지 않는다. 이것은 HTTPS의 기본 포트가 443이기 때문에 브라우저가 자동으로 443을 붙여준다. 마찬가지로 HTTP의 기본 포트는 80이다. 개발 서버에서 `localhost:3000`처럼 포트를 명시하는 이유는, 3000이 기본 포트가 아니기 때문이다.

4. TCP vs UDP: 안전 vs 속도의 트레이드오프

IP가 어디로 보낼지를 정하고, 포트가 어떤 서비스에 전달할지를 정했다면, 어떻게 전달할지를 결정하는 것이 전송 계층(Transport Layer)이다. 여기에 두 가지 선택지가 있다: TCPUDP.

TCP 3-way 핸드셰이크를 한국식 인사로 비유한 일러스트 — SYN 안녕하세요, SYN-ACK 반갑습니다, ACK 잘 부탁합니다

TCP 3-way 핸드셰이크를 두 로봇의 인사에 비유한 그림

TCP: 확실하지만 느린 택배

TCP(Transmission Control Protocol)신뢰성을 최우선으로 한다. 보낸 데이터가 빠짐없이, 순서대로, 오류 없이 도착하는 것을 보장한다.

그 대가로 속도가 느리다. TCP는 데이터를 보내기 전에 먼저 연결을 수립해야 하기 때문이다. 이것을 3-way handshake(삼중 악수)라고 부른다.

SYN 클라이언트 → 서버: "안녕, 나 연결하고 싶어" (SYN 패킷 전송)
SYN-ACK 서버 → 클라이언트: "좋아, 나도 준비됐어. 너 요청 받았어" (SYN + ACK 패킷 전송)
ACK 클라이언트 → 서버: "확인했어, 이제 데이터 보낼게" (ACK 패킷 전송) — 이제 연결 수립 완료!

이 3단계를 거친 후에야 실제 데이터가 오간다. 택배로 비유하면, 보내기 전에 수신자에게 전화해서 "택배 보낼 건데 집에 있어?" "응, 있어" "알겠어, 보낸다" 이 과정을 거치는 셈이다.

TCP가 보장하는 것들:

  • 순서 보장: 패킷 1, 2, 3을 보내면 1, 2, 3 순서로 도착
  • 재전송: 패킷 2가 유실되면 자동으로 재전송
  • 흐름 제어: 수신자가 처리할 수 있는 속도에 맞춰 전송
  • 혼잡 제어: 네트워크가 혼잡하면 전송 속도를 조절

UDP: 빠르지만 불확실한 방송

UDP(User Datagram Protocol)속도를 최우선으로 한다. 연결 수립 과정 없이 데이터를 바로 보낸다. 도착 확인도 안 한다. 순서도 보장하지 않는다.

확성기로 소리를 지르는 것과 같다. 누가 듣든 안 듣든 그냥 보낸다.

TCP vs UDP 비교

특성TCPUDP
연결 수립필요 (3-way handshake)불필요 (바로 전송)
신뢰성보장 (재전송, 순서 보장)비보장 (유실 가능)
속도상대적으로 느림빠름 (오버헤드 최소)
용도웹(HTTP), 이메일, 파일 전송실시간 스트리밍, 게임, DNS 조회
비유등기우편 (확인 서명 필수)전단지 뿌리기 (돌아오는 확인 없음)

왜 둘 다 필요할까?

웹사이트를 불러올 때는 HTML 파일의 한 글자라도 빠지면 안 되니 TCP를 쓴다. 하지만 실시간 게임에서 캐릭터의 위치 정보가 0.01초 늦게 도착하느니 차라리 최신 위치만 빠르게 받는 게 낫다 — 그래서 UDP를 쓴다.

?
질문
영상 통화 중에 네트워크가 불안정하면 화면이 잠깐 깨지다가 복구된다. 왜 처음부터 다시 재생하지 않을까?
영상 통화는 UDP를 사용하기 때문이다. 유실된 프레임을 재전송하면 이미 지나간 장면이 뒤늦게 도착해 더 혼란스러워진다. 차라리 빠진 프레임은 버리고 최신 프레임을 보여주는 것이 실시간 통신에서는 더 나은 사용자 경험이다.

5. DNS: 전화번호부의 인터넷 버전

왜 DNS가 필요한가

사람은 숫자보다 이름을 잘 기억한다. 142.250.207.100보다 google.com이 훨씬 외우기 쉽다.

DNS 질의 과정을 우체국 사이 편지 전달에 비유한 모험 지도 하지만 컴퓨터는 IP 주소로만 통신할 수 있다. 이 간극을 메워주는 것이 DNS(Domain Name System)다.

DNS는 도메인 이름을 IP 주소로 변환하는 시스템이다. 스마트폰의 연락처 앱과 같다. "엄마"를 누르면 010-1234-5678로 전화가 걸리듯, www.core.today를 입력하면 DNS가 해당 IP를 찾아준다.

DNS 조회의 여정

브라우저가 www.core.today의 IP를 찾는 과정은 생각보다 복잡하다. 마치 모르는 사람의 전화번호를 여러 곳에 물어보는 것과 같다.

1단계 브라우저 캐시 확인 — "혹시 최근에 이 사이트 갔었나?" 이미 알고 있으면 바로 접속. 끝.
2단계 OS 캐시 확인 — 브라우저가 모르면 운영체제에 물어본다. OS도 최근 DNS 결과를 캐시해둔다.
3단계 리졸버(Resolver) DNS 서버 — 보통 ISP(통신사)나 퍼블릭 DNS(8.8.8.8 등)에 질문. "core.today의 IP 아세요?"
4단계 루트(Root) DNS 서버 — 리졸버도 모르면 루트 서버에 질문. 루트 서버는 "`.today`는 이쪽에서 관리해"라고 TLD 서버 주소를 알려준다.
5단계 TLD(Top-Level Domain) DNS 서버 — `.today`를 관리하는 서버. "`core.today`는 이 네임서버가 알고 있어"라고 알려준다.
6단계 권한(Authoritative) DNS 서버 — `core.today`의 실제 관리 서버. "네, IP는 `76.76.21.21`입니다." 드디어 답을 얻었다!

이 과정을 도식화하면 계층적 트리 구조가 된다:

루트 DNS (.)
.com TLD
.kr TLD
.today TLD
.io TLD
core.today 권한 DNS
www → 76.76.21.21
api → 76.76.21.22
mail → 76.76.21.30

DNS 레코드 타입

DNS 서버가 저장하는 정보(레코드)에는 여러 종류가 있다:

레코드 타입하는 일예시
A도메인 → IPv4 주소core.today → 76.76.21.21
AAAA도메인 → IPv6 주소core.today → 2606:4700::6810:84e5
CNAME도메인 → 다른 도메인 (별명)www.core.today → core.today
MX이메일 수신 서버 지정core.today → mail.core.today
NS권한 네임서버 지정core.today → ns1.vercel-dns.com
TXT임의의 텍스트 (인증 등)SPF, DKIM 이메일 인증
💡
DNS 캐싱이 중요한 이유: 매번 루트 서버부터 물어보면 너무 느리다. 그래서 DNS 결과에는 TTL(Time To Live)이 붙어 있다. 예를 들어 TTL이 3600초(1시간)이면, 한 번 조회한 결과를 1시간 동안 캐시해두고 재사용한다. 서버를 이전할 때 DNS의 TTL을 미리 낮춰두는 것은 운영 실무에서 흔한 패턴이다.

6. HTTP/HTTPS: 웹의 언어

HTTP란?

DNS로 IP를 알아냈고, TCP로 연결을 수립했다. 이제 서버에게 "이 페이지를 보여줘"라고 말해야 한다. 이때 사용하는 언어가 HTTP(HyperText Transfer Protocol)다.

HTTP 요청-응답을 레스토랑 주문에 비유한 브라우저 캐릭터

HTTP는 클라이언트(브라우저)와 서버 사이의 요청-응답 프로토콜이다. 클라이언트가 요청(Request)을 보내면 서버가 응답(Response)을 돌려준다. 단순하지만 이것이 웹의 전부다.

HTTP 요청의 구조

브라우저가 https://www.core.today/blog에 접속할 때 보내는 요청을 들여다보자:

HTTP 요청 예시
GET /blog HTTP/1.1
Host: www.core.today
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)
Accept: text/html,application/xhtml+xml
Accept-Language: ko-KR,ko;q=0.9
Accept-Encoding: gzip, deflate, br
Connection: keep-alive
  • GET: HTTP 메서드. "이 리소스를 가져와"라는 뜻
  • /blog: 요청 경로. 서버의 어떤 리소스를 원하는지
  • HTTP/1.1: 프로토콜 버전
  • 나머지 줄: 헤더(Header). 부가 정보를 담는다

HTTP 메서드

HTTP에는 다양한 메서드가 있지만, 가장 많이 쓰는 것은 네 가지다:

메서드의미예시비유
GET조회 (데이터를 가져옴)블로그 글 목록 조회도서관에서 책 빌리기
POST생성 (새 데이터를 보냄)문의 폼 제출, 회원가입우체통에 편지 넣기
PUT수정 (기존 데이터를 덮어씀)프로필 정보 수정서류 전체를 새로 작성
DELETE삭제게시글 삭제파일 폐기

HTTP 응답과 상태 코드

서버는 요청을 받으면 응답을 돌려보낸다. 이때 상태 코드(Status Code)로 결과를 알려준다.

HTTP 응답 예시
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Content-Length: 48231
Cache-Control: public, max-age=3600

<!DOCTYPE html>
<html lang="ko">
<head><title>core.today 블로그</title>...

상태 코드는 3자리 숫자이며, 첫 자리로 성격을 구분한다:

HTTP 상태 코드 분류
2xx 성공
OK
3xx 리다이렉트
이동
4xx 클라이언트 에러
요청 문제
5xx 서버 에러
서버 문제

실무에서 가장 자주 만나는 상태 코드:

코드의미개발자가 만나는 상황
200 OK성공적으로 처리됨정상 응답. 만세!
201 Created리소스가 성공적으로 생성됨POST 요청 후 DB에 데이터 저장 완료
301 Moved Permanently영구적으로 주소가 변경됨http → https 리다이렉트, 도메인 변경
304 Not Modified변경 없음 (캐시 사용 가능)브라우저 캐시가 최신이면 서버가 본문 없이 이것만 보냄
400 Bad Request잘못된 요청필수 파라미터 누락, JSON 형식 오류
401 Unauthorized인증 필요로그인 안 하고 접근 시도
403 Forbidden권한 없음로그인은 했지만 접근 권한이 없음
404 Not Found리소스를 찾을 수 없음URL 오타, 삭제된 페이지
429 Too Many Requests요청이 너무 많음API Rate Limit에 걸림
500 Internal Server Error서버 내부 오류서버 코드에 버그가 있음
502 Bad Gateway게이트웨이/프록시 오류로드밸런서 뒤의 서버가 응답하지 않음
503 Service Unavailable서비스 이용 불가서버 과부하, 유지보수 중

HTTP vs HTTPS: 암호화의 차이

HTTPS는 HTTP에 TLS(Transport Layer Security) 암호화를 추가한 것이다. HTTP로 주고받는 데이터는 평문(plain text)이라 중간에서 누구나 읽을 수 있다. 카페 와이파이에서 HTTP로 로그인하면, 같은 네트워크에 있는 누군가가 비밀번호를 볼 수 있다는 뜻이다.

HTTPS는 데이터를 암호화해서 보내기 때문에 중간에서 가로채도 읽을 수 없다.

HTTP vs HTTPS
HTTP (포트 80)
데이터가 평문으로 전송
중간자 공격에 취약
브라우저에 "안전하지 않음" 표시
HTTPS (포트 443)
TLS로 암호화하여 전송
가로채도 읽을 수 없음
브라우저에 자물쇠 아이콘 표시

2026년 현재, HTTPS는 기본이자 필수다. 대부분의 브라우저는 HTTP 사이트에 경고를 표시하고, Google은 HTTPS를 SEO 순위 요인으로 반영한다. Let's Encrypt 덕분에 SSL 인증서를 무료로 발급받을 수 있어, HTTPS를 안 쓸 이유가 없다.


7. 실전 추적: URL 입력부터 화면 표시까지

브라우저 요청 여정을 서울 지하철 노선도로 표현한 일러스트 — DNS, TCP, TLS, HTTP 각 단계가 역

지금까지 배운 모든 것을 합쳐보자. 카페에서 https://www.core.today/blog를 입력하고 엔터를 누르는 순간부터 화면에 블로그가 표시되기까지, 0.3초 안에 벌어지는 전체 과정이다.

STEP 1 URL 파싱 — 브라우저가 URL을 분석한다. 프로토콜(https), 호스트(www.core.today), 경로(/blog)를 분리한다. HTTPS이므로 포트는 443.
STEP 2 DNS 조회www.core.today의 IP 주소를 찾는다. 캐시에 있으면 즉시 사용, 없으면 DNS 서버에 질의. 결과: 76.76.21.21
STEP 3 TCP 연결 (3-way handshake) — 브라우저가 76.76.21.21:443으로 TCP 연결을 수립한다. SYN → SYN-ACK → ACK.
STEP 4 TLS 핸드셰이크 — HTTPS이므로 추가로 암호화 협상을 한다. 서버의 SSL 인증서를 확인하고, 암호화 키를 교환한다.
STEP 5 HTTP 요청 전송 — 브라우저가 GET /blog HTTP/1.1 요청을 보낸다. Host 헤더에 www.core.today, 쿠키, User-Agent 등 부가 정보를 포함.
STEP 6 서버 처리 — 서버(Next.js)가 요청을 받아 /blog 페이지를 렌더링한다. 블로그 마크다운 파일을 읽고, React 컴포넌트로 HTML을 생성한다.
STEP 7 HTTP 응답 수신 — 서버가 200 OK + HTML 본문을 돌려보낸다. 브라우저가 HTML, CSS, JS, 이미지를 순차적으로 다운로드한다.
STEP 8 화면 렌더링 — 브라우저가 HTML을 파싱하고, CSS로 스타일을 적용하고, JavaScript를 실행해 최종 화면을 그린다. 완료!

이 8단계가 0.3초 안에 끝난다. 만약 네트워크 중 어떤 단계에서 문제가 생기면:

!
DNS 실패
ERR_NAME_NOT_RESOLVED — 도메인 이름을 IP로 변환하지 못했다. DNS 서버 장애, 도메인 만료, 또는 오타.
!
TCP 연결 실패
ERR_CONNECTION_TIMED_OUT — 서버가 응답하지 않는다. 서버가 꺼져 있거나, 방화벽이 포트를 막고 있거나, 네트워크 장애.
!
TLS 실패
ERR_CERT_DATE_INVALID — SSL 인증서가 만료되었거나 유효하지 않다. 인증서를 갱신해야 한다.
디버깅 도구
브라우저 개발자 도구(F12) → Network 탭에서 각 요청의 DNS 조회 시간, TCP 연결 시간, TLS 핸드셰이크 시간, 서버 응답 시간을 모두 확인할 수 있다. 문제의 원인을 정확히 찾을 수 있는 필수 도구.

8. 네트워크 지식이 클라우드와 연결되는 지점

지금까지 배운 네트워크 기초가 클라우드에서 어떻게 쓰이는지, 구체적으로 연결해보자.

Security Group = 포트 기반 방화벽

AWS에서 EC2 인스턴스(가상 서버)를 만들면 Security Group을 설정해야 한다. Security Group은 "이 서버의 어떤 포트를 열고 닫을지" 정하는 가상 방화벽이다.

Security Group 설정 예시
인바운드 규칙 (외부 → 서버) 포트 22 (SSH) — 내 IP에서만 허용 (203.0.113.50/32)
포트 80 (HTTP) — 모든 곳에서 허용 (0.0.0.0/0)
포트 443 (HTTPS) — 모든 곳에서 허용 (0.0.0.0/0)
포트 3306 (MySQL) — 같은 VPC 내에서만 (10.0.0.0/16)
아웃바운드 규칙 (서버 → 외부) 모든 포트 — 모든 곳에서 허용 (0.0.0.0/0)

보이는가? 포트 번호, IP 주소, CIDR 표기법 — 이 글에서 배운 개념이 그대로 사용된다.

  • 0.0.0.0/0 = 모든 IP (인터넷 전체). /0이니까 네트워크 부분이 0비트, 즉 제한 없음
  • 203.0.113.50/32 = 딱 이 IP 하나. /32이니까 32비트 전체가 네트워크 주소, 즉 호스트 1개
  • 10.0.0.0/16 = 10.0.x.x 대역의 모든 IP. 같은 VPC 내부

SSH 포트(22)를 0.0.0.0/0으로 열어두면 전 세계 누구나 서버에 접속을 시도할 수 있다. 실제로 EC2를 띄우고 22번 포트를 전체 공개하면 몇 분 안에 중국, 러시아 등지에서 무차별 대입 공격(brute-force attack)이 시작된다. 그래서 SSH는 반드시 내 IP로만 제한해야 한다.

VPC = 가상 사설 네트워크

VPC(Virtual Private Cloud)는 클라우드 안에 만드는 나만의 가상 네트워크다. 집에서 공유기로 사설 네트워크를 만드는 것과 본질적으로 같다 — 단지 규모가 다를 뿐이다.

VPC를 만들 때 가장 먼저 하는 일이 CIDR 블록 지정이다.

VPC 네트워크 구성 예시
VPC: 10.0.0.0/16
65,536개 IP 사용 가능
퍼블릭 서브넷
10.0.1.0/24
웹 서버, 로드밸런서
인터넷 접근 가능
프라이빗 서브넷
10.0.2.0/24
DB 서버, 내부 API
인터넷 직접 접근 불가
  • 퍼블릭 서브넷: 인터넷에서 직접 접근 가능한 영역. 웹 서버, 로드밸런서를 둔다
  • 프라이빗 서브넷: 인터넷에서 직접 접근 불가능한 영역. 데이터베이스처럼 외부에 노출되면 안 되는 것들을 둔다

이것은 앞서 배운 공인 IP vs 사설 IP 구조와 정확히 같은 원리다. 퍼블릭 서브넷의 인스턴스에는 공인 IP가 할당되고, 프라이빗 서브넷의 인스턴스는 사설 IP만 갖는다.

네트워크 개념 → 클라우드 개념 매핑

네트워크 기초클라우드(AWS) 대응 개념실무 활용
IP 주소Elastic IP, Private IP서버에 고정 IP 할당, VPC 내 통신
CIDR 표기법VPC/서브넷 CIDR 블록네트워크 크기 설계, IP 범위 지정
포트Security Group 규칙인바운드/아웃바운드 트래픽 제어
공인 IP / 사설 IP퍼블릭 서브넷 / 프라이빗 서브넷웹 서버 vs DB 서버 분리
NATNAT Gateway프라이빗 서브넷에서 인터넷 접근
DNSRoute 53도메인 관리, 트래픽 라우팅
HTTP/HTTPSALB (Application Load Balancer)트래픽 분산, SSL 종료
TCP/UDPNLB (Network Load Balancer)TCP/UDP 레벨 로드밸런싱
💡
핵심 인사이트: 클라우드는 네트워크를 "소프트웨어로 정의"한 것이다. 물리적인 라우터, 스위치, 방화벽을 코드 몇 줄로 생성하고 삭제할 수 있게 만든 것뿐이다. 물리적 네트워크의 원리를 이해하면, 클라우드의 가상 네트워크는 자연스럽게 이해된다.

실전 시나리오: 웹 서비스 배포 시 네트워크 설정

간단한 웹 서비스를 AWS에 배포한다고 가정해보자. 배운 네트워크 지식이 어떻게 적용되는지 단계별로 정리한다.

인프라 VPC 생성 — CIDR 10.0.0.0/16으로 설정. 퍼블릭 서브넷(10.0.1.0/24)과 프라이빗 서브넷(10.0.2.0/24)을 각각 생성.
보안 Security Group 설정 — 웹 서버: 80, 443 포트 전체 공개 + 22 포트 내 IP만 허용. DB 서버: 5432 포트 VPC 내부에서만 허용.
서버 EC2 + RDS 배포 — 웹 서버는 퍼블릭 서브넷에, PostgreSQL DB는 프라이빗 서브넷에 배치. DB는 외부에서 직접 접근 불가.
도메인 Route 53 DNS 설정myapp.core.today의 A 레코드를 로드밸런서 IP로 지정. CNAME으로 www 서브도메인도 연결.
인증서 HTTPS 적용 — AWS Certificate Manager에서 SSL 인증서 발급. ALB에 적용하여 443 포트에서 HTTPS 트래픽 수신.

VPC, 서브넷, Security Group, DNS, HTTPS — 모두 이 글에서 배운 네트워크 기초 위에 서 있다. 기초가 탄탄하면 클라우드 설정이 "외워야 할 절차"가 아니라 "이해되는 구조"가 된다.


9. 핵심 개념 총정리

마지막으로 이 글에서 다룬 핵심 개념을 한눈에 정리한다.

IP 인터넷 주소 장치의 고유 식별자
Port 서비스 식별 같은 IP의 다른 서비스 구분
DNS 이름 → IP 변환 인터넷의 전화번호부
TCP 신뢰 전송 순서 보장, 재전송
UDP 빠른 전송 실시간 스트리밍, 게임
HTTP 웹 통신 규약 요청-응답 프로토콜
HTTPS 암호화 웹 통신 TLS로 데이터 보호
CIDR 네트워크 크기 표기 VPC 설계의 기본 단위

마치며: 네트워크는 모든 것의 기초다

이 글에서 우리는 인터넷이 작동하는 진짜 원리를 처음부터 끝까지 따라가 봤다.

OSI 계층이 네트워크의 설계도라면, IP는 목적지 주소이고, 포트는 건물 안의 방 번호이며, TCP와 UDP는 배달 방식의 선택이고, DNS는 이름을 주소로 바꿔주는 전화번호부이며, HTTP/HTTPS는 서버와 대화하는 언어다.

그리고 이 모든 것이 클라우드의 근간이 된다. Security Group은 포트 규칙이고, VPC는 가상 네트워크이며, Route 53은 DNS이고, ALB는 HTTP 트래픽을 분배한다. 네트워크를 모르면 클라우드는 "버튼을 외워서 누르는 것"이 되고, 네트워크를 알면 클라우드는 "원리를 이해하고 설계하는 것"이 된다.

DX 전문가로 성장하는 여정에서 네트워크 지식은 선택이 아니라 토대다. 이 토대 위에 클라우드, 컨테이너, 쿠버네티스, 마이크로서비스 — 현대 인프라의 모든 것이 세워진다.

다음 편에서는 이 네트워크 기초 위에 리눅스 서버 기초를 쌓아보자. 클라우드 인스턴스에 SSH(포트 22)로 접속해서 실제로 서버를 다루는 법을 배울 것이다. 오늘 배운 포트, TCP, IP가 손끝에서 살아 움직이는 경험을 하게 될 것이다.

💡
다음 단계 추천: 이 글의 내용을 직접 체험해보자. 브라우저 개발자 도구(F12) → Network 탭을 열고 아무 웹사이트에 접속해보자. DNS 조회, TCP 연결, TLS 핸드셰이크, HTTP 요청/응답이 실시간으로 보인다. 이론이 실전이 되는 순간이다.