HTTP - 1

김명주·2025년 1월 7일

HTTP (HyperText Transfer Protocol)

HTTP는 웹 상에서 데이터를 주고받기 위한 프로토콜로, 주로 HTML과 같은 웹 페이지를 전송하는데 사용된다

특징

  • 무상태성 : HTTP는 각 요청과 응답이 독립적이며 서버는 요청 간의 상태를 유지하지 않는다.
  • 포트 : 기본적으로 80번 포트를 사용
  • 요청/응답 구조 : 클라이언트가 서버에 요청을 보내고 서버는 이에 대한 응답을 한다. 일반적인 요청 메소드에는 GET, POST, PUT, DELET 등이 있다.
  • 보안 취약점 : HTTP는 데이터를 암호화하지 않고 평문으로 전송하기 때문에 도청, 데이터 조작 등에 취약하다.

HTTP 요청 (HTTP Request)

HTTP 요청은 클라이언트가 서버에 데이터를 요청하는 메시지다.
요청 메시지는 세 가지 주요 구성 요소로 나뉜다.

  • 요청 라인 (Request Line)
    • 요청 라인은 HTTP 메소드, 요청 URL, 그리고 HTTP 버전으로 이루어진다.

      • HTTP 메소드 : 서버에 수행할 작업을 지시한다.

        • GET : 서버로부터 리소스 요청
        • POST : 서버에 데이터를 전송하여 처리를 요청
        • PUT : 서버에 자원을 업데이트
        • DELETE : 서버에서 리소스 삭제
        • HEAD : GET 과 유사하지만 리소스의 본문은 요청하지 않고 헤더 정보만 요청
      • 요청 URL : 클라이언트가 요청하는 리소스의 위치를 지정한다.

      • HTTP 버전 : HTTP 프로토콜의 버전 정보

  • 헤더 (Headers)
    • 요청 헤더는 클라이언트가 서버에 전달하는 추가적인 정보를 포함한다. 일반적으로 키-값 쌍으로 이루어져 있으며 헤더의 종류에 따라 다양한 정보를 포함할 수 있다.

      • Host : 요청할 서버의 도메인
      • User-Agent : 클라이언트 소프트웨어의 정보
      • Accept : 클라이언트가 지원하는 컨텐츠 유형
      • Content-Type : 요청 본문의 콘텐츠 타입(POST/PUT 요청 시)
  • 본문 (Body)
    • 주로 POST, PUT 같은 메소드에서 사용되며 클라이언트가 서버에 전솔할 데이터를 포함한다.

HTTP 응답 (HTTP Response)

HTTP 응답은 서버가 클라이언트의 요청에 대한 결과를 전달하는 메시지다.
일반적으로 세 가지 주요 구성 요소로 이루어진다.

  • 상태 라인 (Status Line)
    • 상태 라인은 HTTP 버전, 상태 코드, 상태 메시지로 구성된다.

      • HTTP 버전 : 응답이 사용한 HTTP 프로토콜의 버전

      • 상태 코드 : 서버가 클라이언트의 요청에 대해 응답하는 상태

        • 200 OK : 요청이 성공적으로 처리됨
        • 404 Not Found : 요청한 리소스를 찾을 수 없음
        • 500 Internal Server Error : 서버 내부 오류 발생
      • 상태 메시지 : 상태 코드의 설명을 간단히 제공.

  • 헤더 (Headers)
    • 응답 헤더는 서버가 클라이언트에게 전달하는 부가 정보다.

      • Content-Type : 응답 본문의 컨텐츠
      • Content-Length : 응답 본문의 길이
      • Set-Cookie : 클라이언트에게 쿠리를 설정하는 정보
  • 본문 (Body)
    • 클라이언트가 요청한 리소르를 포함한다. 주로 GET 요청에 대한 응답으로 사용된다.

HTTP 통신 과정

  1. 클라이언트 요청 : 브라우저가 사용자가 입력한 URL 기반으로 HTTP 요청을 생성한다.
  2. 서버 처리 : 서버는 요청을 받고 요청한 리소스(HTML 파일 등)를 처리한다.
  3. 서버 응답 : 서버는 요청에 대한 결과(상태 코드, 리소스 등)를 HTTP 응답 형태로 클라이언트에 전송한다.
  4. 브라우저 렌더링 : 브라우저는 받은 응답 데이터를 해석하여 화면에 출력한다.
Client                                Server
   |                                     |
   |   -------- HTTP Request -------->   |
   |                                     |
   |   1. Request Line                   |
   |      - Method (GET, POST, etc.)     |
   |      - URL                          |
   |      - HTTP Version                 |
   |                                     |
   |   2. Request Headers                |
   |      - Host                         |
   |      - User-Agent                   |
   |      - Accept                       |
   |      ...                            |
   |                                     |
   |   3. Request Body (optional)        |
   |                                     |
   |                                     |
   |   <-------- HTTP Response -------   |
   |                                     |
   |   1. Status Line                    |
   |      - HTTP Version                 |
   |      - Status Code                  |
   |      - Status Message               |
   |                                     |
   |   2. Response Headers               |
   |      - Content-Type                 |
   |      - Content-Length               |
   |      - Set-Cookie                   |
   |      ...                            |
   |                                     |
   |   3. Response Body                  |
   |      - Resource (HTML, JSON, etc.)  |
   |                                     |
profile
개발자를 향해 달리는 사람

0개의 댓글