[CS] 웹 프로토콜
프로토콜이란?
1명 이상의 실체(컴퓨터, 서버 등) 사이에서 무엇을, 언제, 어떻게 통신할지 정해놓은 절차, 규칙, 약속을 의미한다.
즉, 데이터를 주고받을 때 반드시 따라야 하는 '통신의 규약'이다.
프로토콜의 구성요소
- Syntax(문법): 데이터 포맷, 부호화 방식
- Semantic(의미): 전송 제어 정보, 오류 처리
- Timing(타이밍): 속도 일치, 순서 제어
웹 프로토콜이란?
웹에서 데이터를 주고받을 때 사용하는 통신 규약을 말한다.
대표적으로 HTTP, HTTPS, FTP, SMTP, DNS, TCP, UDP, SSL, TLS 등이 있다.
주요 웹 프로토콜과 포트 번호
프로토콜 | 설명 | 기본 포트 |
---|---|---|
HTTP | 웹에서 데이터를 주고받는 기본 프로토콜 (비암호화) | 80 |
HTTPS | HTTP에 SSL/TLS로 암호화를 더한 보안 프로토콜 | 443 |
FTP | 파일 전송 프로토콜. 서버와 파일 주고받기 | 21 |
SSH | 보안 원격 접속 프로토콜 | 22 |
SMTP | 이메일 전송 프로토콜 | 25 |
DNS | 도메인 이름을 IP 주소로 변환 | 53 |
POP3 | 이메일 수신 프로토콜 | 110 |
IMAP | 이메일 수신 및 관리 | 143 |
SSL/TLS | 데이터 암호화/보안 계층 (HTTPS 등에서 사용) | -(HTTPS는 443) |
포트 번호는 네트워크에서 각 서비스(프로그램)를 구분하는 식별자 역할을 한다.
예를 들어 http://example.com은 80번 포트, https://example.com은 443번 포트로 접속한다.
HTTP (HyperText Transfer Protocol)
브라우저와 웹 서버가 데이터를 주고받을 때 사용하는 기본 프로토콜이다.
비암호화 상태로 데이터를 전송한다. (포트: 80)
요청/응답 구조로 동작한다.
HTTP 주요 메서드
- GET: 데이터 조회 요청
- POST: 데이터 생성/업로드
- PUT: 데이터 전체 수정
- DELETE: 데이터 삭제
- HEAD: 헤더만 요청
- OPTIONS: 지원 메서드 조회
- PATCH: 데이터 일부 수정
HTTP 1.1 vs HTTP 2.0
- HTTP 1.1: 요청-응답이 순차적(1요청 1응답), 문자열 기반
- HTTP 2.0: 여러 리소스 동시 처리, 바이너리 기반, 헤더 압축 지원
HTTPS (HyperText Transfer Protocol Secure)
HTTP에 SSL/TLS 암호화 계층을 추가한 보안 프로토콜이다.
중간자 공격, 도청, 변조를 방지한다.
서버 인증서(SSL/TLS 인증서)가 필요하다.
SSL / TLS
SSL(Secure Sockets Layer), TLS(Transport Layer Security)는 데이터를 암호화해서 안전하게 전송하게 해주는 보안 프로토콜
SSL은 예전 버전, TLS가 최신 표준이다. (HTTPS 등에서 사용)
- 주로 대칭키 암호화로 실제 데이터 전송, 공개키(비대칭키)는 키 교환에 사용한다.
- 암호화, 무결성, 인증 기능을 제공한다.
FTP (File Transfer Protocol)
파일을 서버와 주고받을 때 사용하는 프로토콜이다. (포트: 21)
다운로드, 업로드, 파일 검색, ASCII/바이너리 전송 등 지원한다.
SMTP / MIME
SMTP(Simple Mail Transfer Protocol)는 이메일을 전송할 때 사용하는 프로토콜이며 텍스트만 전송 가능하다.
MIME(Multi-purpose Internet Mail Extensions)은 이메일에 텍스트 외에도 이미지, 파일 등 다양한 데이터를 첨부할 수 있게 해준다.
DNS (Domain Name System)
도메인 이름(예: google.com)을 숫자 IP 주소로 변환해주는 시스템이다. (응답 데이터가 적고, 한번만 통신하면 되어서 UDP)
유저는 도메인만 입력해도 실제 서버에 연결할 수 있다.
TCP (Transmission Control Protocol)
TCP는 신뢰성과 순서를 보장하는 연결 지향형 프로토콜이다.
데이터가 목적지에 정확하게, 순서대로, 빠짐없이 도착하는 걸 보장한다.
웹(HTTP/HTTPS), 파일 전송(FTP), 이메일(SMTP) 등 데이터 손실이 치명적인 서비스에서 주로 사용한다.
속도보다는 안정성과 신뢰성이 중요한 곳에 적합하다.
- 연결 지향(Connection-oriented): 통신 전에 반드시 연결(세션)을 맺는다.
- 신뢰성(Reliability): 데이터가 손실, 중복, 순서 뒤바뀜 없이 도착하도록 보장한다.
- 흐름 제어(Flow Control): 수신자가 감당할 수 있는 만큼만 데이터를 보낸다.
- 혼잡 제어(Congestion Control): 네트워크 혼잡 상황에서 자동으로 전송 속도를 조절한다.
- 에러 검출 및 재전송: 오류가 있거나 누락된 패킷은 자동으로 재전송한다.
TCP 3-way Handshake
1. 클라이언트 → 서버 : SYN
2. 서버 → 클라이언트 : SYN + ACK
3. 클라이언트 → 서버 : ACK
이 과정을 통해 양쪽 모두 데이터 송수신 준비가 되었음을 확인한다.
TCP 연결 종료 (4-way Handshake)
FIN/ACK 플래그를 이용해 4단계로 연결을 종료한다.
각 방향(송신/수신) 별로 독립적으로 종료된다.
UDP (User Datagram Protocol)
UDP는 연결 없이 데이터를 빠르게 전송하는 비연결형 프로토콜이다.
데이터의 도착, 순서, 무결성 보장을 하지 않는다.
속도가 중요하고, 약간의 데이터 손실이 허용되는 실시간 서비스(영상/음성 스트리밍, 게임, DNS 등)에 주로 사용한다.
- 비연결형(Connectionless): 연결 없이 바로 데이터 전송. 핸드셰이크 과정이 없다.
- 빠른 속도: 신뢰성 보장 기능이 없어서 오버헤드가 적고 전송 속도가 빠르다.
- 신뢰성 없음: 데이터 손실, 중복, 순서 뒤바뀜, 오류 발생 시 별도 처리 없음.
- 단순한 구조: 헤더가 8바이트로 매우 작고 단순하다.
- 주요 사용처: 실시간 스트리밍, 온라인 게임, VoIP, DNS 질의 등.
TCP와 UDP 비교
구분 | TCP | UDP |
---|---|---|
연결 방식 | 연결 지향 (3-way handshake) | 비연결형 (handshake 없음) |
신뢰성 | 보장 (순서, 무결성, 재전송) | 보장 안함 |
속도 | 느림 (오버헤드 큼) | 빠름 (오버헤드 적음) |
용도 | 웹, 파일전송, 이메일 등 | 스트리밍, 게임, DNS 등 |
헤더 크기 | 20바이트 이상 | 8바이트 |
흐름/혼잡 제어 | 있음 | 없음 |
패킷 순서 | 순서 보장 | 순서 보장 안함 |
기타 주요 프로토콜
- IMAP(143): 이메일 수신 및 관리
- POP3(110): 이메일 수신
- Telnet(23): 원격 접속(비암호화)
- DHCP(67,68): 동적 IP 할당
- RDP(3389): 원격 데스크톱
포스팅에 참고한 사이트 : http://www.ktword.co.kr/test/search/srch.php