HTTP(HyperText Transfer Protocol)

Kkd·2024년 12월 7일
0

매일메일 개념정리

목록 보기
20/93

HTTP란?

HTTP(HyperText Transfer Protocol)는 웹 브라우저와 웹 서버가 통신할 때 사용하는 프로토콜입니다. 텍스트, 이미지, 동영상 등 다양한 데이터를 클라이언트(주로 브라우저)와 서버 간에 주고받는 데 사용됩니다. 현재는 HTTP/1.1, HTTP/2, 그리고 HTTP/3 같은 최신 버전으로 발전해 왔습니다.


1. HTTP의 주요 특징

  1. 비연결성(Stateless)

    • 각 요청과 응답은 독립적입니다.
    • 서버는 이전 요청의 상태를 유지하지 않으므로 클라이언트가 매 요청마다 필요한 정보를 전달해야 합니다.
  2. 무상태성(Stateless)

    • 서버는 클라이언트와의 상태를 기억하지 않습니다.
    • 상태 유지를 위해 쿠키, 세션, JWT 등을 사용합니다.
  3. TCP/IP 기반

    • HTTP는 TCP/IP 프로토콜 위에서 동작합니다.
    • 클라이언트와 서버 간 연결이 필요한 경우 TCP로 연결을 설정한 뒤 데이터를 전송합니다.
  4. 유연성

    • 텍스트, 이미지, JSON, XML 등 다양한 형식의 데이터를 전송할 수 있습니다.
    • 확장성이 뛰어나 다양한 애플리케이션에서 사용 가능합니다.

2. HTTP 요청(Request)

구조

  • HTTP 메서드: 요청의 목적을 정의 (GET, POST, PUT, DELETE 등)
  • URL: 요청 대상의 위치 (예: /api/users)
  • HTTP 버전: 사용된 HTTP 프로토콜 버전 (예: HTTP/1.1)
  • 헤더(Header): 요청에 대한 추가 정보를 전달
  • 본문(Body): POST, PUT 요청 등에서 데이터 전달

예시

GET /api/products HTTP/1.1
Host: example.com
Accept: application/json

3. HTTP 응답(Response)

구조

  • HTTP 상태 코드(Status Code): 요청 처리 결과를 숫자로 표현
  • 헤더(Header): 응답에 대한 메타데이터 (예: Content-Type)
  • 본문(Body): 클라이언트가 요청한 데이터

예시

HTTP/1.1 200 OK
Content-Type: application/json

{
  "id": 1,
  "name": "Laptop",
  "price": 1000
}

주요 상태 코드

  • 1xx (정보): 요청을 처리 중 (거의 사용되지 않음)
  • 2xx (성공): 요청 성공
    • 200: 성공
    • 201: 생성됨
  • 3xx (리다이렉션): 클라이언트가 다른 위치로 이동해야 함
    • 301: 영구 리다이렉션
    • 302: 임시 리다이렉션
  • 4xx (클라이언트 오류): 요청에 문제가 있음
    • 400: 잘못된 요청
    • 401: 인증 필요
    • 404: 리소스를 찾을 수 없음
  • 5xx (서버 오류): 서버가 요청을 처리하지 못함
    • 500: 내부 서버 오류
    • 503: 서비스 이용 불가

4. HTTP 메서드

  1. GET

    • 리소스를 조회
    • 요청 본문이 없음
  2. POST

    • 리소스를 생성
    • 본문에 데이터를 포함
  3. PUT

    • 리소스를 업데이트 (전체)
    • 기존 데이터가 있으면 덮어씀
  4. PATCH

    • 리소스를 부분 업데이트
  5. DELETE

    • 리소스를 삭제
  6. HEAD

    • GET과 유사하지만 본문 없이 응답 헤더만 반환
  7. OPTIONS

    • 서버가 지원하는 메서드를 조회

5. HTTP와 HTTPS의 차이

구분HTTPHTTPS
보안데이터를 암호화하지 않음데이터를 SSL/TLS로 암호화
포트80번 사용443번 사용
속도더 빠름암호화로 인해 약간 느림
URLhttp://https://

6. HTTP의 버전별 특징

  1. HTTP/1.1

    • 현재 가장 널리 사용됨
    • Keep-Alive 지원 (연결 재사용 가능)
    • 요청/응답이 순차적으로 처리됨
  2. HTTP/2

    • 멀티플렉싱: 하나의 연결에서 다수 요청 처리 가능
    • 헤더 압축 지원으로 전송 효율 향상
  3. HTTP/3

    • UDP 기반 QUIC 프로토콜 사용
    • 연결 설정 및 데이터 전송 속도 향상

7. HTTP 요청과 응답의 과정

  1. 클라이언트 요청:

    • 브라우저에서 URL 입력 → HTTP 요청 전송
  2. DNS 조회:

    • 도메인 이름 → IP 주소 변환
  3. 서버 연결:

    • TCP 또는 QUIC 연결 설정
  4. 서버 요청 처리:

    • 요청 분석 → 필요한 데이터 조회 또는 처리
  5. 응답 생성 및 반환:

    • 상태 코드, 데이터와 함께 HTTP 응답 반환
  6. 결과 렌더링:

    • 브라우저가 응답 데이터를 받아 사용자 화면에 표시

HTTP는 현대 웹의 근간을 이루는 프로토콜로, 다양한 클라이언트와 서버 간의 효율적이고 확장 가능한 데이터 교환을 가능하게 합니다.

추가 학습 자료

profile
🌱

0개의 댓글