Files
html-examples/doc/http/01_http.md
2025-02-09 19:02:05 +09:00

4.0 KiB

HTTP

**HTTP(HyperText Transfer Protocol)**는 웹에서 정보를 주고받기 위해 사용되는 기본적인 통신 규약입니다. 우리가 웹 브라우저를 통해 웹페이지를 보거나, 이미지를 다운로드하거나, 온라인 쇼핑을 할 때 모두 HTTP 프로토콜이 사용됩니다.

HTTP 프로토콜의 역할

  • 웹 페이지 요청: 사용자가 웹 브라우저의 주소창에 URL을 입력하면 브라우저는 해당 URL에 대한 HTTP 요청을 서버로 보냅니다.
  • 서버의 응답: 서버는 요청받은 내용을 처리하고, 요청된 웹 페이지의 HTML 코드, 이미지, CSS 파일 등을 포함하는 HTTP 응답을 브라우저로 보냅니다.
  • 브라우저의 렌더링: 브라우저는 받은 응답을 해석하여 우리가 보는 웹 페이지로 렌더링합니다.

HTTP 프로토콜의 특징

  • 클라이언트-서버 구조: HTTP는 클라이언트(브라우저)가 서버에 요청을 보내고, 서버가 응답하는 클라이언트-서버 구조를 기반으로 합니다.
  • 무상태(Stateless): 각 요청은 독립적이며, 서버는 이전 요청에 대한 정보를 저장하지 않습니다.
  • 비연결성(Connectionless): 한 번의 요청-응답이 이루어지면 연결이 끊어집니다.
  • 단순성: HTTP는 비교적 간단한 구조로 되어 있어 구현하기 쉽고, 다양한 플랫폼에서 사용될 수 있습니다.

HTTP 메서드

HTTP 메서드는 클라이언트가 서버에 요청하는 작업의 종류를 나타냅니다. 주요 HTTP 메서드는 다음과 같습니다.

  • GET: 특정 자원을 요청합니다. (예: 웹 페이지 조회)
  • POST: 서버에 새로운 데이터를 전송합니다. (예: 회원 가입, 게시글 작성)
  • PUT: 특정 자원을 업데이트합니다.
  • DELETE: 특정 자원을 삭제합니다.

HTTP 상태 코드

HTTP 상태 코드는 서버가 클라이언트의 요청에 대해 어떻게 처리했는지를 나타내는 숫자 코드입니다.

  • 200 OK: 요청이 성공적으로 처리되었습니다.
  • 404 Not Found: 요청한 자원이 없습니다.
  • 500 Internal Server Error: 서버에서 오류가 발생했습니다.

HTTP와 HTTPS의 차이점

  • HTTP: 일반적인 HTTP는 데이터를 암호화하지 않기 때문에 통신 내용이 도청될 위험이 있습니다.
  • HTTPS: HTTPS는 HTTP에 SSL/TLS 암호화를 추가하여 데이터를 안전하게 보호합니다. 따라서 개인정보나 금융 정보를 다루는 웹사이트에서는 HTTPS를 사용하는 것이 필수적입니다.

HTTP 버전

HTTP는 지속적으로 발전하고 있으며, 현재 주로 사용되는 버전은 HTTP/1.1과 HTTP/2입니다. HTTP/2는 HTTP/1.1보다 더 빠르고 효율적인 통신을 지원합니다.

HTTP 요청 (HTTP Request)

클라이언트가 서버에 보내는 메시지를 의미합니다. 요청에는 요청 메서드, 요청 URL, 헤더, 본문 등이 포함됩니다.

  • 요청 메서드: 수행하고자 하는 작업을 나타냅니다. (GET, POST, PUT, DELETE 등)
  • 요청 URL: 요청하려는 자원의 위치를 나타냅니다.
  • 헤더: 추가적인 정보를 제공합니다. (User-Agent, Accept 등)
  • 본문: 서버로 전송할 데이터 (POST 메서드에서 주로 사용)
GET /products HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

HTTP 응답 ( HTTP Response)

서버가 클라이언트에게 보내는 메시지를 의미합니다. 응답에는 상태 코드, 헤더, 본문 등이 포함됩니다.

  • 상태 코드: 요청 처리 결과를 나타냅니다. (200 OK, 404 Not Found 등)
  • 헤더: 추가적인 정보를 제공합니다. (Content-Type, Content-Length 등)
  • 본문: 요청한 데이터
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
Content-Length: 1234

<!DOCTYPE html>
<html>
<head>
  <title>제품 목록</title>
</head>
<body>
  </body>
</html>