본문 바로가기
FRONTEND/WEB

210823_HTTP Message

by 또야또야 2021. 8. 25.
반응형

HTTP 메세지

HTTP MESSAGE

메시지의 흐름

  1. 인바운드client => 메시지 => server (인바운드)
  2. 아웃바운드client <= 메시지 <= server (아웃바운드)
  3. 업스트림모든 메시지의 발송자는 수신자의 업스트림
  4. 다운스트림요청, 응답의 모든 메세지는 _다운스트림_으로 흐름

메시지의 각 부분

  시작줄 |  HTTP/1.0 200 OK

  헤더   |  Content-type: text/plain
            Content-length: 19

  본문   |  Hi! I'm a message!
  • 시작줄 : 어떤 메시지인지 서술
  • 헤더 블록 : 속성
  • 본문 : 데이터를 담음

메시지 문법

1. Request 메시지의 형식

  <Method> <요청 URL> <버전>
  <header>

  <Entity 본문>

2. Response 메시지의 형식

  <HTTP version> <status code> <사유 구절>
  <header>

  <Entity 본문>
  • Method : client => server 에게 수행해주길 바라는 동작 - GET, POST, DELETE...
  • 버전 : 이 메시지에서 사용중인 HTTP 버전 - HTTP/<major><minor> 형식
  • status code : 요청 중 무엇이 일어났는지 설명 - 200, 300, 404 ...
  • 사유 구절(reason-phrase) : status code의 의미를 설명해주는 문구 - NOT OK, OK ...
  • header : 요청, 응답 메시지에 추가 정보를 더하는 영역
  • Entity 본문 : 데이터 블록

Method

_Method_는 서버에게 무엇을 해야하는지 알려줍니다.

  GET /specials/saw-blade.gif HTTP/1.0    # method :: GET
메서드 설명 본문
GET 서버에서 문서 가져오기 X
HEAD 서버에서 문서에 대한 헤더만 가져오기 X
POST 서버가 처리해야 할 데이터를 보냄 O
PUT 서버에 요청 메시지의 본문을 저장 O
TRACE 메시지가 프락시를 거쳐 서버에 도달하는 과정 추적 X
OPTIONS 서버가 어떤 메서드를 수행할 수 있는지 확인 X
DELETE 서버에서 문서 제거 X

Status code

상태 코드 는 클라이언트에게 일어난 일에 대한 상태를 알려줍니다.

  HTTP/1.0 200 OK   # 상태 코드 : 200
전체 범위 정의된 범위 분류
100 ~ 199 100 ~ 101 정보
200 ~ 299 200 ~ 206 성공
300 ~ 399 300 ~ 305 리디렉션
400 ~ 499 400 ~ 415 클라이언트 에러
500 ~ 599 500 ~ 505 서버 에러

Header

HTTP 헤더 필드에는 요청/응답 메시지에 추가 정보를 더합니다. 그들은 기본적으로 이름/값 쌍의 목록입니다.

분류 설명
일반 헤더 요청, 응답 양쪽에 모두 나타날 수 있음
요청 헤더 요청에 대한 부가 정보를 제공 (클라이언트가 받고자하는 타입 등)
응답 헤더 응답에 대한 부가 정보 제공 (서버가 실행하고있는 정보 등)
Entity 헤더 본문 크기, 콘텐츠, 리소스(데이터) 그 자체를 서술
확장 헤더 명세에 정의되지 않은 새로운 헤더
헤더의 예 설명
Date: Tue, 3 Oct 1997 02:16:03 GMT 서버가 응답을 만들어낸 시각
Accept: image/gif, image/jpeg, text/html 클라이언트는 GIF, JPEG, HTML 를 받음
Accept: */* 클라이언트는 서버가 보내는 모든 미디어 타입을 받음
Server: Tiki-Hut/1.0 서버 헤더가 Tiki-Hut 1.0 과 대화하고있다는 정보를 클라이언트에게 제공
Contet-length: 15040 15,040 바이트의 데이터를 포함한 Entity 본문
Content-type: image/gif Entity 본문은 GIF 이미지

일반 헤더 종류

헤더 설명
Connection 클라이언트 - 서버 가 요청/응답 연결하는 것에 대한 옵션 지정 가능
Date* 서버에서 메시지가 언제 만들어졌는지에 대한 날짜/시간 제공
MIME-Version 발송자가 사용한 MIME 버전 제공
Trailer chunked transfer 인코딩된 메시지의 끝 부분에 위치한 헤더들의 목록 나열
Upgrade 발송자가 '업그레이드' 하길 원하는 새 버전이나 프로토콜 제공
Via 어떤 중개자(프락시, 게이트웨이) 를 거쳐왔는지 보여줌

요청 헤더 종류

헤더 설명
Client-IP* 클라이언트가 실행된 컴퓨터의 IP 제공
From 클라이언트 사용자의 메일 주소 제공
Host 요청의 대상이 되는 서버의 호스트 명, 포트 제공
Referer 현재의 요청 URI 가 들어있었떤 문서의 URL 제공
Accept 서버에게 서버가 보내도 되는 미디어 종류를 알려줌
Accept-Charset 서버에게 서버가 보내도 되는 문자 집합을 알려줌
Authorization 클라이언트가 서버에게 제공하는 인증 그 자체에 대한 정보를 담음
Cookie 클라이언트가 서버에게 토큰을 전달할 때 사용. 보안에 영향을 줄 수 있음
프락시 요청 헤더
Max-Forwards 요청이 원 서버로 향하는 과정에서 다른 프락시/게이트웨이로 전달될 수 있는 횟수. TRACE 메서드와 함께 사용
Proxy-Authorization Authorization 과 같으나 프락시에서 인증을 할 때 사용
Proxy-Connection Connection 과 같으나 프락시와 연결을 맺을 때 사용
... ...

Entity 헤더

헤더 설명
Content-Base* 본문에서 사용된 상대 URL 을 계산하기위한 기저 URL
Content-Encoding 본문에 적용된 인코딩
Content-Length 본문의 길이/크기
Content-Type 이 본문이 어떤 종류의 객체인지
반응형

'FRONTEND > WEB' 카테고리의 다른 글

220503 화 Request Payload 를 숨기는 방법?  (0) 2022.05.03
210603_Short Polling vs Long Polling  (0) 2021.06.03
XSS 공격 및 CORS - 해결방법  (0) 2021.05.10
Cookie, Session, Token 의 차이점  (3) 2021.05.09

댓글