CS

[CS] 웹 프로토콜

힛해 2025. 5. 30. 00:17
728x90

프로토콜이란?

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