🌐 인터넷(Internet)이란?
- 전 세계의 컴퓨터 네트워크들이 TCP/IP 프로토콜을 통해 연결된 거대한 통신망
- 이를 통해 지구 반대편에 있는 컴퓨터와도 정보를 주고받을 수 있음
인터넷은 어떻게 연결되어 있을까?
📮 인터넷 프로토콜 IP (Internet Protocol)
- 컴퓨터들 사이에서 데이터를 주고받는 방법(규칙)
- 모든 통신은 정해진 규약을 따라야 혼선 없이 전달이 가능함
IP 주소란?

❗ IP 방식의 한계점
1) 애플리케이션 구분 불가

2) 비연결성 (Connectionless)

3) 비신뢰성 (Unreliable)
패킷이 유실되거나 순서가 바뀌는 경우에도 재전송하지 않음

데이터가 여러 개의 패킷으로 나뉘어 전달되면, 수신자가 이를 재조합하지 못할 수 있음

💡 IP는 최선형 전달(Best-effort delivery)만 보장할 뿐, 완전한 데이터 신뢰성을 보장하지 않음
📦 TCP(Transmission Control Protocol)란?
- 서버와 클라이언트 간 데이터를 신뢰성 있게 전달하기 위해 만들어진 전송 계층의 프로토콜
- 연결 지향(Connection-oriented): 데이터를 주고받기 전에 연결부터 설정
- 순서 보장: 데이터 패킷의 순서가 어긋나지 않게 관리
- 데이터 손실 감지 및 재전송: 패킷 손실 시 자동 재전송
🔁 TCP의 연결 방식: 3-Way Handshake

| 단계 | 설명 |
|---|---|
| 1. SYN | 클라이언트가 서버에 연결 요청 |
| 2. SYN + ACK | 서버가 요청을 수락하고 응답 |
| 3. ACK | 클라이언트가 응답을 확인하고 연결 성립 |
→ 이 과정을 통해 논리적인 연결을 성립함(실제 물리 연결은 아님)
> 데이터 전송 여부
→ TCP를 통해 통신하면 데이터를 잘 받았다는 응답을 반환해 줌
> 패킷 순서
→ 패킷이 나뉘어져서 도착해도 순서 보장
⚠️ 단점: 연결을 설정하고 상태를 관리하므로 속도는 느릴 수 있음
🚀 UDP(User Datagram Protocol)란?
- 연결을 설정하지 않고, 빠르게 데이터를 전달하는 전송 계층 프로토콜
- 비연결형: 3-way handshake 없음
- 비신뢰성: 패킷 손실, 순서 변경 감지 안 됨
- 빠른 속도: 실시간성이 중요한 환경에 적합
- UDP의 추가 기능: 체크섬(Checksum)
- 데이터 손상 여부를 검증하는 최소한의 기능 포함
- HTTP/3도 UDP 기반으로 동작(UDP + QUIC)
🏢 PORT란?
- IP만으로 부족한 프로세스 구분 수단
- 하나의 IP 주소 안에는 여러 개의 애플리케이션이 동시에 동작할 수 있음
- ex) 브라우저(80), 메일(25), SSH(22) 등
📌 포트는 아파트의 “호수”와 같은 역할을 함!

→ 같은 건물(IP) 안에서도 정확히 어느 방(프로그램)인지 지정해야 됨
🔍 TCP/UDP와 포트 번호
| 항목 | 설명 |
|---|---|
| 범위 | 0 ~ 65535 |
| Well-known 포트 | 0 ~ 1023 (사용 권장 X) |
| 개발용 포트 | 1024 ~ 49151 (등록된 포트), 49152 ~ 65535 (임시 포트) |
🔢 자주 사용하는 포트 번호
| 프로토콜 | 포트 번호 | 설명 |
|---|---|---|
| HTTP | 80 (TCP) | 웹 페이지 기본 포트 |
| HTTPS | 443 (TCP) | 암호화된 웹 페이지 |
| FTP | 20, 21 (TCP) | 파일 전송 |
| SSH | 22 (TCP) | 원격 접속 |
| DNS | 53 (UDP/TCP) | 도메인 변환 |
| DHCP | 67 (UDP) | IP 자동 할당 |
| RDP | 3389 (TCP/UDP) | 원격 데스크탑 |
📡 DNS(Domain Name System)란?
- 사람이 이해할 수 있는 도메인 이름을 컴퓨터가 통신할 수 있는 IP 주소로 변환해 주는 시스템
🔧 DNS가 필요한 이유
⚙️ DNS 동작 순서
1. 원하는 이름의 도메인 구매 후, DNS 서버에 등록

2. 도메인 이름을 입력하면 DNS 서버는 IP 주소를 반환

3. IP가 변경되면 DNS 서버에 등록된 IP 주소만 바뀌면 됨
4. 이용자는 IP주소의 형태가 아닌 https://spartacodingclub.kr/의 도메인 이름 형태로 웹에 접속
🧾 URI(Uniform Resource Identifier)란?
- 인터넷 자원(Resource)을 식별할 수 있도록 만든 통일된 식별 체계
📚 URI의 구성

📦 URI의 종류
| 구분 | 설명 | 예시 |
|---|---|---|
| URL | 자원의 위치(Location)를 지정 | https://spartacodingclub.kr/ |
| URN | 자원의 이름(Name)을 지정 | urn:isbn:9781234567890 |
> URL 방식의 한계
https://spartacodingclub.kr/ 사이트가 노출됨https://spartacodingclub2.kr/ 로 바꾼다면 기존 경로를 아는 사람들은 검색 페이지의 URL이 업데이트되지 않으면 페이지를 찾을 수 없음> URN(Uniform Resource Name)
📍 URL(Uniform Resource Locator)이란?
- 인터넷 상의 자원(Resource)의 위치를 알려 주는 전체 경로
- 즉, 우리가 흔히 말하는 웹 주소
🧱 URL의 구조와 각 요소
ex)
https://www.google.com:443/search?q=스파르타+코딩클럽
| 요소 | 설명 |
|---|---|
scheme | 프로토콜 (http, https, ftp 등) |
user[:password] | 사용자 정보 (거의 사용 X) |
host[:port] | 도메인명 또는 IP 주소, 포트 번호 (https는 443, http는 80) |
/path | 리소스의 경로 (계층적 구조) |
?query | 쿼리 파라미터: key=value 형식으로 서버에 데이터 전달 |
#fragment | 페이지 내 특정 위치로 이동 (북마크 등) |
→ 쿼리 파라미터는 ?key1=value1&key2=value2 형식으로 여러 개 전달 가능
→ URL은 위치 중심 / URN은 이름 중심