HTTP/네트워크 #3

날림·2021년 10월 18일
0

HTTP

목록 보기
3/5

HTTP 메시지

클라이언트-서버 데이터 교환 방식 - mdn

  • 텍스트 정보
  • 직접 쓰는 경우는 거의 없고 구성 파일, API, 기타 인터페이스에서 자동으로 완성

HTTP messages

  • 요청: 클라이언트 → 서버
  • 응답: 서버 → 클라이언트

요청(Requests)응답(Responses)구조가 비슷하다

  1. 첫 줄 (start-line)
    요청이나 응답의 상태
    응답에서는 status line이라고 부름
  2. 헤더 (HTTP headers)
    요청을 지정, 혹은 본문(body)을 설명
  3. 빈 줄(empty line)
    헤더(header)와 본문(body)를 구분하는 빈 줄
  4. 본문 (body)
    요청이나 응답에 관련된 데이터
    종류에 따라 없을 수도 있음

첫 줄과 헤더를 묶어서 head라고 하고 payloadbody라고 한다


요청 (Requests)

요청

  1. 첫 줄 (start-line)
    • HTTP method (GET, POST, PUT, ...)
    • 요청 대상 : 일반적으로 URL이나 URI
    • HTTP 버전 : 대개 HTTP/1.1

요청 대상 형식은 HTTP method 마다 다를 수 있다

  • origin 형식: ?와 쿼리 문자열이 붙는 절대 경로
    POST, GET, HEAD, OPTIONS 등과 사용
    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
  1. 헤더 (HTTP headers)
    • (이름):(값) 형식

헤더의 종류

  • General headers
    메시지 전체에 적용
    body를 통해 전송되는 데이터와는 관련이 없음
  • Request headers
    fetch를 통해 가져올 리소스클라이언트 자체에 대한 자세한 정보를 포함
    User-Agent, Accept-Type, Accept-Language, Referer, If-None 등등
  • Representation headers
    이전에는 Entity headers
    body에 담긴 리소스의 정보(컨텐츠 길이, MIME 타입 등)를 포함
  1. 본문 (body)

모든 요청에 body가 필요한 건 아니다

  • Single-resource bodies
    헤더 두 개(Content-Type과 Content-Length)로 정의된 단일 파일

  • Multiple-resource bodies
    여러 파트로 구성된 본문
    각 파트마다 다른 정보가 있다
    보통 HTML form과 관련

추가 공부: MDN - HTTP 요청 메서드


응답 (Responses)

응답

  1. 첫 줄 (status-line)
    • HTTP 버전 : 대개 HTTP/1.1
    • 상태 코드 (200, 302, 404, ...)
    • 상태 텍스트 : 상태 코드를 설명

ex) HTTP/1.1 404 Not Found.

  1. 헤더 (HTTP headers)
    요청 헤더와 동일한 구조
  • General headers
    메시지 전체에 적용
    body를 통해 전송되는 데이터와는 관련이 없음
  • Response headers
    응답에 대한 부가적인 정보
    Vary, Accept-Ranges 등, 상태 줄에 넣기에는 부족했던 추가 정보를 제공
  • Representation headers
    이전에는 Entity headers
    body에 담긴 리소스의 정보(컨텐츠 길이, MIME 타입 등)를 포함
  1. 본문 (body)

모든 응답에 body가 필요하진 않다
= 201, 204, 등...

  • Single-resource bodies
    - 길이가 알려진 단일-리소스 본문은 두 개의 헤더(Content-Type, Content-Length)로 정의
    - 길이를 모르는 단일 파일로 구성된 단일-리소스 본문
    = Transfer-Encodingchunked 로 설정
    파일은 chunk로 나뉘어 인코딩되어 있음
  • Multiple-resource bodies
    서로 다른 정보를 담고 있음

추가 공부: MDN: HTTP 상태 코드


Stateless

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

나중에 자세히... (Section 3)

profile
항상배우기

0개의 댓글