콘텐츠로 이동

응용 계층

1. HTTP / HTTPS

HTTP (HyperText Transfer Protocol)

웹에서 데이터를 주고받는 프로토콜입니다. 비상태(Stateless) 특성을 가집니다.

버전 특징
HTTP/1.0 요청마다 연결/종료
HTTP/1.1 Keep-Alive (연결 재사용), 파이프라이닝
HTTP/2.0 멀티플렉싱, 헤더 압축, 서버 푸시
HTTP/3.0 QUIC(UDP 기반), 연결 속도 향상

HTTPS

HTTP + TLS(SSL) 암호화. 443 포트 사용.

  • 데이터 기밀성, 무결성, 서버 인증 제공
  • 인증서(Certificate)를 통해 서버 신원 확인

2. HTTP 메서드

메서드 설명 멱등성
GET 리소스 조회 있음
POST 리소스 생성 없음
PUT 리소스 전체 수정 있음
PATCH 리소스 부분 수정 없음
DELETE 리소스 삭제 있음
HEAD GET과 동일하나 바디 제외 있음
OPTIONS 지원 메서드 조회 있음

멱등성: 같은 요청을 여러 번 해도 결과가 동일

HTTP 상태 코드

코드 범위 의미
1xx 정보 (처리 중)
2xx 성공 (200 OK, 201 Created)
3xx 리다이렉션 (301 Moved, 304 Not Modified)
4xx 클라이언트 오류 (400 Bad Request, 401 Unauthorized, 403 Forbidden, 404 Not Found)
5xx 서버 오류 (500 Internal Server Error, 503 Service Unavailable)

3. REST API

REpresentational State Transfer — HTTP를 활용한 아키텍처 스타일입니다.

REST 6원칙

  1. 클라이언트-서버 분리: 역할 명확히 구분
  2. 무상태(Stateless): 요청 간 상태 저장 안 함
  3. 캐시 가능: 응답에 캐시 가능 여부 명시
  4. 균일한 인터페이스: 일관된 URL 구조와 메서드 사용
  5. 계층 구조: 클라이언트는 중간 서버 존재 여부 알 필요 없음
  6. 코드 온 디맨드(선택): 서버가 클라이언트에 코드 전송 가능

RESTful URL 설계

GET    /users          → 사용자 목록 조회
GET    /users/1        → ID 1 사용자 조회
POST   /users          → 사용자 생성
PUT    /users/1        → ID 1 사용자 전체 수정
PATCH  /users/1        → ID 1 사용자 부분 수정
DELETE /users/1        → ID 1 사용자 삭제

4. 쿠키 / 세션 / JWT

HTTP의 무상태 특성을 보완하기 위한 상태 유지 방법입니다.

  • 클라이언트(브라우저) 에 저장
  • 서버가 Set-Cookie 헤더로 전달
  • 이후 요청마다 자동으로 포함
  • 만료 시간 설정 가능
  • 단점: 보안 취약(탈취 위험), 용량 제한(4KB)

세션 (Session)

  • 서버에 상태 저장, 클라이언트는 세션 ID만 쿠키로 보유
  • 서버 측에서 관리하여 보안성 높음
  • 단점: 서버 메모리 사용, 분산 환경에서 세션 공유 문제
구분 쿠키 세션
저장 위치 클라이언트 서버
보안 낮음 높음
서버 부하 없음 있음
만료 설정 가능 브라우저 종료 시

JWT (JSON Web Token)

  • 토큰 기반 인증 방식
  • 서버에 상태 저장 불필요 → 확장성 좋음 (Stateless)
  • 구조: Header.Payload.Signature
eyJhbGciOiJIUzI1NiJ9.eyJ1c2VySWQiOiIxMDAxIn0.xyzABC...
     Header                  Payload              Signature
  • 장점: 분산 환경에 적합, 서버 부하 없음
  • 단점: 토큰 탈취 시 만료 전까지 무효화 어려움

시험 포인트

  • HTTP vs HTTPS: 암호화 여부 (TLS), 포트(80 vs 443)
  • HTTP 메서드: GET(조회), POST(생성), PUT(전체 수정), PATCH(부분 수정), DELETE(삭제)
  • 멱등성: GET/PUT/DELETE는 있음, POST/PATCH는 없음
  • 상태 코드: 2xx(성공), 3xx(리다이렉트), 4xx(클라이언트 오류), 5xx(서버 오류)
  • REST 무상태: 요청 간 서버에 상태 저장 안 함
  • 쿠키 vs 세션: 저장 위치(클라이언트 vs 서버)
  • JWT: Stateless 토큰, Header.Payload.Signature 구조