2/16 정리

잼우·2022년 2월 20일
1

웹서비스

목록 보기
2/5

*공부한 내용을 토대로 혼자서 정리하는 글입니다.
틀린 부분이나 보충할 부분 지적 언제든 환영합니다 :)


HTTP Messages

1. HTTP란?

- HTTP는 "HyperText Transfer Protocol"의 줄임말로, HTML과 같은 문서를 전송하기 위한 Application Layer 프로토콜

- 웹 브라우저와 웹 서버의 소통을 위해 디자인

2. HTTP messages

  • HTTP messages란?
    - HTTP messages 는 클라이언트와 서버 사이에서 데이터가 교환되는 방식
    - HTTP messages는 요청(Requests)과 응답(Responses)으로 구성

  • 요청(Requests)과 응답(Responses)은 다음과 같은 유사한 구조를 가짐
    1 ) start line : start line 에는 요청이나 응답의 상태를 나타냄
    항상 첫 번째 줄에 위치하고 응답에서는 status line이라고 부름
    2 ) HTTP headers : 요청을 지정하거나, 메시지에 포함된 본문을 설명하는 헤더의 집합
    3 ) empty line : 헤더와 본문을 구분하는 빈 줄
    4 ) body : 요청과 관련된 데이터나 응답과 관련된 데이터 또는 문서를 포함하고 요청과 응답의 유형에 따라 선택적으로 사용함
    5 ) start lineHTTP headers를 묶어 요청이나 응답의 헤드(head) 라고 하고, payloadbody라고 함

3. 요청(Requests)

1. Start line

1 ) 수행할 작업(GET, PUT, POST 등)이나 방식(HEAD or OPTIONS)을 설명하는 HTTP method를 나타냄
예를 들어 GET method는 리소스를 받아야 하고, POST method는 데이터를 서버로 전송함

2 ) 요청 대상(일반적으로 URL이나 URI) 또는 프로토콜, 포트, 도메인의 절대 경로는 요청 컨텍스트에 작성됨
이 요청 형식은 HTTP method 마다 다름

- origin 형식 : ?와 쿼리 문자열이 붙는 절대 경로
POST, GET, HEAD, OPTIONS 등의 method와 함께 사용
POST / HTTP 1.1
GET /background.png HTTP/1.0
HEAD /test.html?query=alibaba HTTP/1.1
OPTIONS /anypage.html HTTP/1.0

- absolute 형식 : 완전한 URL 형식으로, 프록시에 연결하는 경우 대부분 GET method와 함께 사용
GET http://developer.mozilla.org/en-US/docs/Web/HTTP/Messages HTTP/1.1

- authority 형식 : 도메인 이름과 포트 번호로 이루어진 URL의 authority component
HTTP 터널을 구축하는 경우, CONNECT와 함께 사용할 수 있음
CONNECT developer.mozilla.org:80 HTTP/1.1

- asterisk 형식 : OPTIONS 와 함께 별표 (*) 하나로 서버 전체를 표현합니다.
OPTIONS * HTTP/1.1

3 ) HTTP 버전에 따라 HTTP message의 구조가 달라지므로 start line에 HTTP 버전을 함께 입력합니다.

2. Headers

  • Headers 의 구조

- General headers : 메시지 전체에 적용되는 헤더로, body를 통해 전송되는 데이터와는 관련이 없음

- Request headers : fetch를 통해 가져올 리소스나 클라이언트 자체에 대한 자세한 정보를 포함하는 헤더
User-Agent, Accept-Type, Accept-Language과 같은 헤더는 요청을 보다 구체화함
Referer처럼 컨텍스트를 제공하거나 If-None과 같이 조건에 따라 제약을 추가할 수 있음

-Representation headers : 이전에는 Entity headers로 불렀으며, body에 담긴 리소스의 정보(컨텐츠 길이, MIME 타입 등)를 포함

3. Body

- HTTP messages 구조의 마지막에 위치

- 모든 요청에 body가 필요하지는 않음
(GET, HEAD, DELETE, OPTIONS처럼 서버에 리소스를 요청하는 경우에는 본문이 필요하지 않음)

- POST나 PUT과 같은 일부 요청은 데이터를 업데이트하기 위해 사용

4. 응답(Responses)

1. Status line

- 응답의 첫 줄은 Status line 이라고 부름

- Status 구조

  1. 현재 프로토콜의 버전(HTTP/1.1)
  2. 상태 코드 - 요청의 결과를 나타냅니다. (200, 302, 404 등)
  3. 상태 텍스트 - 상태 코드에 대한 설명

- ex ) HTTP/1.1 404 Not Found.

2. Headers

- 응답에 들어가는 HTTP headers 는 요청 헤더와 동일한 구조

- 대소문자 구분 없는 문자열과 콜론(:), 값을 입력

  • Headers 의 구조

- General headers : 메시지 전체에 적용되는 헤더로, body를 통해 전송되는 데이터와는 관련이 없는 헤더

- Response headers : 위치 또는 서버 자체에 대한 정보(이름, 버전 등)와 같이 응답에 대한 부가적인 정보를 갖는 헤더로,
Vary, Accept-Ranges와 같이 상태 줄에 넣기에는 공간이 부족했던 추가 정보를 제공

- Representation headers : 이전에는 Entity headers로 불렀으며,
body에 담긴 리소스의 정보(컨텐츠 길이, MIME 타입 등)를 포함하는 헤더

3. Body

- 응답의 본문은 HTTP messages 구조의 마지막에 위치

- 모든 응답에 body가 필요하지는 않음
(201, 204와 같은 상태 코드를 가지는 응답에는 본문이 필요하지 않음)

5. Stateless

- HTTP로 클라이언트와 서버가 통신을 주고 받는 과정에서,
HTTP가 클라이언트나 서버의 상태를 확인하지 않음

- HTTP는 통신 규약일 뿐이므로, 상태를 저장하지 않음
따라서, 필요에 따라 다른 방법(쿠키-세션, API 등)을 통해 상태를 확인

profile
DevOps 새내기

0개의 댓글