코딩 스쿨 HTTP

언어선택 : HTMLCSSJAVAJAVASCRIPTMYSQLSQL PHP

HTTP Messages

1. HTTP란?

HTTP(HyperText Transfer Protocol)는 클라이언트(웹 브라우저)와 서버 간의 통신을 담당하는 프로토콜입니다. HTTP는 웹 페이지, 이미지, 비디오와 같은 다양한 리소스를 요청하고 응답하는 데 사용되며, HTTP 메시지는 이러한 통신을 위한 기본 단위입니다. HTTP 메시지는 크게 **요청(request)**과 응답(response) 메시지로 나뉩니다.


2. HTTP 요청 메시지 구조

HTTP 요청 메시지는 클라이언트(브라우저)가 서버로 데이터를 요청할 때 사용되는 메시지입니다. 요청 메시지는 세 가지 주요 요소로 구성됩니다.

2.1 HTTP 요청 메시지의 구조

  1. 요청 줄(Request Line): 요청의 메서드, 요청 대상 URL, 그리고 HTTP 버전을 포함합니다.
  2. 헤더(Header): 요청에 대한 추가 정보(클라이언트 정보, 콘텐츠 유형 등)를 제공합니다.
  3. 본문(Body): 선택적 요소로, 주로 POST와 PUT 요청에서 서버로 전송할 데이터를 포함합니다.

HTTP 요청 메시지 예시:

vbnet
코드 복사
GET /index.html HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36
Accept: text/html

예시 설명:

  • GET: 요청 메서드.
  • /index.html: 요청 URL 경로.
  • HTTP/1.1: HTTP 버전.
  • 헤더에는 호스트, 사용자 에이전트, 수락 가능한 콘텐츠 형식 등이 포함됩니다.
  • 본문은 주로 POST나 PUT 요청에 포함되며, GET 요청에는 포함되지 않습니다.

주요 HTTP 요청 메서드:

메서드 설명
GET 서버에서 리소스를 요청할 때 사용.
POST 서버로 데이터를 제출할 때 사용.
PUT 서버에 데이터를 생성하거나 업데이트할 때 사용.
DELETE 서버에서 리소스를 삭제할 때 사용.
HEAD GET 요청과 동일하지만 응답 본문을 반환하지 않음.
OPTIONS 서버에서 사용할 수 있는 HTTP 메서드 옵션을 확인할 때 사용.

3. HTTP 응답 메시지 구조

HTTP 응답 메시지는 서버가 클라이언트의 요청에 대한 결과를 반환할 때 사용됩니다. 응답 메시지도 세 가지 주요 요소로 구성됩니다.

3.1 HTTP 응답 메시지의 구조

  1. 상태 줄(Status Line): 서버의 응답 상태 코드와 응답 메시지를 포함합니다.
  2. 헤더(Header): 응답에 대한 추가 정보(콘텐츠 유형, 서버 정보 등)를 제공합니다.
  3. 본문(Body): 요청된 리소스의 실제 콘텐츠(예: HTML 문서, 이미지 등)를 포함합니다.

HTTP 응답 메시지 예시:

HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 138

<html>
<head>
    <title>Welcome to Example</title>
</head>
<body>
    <h1>Hello, World!</h1>
</body>
</html>

예시 설명:

  • HTTP/1.1: 응답이 HTTP 1.1 프로토콜을 사용하고 있음을 의미.
  • 200 OK: 상태 코드와 메시지. 200은 성공적인 응답을 의미.
  • 헤더에는 응답 콘텐츠의 유형과 길이가 포함됩니다.
  • 본문은 HTML 문서의 내용입니다.

4. HTTP 상태 코드

HTTP 응답 메시지에는 서버의 상태를 나타내는 상태 코드가 포함됩니다. 상태 코드는 세 자리 숫자로, 요청이 성공적으로 처리되었는지, 리소스가 존재하지 않는지, 오류가 발생했는지를 나타냅니다.

주요 HTTP 상태 코드:

상태 코드 설명
200 OK 요청이 성공적으로 처리되었습니다.
201 Created 새로운 리소스가 생성되었습니다.
204 No Content 요청이 성공했으나, 본문 데이터가 없습니다.
301 Moved Permanently 요청된 리소스가 영구적으로 이동되었습니다.
302 Found 요청된 리소스가 임시적으로 다른 위치에 있습니다.
400 Bad Request 잘못된 요청입니다. 클라이언트 오류입니다.
401 Unauthorized 인증이 필요합니다.
403 Forbidden 서버가 요청을 거부했습니다.
404 Not Found 요청된 리소스를 찾을 수 없습니다.
500 Internal Server Error 서버에 오류가 발생했습니다.
503 Service Unavailable 서버가 일시적으로 사용할 수 없습니다.

5. HTTP 헤더

HTTP 헤더는 요청과 응답 메시지에 추가 정보를 전달하는 중요한 부분입니다. 헤더는 클라이언트와 서버 간의 통신을 더 상세하게 설정할 수 있도록 돕습니다.

주요 HTTP 헤더:

헤더 설명
Host 요청하는 서버의 호스트 이름을 지정합니다.
User-Agent 요청을 보내는 클라이언트(브라우저, 애플리케이션) 정보를 나타냅니다.
Content-Type 본문에 포함된 데이터의 MIME 타입을 지정합니다.
Authorization 서버에 인증 정보를 제공할 때 사용됩니다.
Cookie 클라이언트가 서버로 쿠키 데이터를 전송할 때 사용됩니다.
Cache-Control 클라이언트나 서버의 캐시 동작을 제어합니다.
Accept 클라이언트가 수신할 수 있는 데이터 유형을 지정합니다.

6. HTTP 메시지 예시

6.1 GET 요청 메시지 예시

GET /index.html HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36
Accept: text/html

6.2 POST 요청 메시지 예시

POST /submit-form HTTP/1.1
Host: www.example.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 32

username=user&password=pass123

6.3 HTTP 응답 메시지 예시 (성공적인 응답)

HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 123

<html>
<body>
    <h1>Welcome to Example</h1>
</body>
</html>

6.4 HTTP 응답 메시지 예시 (404 오류)

HTTP/1.1 404 Not Found
Content-Type: text/html
Content-Length: 57

<html>
<body>
    <h1>404 Not Found</h1>
</body>
</html>

7. 브라우저 호환성

HTTP 프로토콜은 모든 브라우저와 서버가 지원하는 표준 프로토콜입니다. 모든 최신 브라우저는 HTTP 메시지 형식에 따라 서버와 통신할 수 있습니다.

브라우저 HTTP 지원 여부
Chrome Yes
Firefox Yes
Safari Yes
Edge Yes
Internet Explorer Yes

copyright ⓒ 스타트코딩 all rights reserved.
이메일 : startcodingim@gamil.com