2026-02-16

HTTP (HyperText Transfer Protocol)

프로토콜: 컴퓨터들끼리 HTML파일을 주고받을 수 있도록 하는 소통방식 또는 약속

HTTP란 무엇인가

클라이언트와 서버가 데이터를 주고받기 위한 통신 규약(프로토콜)

  • 브라우저가 서버에 요청(Request)을 보내고
  • 서버가 응답(Response)을 보내는 구조
  • 웹의 기본 통신 방식

HTTP의 기본 구조

HTTP는 요청–응답(Request–Response) 모델로 동작

  • Request 구조
    GET /users HTTP/1.1
    Host: example.com
    Content-Type: application/json
    

    구성 요소:

    • Method
    • URL
    • Headers
    • Body (선택)
  • Response 구조
    HTTP/1.1200 OK
    Content-Type: application/json
    

    구성 요소:

    • Status Code
    • Headers
    • Body

HTTP의 특징

  • Stateless (무상태)
    • 서버는 이전 요청을 기억하지 않는다.
    • 매 요청은 독립적이다.
    • ⇒ 그래서 쿠키, 세션, 토큰이 필요
  • Connectionless (비연결성)
    • 요청–응답 후 연결을 끊는다.
    • HTTP/1.1부터는 Keep-Alive로 개선됨.

URL

서버에 자원을 요청하기 위해 입력하는 영문 주소

image.png

HTTP 메서드

⇒ REST API 설계의 핵심

메서드 역할
GET 데이터 조회
POST 데이터 생성
PUT 전체 수정
PATCH 부분 수정
DELETE 삭제

HTTP 상태 코드

범위 의미
1xx 정보
2xx 성공
3xx 리다이렉션
4xx 클라이언트 오류
5xx 서버 오류

자주 쓰이는 코드:

  • 200 OK
  • 201 Created
  • 204 No Content
  • 400 Bad Request
  • 401 Unauthorized
  • 403 Forbidden
  • 404 Not Found
  • 500 Internal Server Error

HTTP와 HTTPS 차이

  • HTTP는 평문 통신
  • HTTPS는 HTTP + SSL/TLS 암호화
    • 데이터가 암호화되어 전송됨
    • 보안 필수

HTTP 버전 차이

  • HTTP/1.1
    • Keep-Alive
    • 하지만 Head-of-Line Blocking 문제 존재
  • HTTP/2
    • 멀티플렉싱
    • 헤더 압축
    • 서버 푸시
  • HTTP/3
    • TCP 대신 QUIC 사용
    • 속도 및 안정성 개선

프론트엔드에서 중요한 HTTP 개념

  • CORS (Cross-Origin Resource Sharing)
    • 다른 출처로 요청 시 브라우저가 차단
    • 서버가 허용 헤더를 내려야 통과
  • 캐싱 (Caching)
    • Cache-Control
    • ETag
    • Last-Modified
    • ⇒ 성능 최적화 핵심
  • 쿠키 vs 토큰
    • 쿠키: 브라우저 자동 전송
    • 토큰(JWT): 헤더에 직접 포함

요약

  • HTTP는 요청–응답 기반 통신 프로토콜
  • Stateless(무상태) 구조
  • 메서드와 상태 코드로 의도 표현
  • HTTPS는 암호화 버전
  • CORS, 캐싱은 프론트에서 매우 중요

참고자료

  • https://velog.io/@simoniful/%ED%94%84%EB%9F%B0%ED%8A%B8%EC%97%94%EB%93%9C-%EA%B4%80%EB%A0%A8-%EC%95%8C%EC%95%84%EC%95%BC-%ED%95%98%EB%8A%94-HTTP-%ED%94%84%EB%A1%9C%ED%86%A0%EC%BD%9C-1
  • https://yooneeee.tistory.com/121
  • https://joshua1988.github.io/web-development/http-part1/
  • https://f-lab.kr/insight/http-requests-cors-20240814

results matching ""

    No results matching ""