HTTP

HTTP 기초 개념: 메소드, 상태 코드, 쿠키, 세션 이해하기

@leem 2024. 12. 31. 17:46

Hyper Text Transfer Protocol

1. HTTP와 HTTPS 차이

구분 HTTP HTTPS 
프로토콜 하이퍼텍스트 전송 프로토콜 하이퍼텍스트 전송 프로토콜 + SSL/TLS 암호화
보안 데이터 평문 전송 (취약) 데이터 암호화 전송 (안전)
포트 번호 80번 포트 사용 443번 포트 사용
인증서 없음 SSL/TLS 인증서 필요
속도 빠름 암호화로 인해 약간 느림
사용 사례 공개된 웹 페이지 민감 정보 교환 (로그인, 결제 등)
HTTPS는 TLS(전송 계층 보안)를 통해 데이터를 암호화하여 안전하게 통신함

 

2. HTTP 상태 코드

  • 1xx (정보): 요청을 받고 처리 중
  • 2xx (성공): 요청 성공
    • 200 OK: 요청이 성공적으로 처리됨.
    • 201 Created: 요청이 성공적으로 처리되었고 리소스가 생성
  • 3xx (리다이렉션): 다른 리소스로 이동
    • 301 Moved Permanently: 요청한 리소스가 영구적으로 이동
    • 302 Found: 리소스가 일시적으로 이동
  • 4xx (클라이언트 오류): 요청에 문제가 있음
    • 400 Bad Request: 잘못된 요청
    • 401 Unauthorized: 인증 필요
    • 403 Forbidden: 접근 금지
    • 404 Not Found: 요청한 리소스를 찾을 수 없음
  • 5xx (서버 오류): 서버가 요청을 처리할 수 없음
    • 500 Internal Server Error: 서버 내부 오류
    • 502 Bad Gateway: 게이트웨이 오류
    • 503 Service Unavailable: 서버가 현재 요청을 처리할 수 없음
상태 코드를 통해 클라이언트와 서버 간 요청 응답 상태를 파악

 

3. HTTP 메소드

  • GET: 리소스를 조회할 때 사용
  • POST: 새로운 리소스를 생성할 때 사용
  • PUT: 기존 리소스를 수정할 때 사용
  • DELETE: 리소스를 삭제할 때 사용
  • PATCH: 리소스의 일부만 수정할 때 사용

3-1. PUT과 PATCH 차이와 예

구분 PUT PATCH
목적 리소스를 전체 수정 리소스의 일부만 수정
작업 방식 전체 리소스를 새 데이터로 교체 특정 필드만 수정
리소스 존재 여부 리소스가 없다면 생성될 수 있음 리소스가 이미 존재해야 함
데이터 전송 전체 리소스를 포함한 요청 변경할 필드만 포함한 요청
예시 사용자 전체 정보 수정 (이름, 이메일, 주소 등) 사용자 이메일만 수정
HTTP Idempotent (멱등성) Yes (여러 번 요청해도 결과 동일) Yes (여러 번 요청해도 결과 동일)

1. PUT 

PUT /users/123
Content-Type: application/json

{
  "name": "John Doe",
  "email": "john@example.com",
  "address": "123 Main St"
}​
  • PUT은 users/123 리소스를 전체 수정, 기존 값이 없으면 새로 생성될 수 있음.

2. PATCH 

PATCH /users/123
Content-Type: application/json

{
  "email": "john_updated@example.com"
}​
  • PATCH는 users/123 리소스의 email 필드만 일부만 수정.

4. 쿠키와 세션의 차이

구분 쿠키 세션
저장 위치 클라이언트 브라우저 서버
보안성 낮음 (클라이언트 저장) 높음 (서버 저장)
용량 제한 4KB 제한 서버 메모리 한계에 따름
사용 목적 사용자 정보 저장 (자동 로그인 등) 사용자 인증 및 상태 유지
유효 기간 설정된 시간까지 유지 브라우저 종료 시 삭제(기본)
쿠키클라이언트에 저장되며 상태를 유지, 세션서버에서 관리.

 

 

5. 개념 요약

HTTP는 평문으로 데이터를 전송
HTTPS는 TLS를 통해 안전하게 암호화
HTTP 상태 코드는 요청/응답의 상태를 나타냄
HTTP 메소드는 특정 동작(GET, POST, PUT, DELETE 등)을 서버에 요청
쿠키는 클라이언트에서 데이터를 저장, 세션은 서버에서 상태를 관리함