HTTP 메시지란?

gparkkii·2021년 1월 9일
0

HTTP 웹 기본지식

목록 보기
9/9
post-thumbnail

✅ HTTP 메시지란?

*️⃣ HTTP 요청 메시지 (Request)

HTTP 요청 메시지의 예)

🏷 요청은 다음의 요소들로 구성된다.

**Method, Path, Version of the Protocol, Headers**

✔️ Method : HTTP 메서드는 보통 클라이언트가 수행하고자 하는 동작을 정의한 GET, POST, OPTIONS, HEAD를 지칭한다. 클라이언트는 리소스를 가져오거나GET 사용 HTML 폼의 데이터를 전송POST 사용한다.
다른 경우에는 다른 동작이 요구될 수도 있다.
✔️ Path : 가져오려는 리소스의 경로는 프로토콜 http://, 도메인 여기서는 developer.mozilla.org, 또는 TCP 포트 여기서는 80인 요소들을 제거한 리소스의 URL이다.
✔️ Version of the Protocol : HTTP 프로토콜의 버전.
✔️ Headers : 서버에 대한 추가 정보를 전달하는 선택적 헤더들.
✔️ etc : POST와 같은 몇 가지 메서드를 위한, 전송된 리소스를 포함하는 응답의 본문과 유사한 본문.

*️⃣ HTTP 응답 메시지 (Response)

HTTP 응답 메시지의 예)

🏷 응답은 다음의 요소들로 구성된다.

**Version of the Protocol, Status Code, Status Message, Headers**

✔️ Version of the Protocol : HTTP 프로토콜의 버전.
✔️ Status Code : 요청의 성공 여부와, 그 이유를 나타내는 상태 코드.
✔️ Status Message : 아무런 영향력이 없는, 상태 코드의 짧은 설명을 나타내는 상태 메시지.
✔️ Headers : 요청 헤더와 비슷한, HTTP 헤더들.
✔️ etc : 선택 사항으로, 가져온 리소스가 포함되는 본문.

*️⃣ HTTP 메시지 구조

✔️ HTTP 메시지 구조 : 요청 라인, 헤더, 공백라인(필수), 메시지 바디

/* rfc7230 공식스펙 */
const HTTP-Message  =  start-line
			* (header-field CRLF)
			CRLF
        		[ message-body]

✅ HTTP 메시지의 구조

🏷 요청메시지 시작라인

✔️ 요청 라인 = request line

// 요청 메시지
/* rfc7230 공식스펙 */
// method(GET,POST) SP(공백) request-target SP HTTP-version CRLF(엔터)

GET /search?q=hello&hl=ko HTTP/1.1
Host:www.google.com

✔️ 요청라인의 시작라인 : GET /search?q=hello&hl=ko HTTP/1.1

  • method : HTTP 메서드 (Get:조회)
  • Request-target : 요청 대상 (/search?q=hello&hl=ko)
  • HTTP Version

이렇게 세가지가 들어간다.

1️⃣ HTTP 메서드

GET

종류 : GET, POST, PUT, DELETE ...
서버가 수행해야할 동작 지정

  • GET : 리소스 조회
  • POST : 요청 내역 처리

2️⃣ Request-Target

/search?q=hello&hl=ko

  • absolute-path?query
  • 절대경로 ="/"로 시작하는 경로

3️⃣ HTTP Version

HTTP 1.1

🏷 응답메시지 시작라인

✔️ 응답 라인 = status line

// 응답 메시지
/* rfc7230 공식스펙 */
// HTTP-version SP(공백) status-code SP reason-phrase CRLF(엔터)

HTTP/1.1 200 OK
Content-type: text/html;charset=UTF-8
Content-Length: 3423

<HTML>
  <body>...</body>
</HTML>

✔️ 응답라인 시작라인 : HTTP/1.1 200 OK

1️⃣ HTTP Version

2️⃣ HTTP 상태 코드
요청 성공, 실패를 나타냄

  • 200: 성공
  • 400: 클라이언트 요청 오류
  • 500: 서버 내부 오류

3️⃣ 이유 문구
사람이 이해할 수 있는 짧은 상태 코드 설명 글

이렇게 세가지가 들어간다.


🏷 헤더라인

*️⃣ HTTP 헤더

/* rfc7230 공식스펙 */
header-field = field-name ":" OWS field-value OWS (OWS:뛰어쓰기 허용)
field-name 대소문자 구분 없음

✔️ 요청메시지 헤더 :

Host:www.google.com

✔️ 응답메시지 헤더 :

Content-type: text/html;charset=UTF-8
Content-Length: 3423

🔖 HTTP 헤더의 용도

1️⃣ HTTP 전송에 필요한 모든 부가정보가 들어있다
예) 메시지 바디의 내용, 메시지 바디의 크기, 압축, 인증, 요청 클라이언트(브라우저) 정보, 서버 애플리케이션 정보, 캐시관리 정보... 등등등
2️⃣ 표준 헤더가 너무 많다.
3️⃣ 필요시 임의의 헤더도 추가 할 수 있다.


🏷 메시지 바디

<HTML>
  <body>...</body>
</HTML>

🔖 HTTP 메시지 바디의 용도

1️⃣ 실제 전송할 데이터이다.
2️⃣ HTML 문서, 이미지, 영상, JSON 등등 byte로 표현할 수 있는 모든 데이터가 전송 가능하다.


📚 Reference

출처:
https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC#

profile
계속 발전하고 싶은 초보 개발자

관심 있을 만한 포스트

0개의 댓글

관심 있을 만한 포스트