73 lines
4.0 KiB
Markdown
73 lines
4.0 KiB
Markdown
# 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>
|
|
```
|