[네트워크] HTTP

zini9188·2023년 2월 2일
0

네트워크

목록 보기
3/6

HTTP란?


  • HyperText Transfer Protocol의 줄임말

  • HTML과 같은 문서를 전송하기 위한 Application Layer 프로토콜

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

  • 전통적인 클라이언트-서버 모델에서 클라이언트가 HTTP messages 양식에 맞춰 요청을 보내면, 서버도 HTTP messages 양식에 맞춰 응답

  • 특정 상태를 유지하지 않는 특징이 존재 Stateless(무상태성)

HTTP Messages란?


  • 클라이언트와 서버 사이에서 데이터가 교환되는 방식

  • 텍스트 정보를 구성하며 구성 파일, API, 기타 인터페이스에서 HTTP 메시지를 자동으로 완성

요청(Requests)

  • 클라이언트가 서버에 보내는 메세지

Start line의 세 가지 요소

  • 수행할 작업(GET, PUT, POST 등)이나 방식(HEAD, OPTIONS)을 설명하는 HTTP 메서드

  • 요청 대상(URL 또는 URI) 또는 프로토콜, 포트, 도메인의 절대 경로 등은 요청 컨텍스트에 작성되며 HTTP 메서드마다 다르게 작성

  • HTTP 버전에 따라 HTTP 메서드의 구조가 달라지므로 start line에 HTTP 버전을 함께 입력

Headers

  • HTTP Requests의 Headers는 기본 구조를 따름

  • 헤더의 이름, 콜론, 값 형태로 입력

  • 값은 헤더의 종류에 따라 다르며 여러 종류가 존재

  • 일반 헤더(General headers)

    • 메시지 전체에 적용되는 헤더

    • body를 통해 전송되는 데이터와는 관련이 없는 헤더

  • 요청 헤더(Request headers)

    • fetch를 통해 가져올 리소스나 클라이언트 자체에 대한 자세한 정보를 포함하는 헤더

    • User-Agent, Accept-Type, Accept-Language와 같은 헤더는 요청을 보다 구체화

    • Referer처럼 컨텍스트를 제공하거나 If-None과 같이 조건에 따른 제약 추가 가능

  • 표현 헤더(Representation headers)

    • body에 담긴 리소스의 정보(콘텐츠 길이, MIME 타입 등)를 포함하는 헤더

Body

  • Body는 요청의 본문으로 HTTP 메시지 구조의 마지막에 위치하며 모든 요청에 body가 필요하지는 않음

  • GET, HEAD, DELETE, OPTIONS처럼 서버에 리소스를 요청하는 경우 본문 생략 가능

  • POST나 PUT과 같은 일부 요청에 대해서는 데이터를 업데이트하기 위해 body를 사용

  • 단일-리소스 바디(Single-resource bodies)

    • 헤더 두 개(Content-Type과 Content-Length)로 정의된 단일 파일로 구성된 바디
  • 다중-리소스 바디(Multiple-resource bodies)

    • 여러 파트로 구성된 바디에서 각 파트마다 다른 정보를 지니며 보통 HTML form과 관련

응답(Responses)

  • HTTP Responses는 클라이언트의 요청을 서버가 응답하는 것

Status line

응답의 첫 줄에는 Status line이 포함되며 다음과 같은 정보를 지님

  • 현재 프로토콜의 버전

  • 상태 코드

    • 요청의 결과 (200, 302, 404 등)
  • 상태 텍스트

    • 상태 코드에 대한 설명

Headers

  • 요청 헤더와 동일한 구조

  • 대소문자 구분 없는 문자열과 콜론, 값을 입력

  • 헤더의 종류에 따라 값이 다르며 여러 종류가 존재

  • 일반 헤더(General headers)

    • 메시지 전체에 적용되는 헤더로, body를 통해 전송되는 데이터와는 관련이 없는 헤더이다.
  • 응답 헤더(Reponse headers)

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

    • body에 담긴 리소스의 정보(콘텐츠 길이, MIME 타입 등)를 포함하는 헤더

body

  • HTTP 메시지 구조의 마지막에 위치

  • 모든 응답에 body가 필요하지는 않다.

    • 201, 204와 같은 상태 코드
  • 단일-리소스 바디(Single-resource bodies)

    • 길이가 알려진 단일-리소스 바디는 두 개의 헤더(Content-Type, Content-Length)로 정의
    • 길이를 모르는 단일 파일로 구성된 단일-리소스 바디는 Transfer-Encoding이 chunked로 설정되어 있으며, 파일은 chunk로 나뉘어 인코딩
  • 다중-리소스 바디(Multiple-resource bodies)

    • 서로 다른 정보를 담고 있는 body이다.

Stateless

  • 상태를 가지지 않는다는 뜻

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

  • HTTP의 특징인 무상태성을 의미한다.

profile
똑같은 짓은 하지 말자

0개의 댓글