티스토리 뷰

CS

HTTP 완벽 가이드 3장

GiHoo 2023. 11. 8. 23:56

3.  HTTP 메시지

메시지의 흐름

HTTP 메시지

  • HTTP 애플리케이션 간 주고받은 데이터의 블록
  • 클라이언트, 서버, 프록시 사이를 흐른다.
  • 메세지의 방향 - 인바운드, 아웃바운드, 업스트림, 다운스트림
  1. 메시지는 원 서버 방향을 인바운드로 하여 송신된다.
    아웃바운드 - 트랜잭션 방향을 표현하기 위한 용어, 클라이언트로 향하는 방향
    인바운드 - 트랜잭션 방향을 표현하기 위한 용어, 서버로 향하는 방향
  2. 다운스트림으로 흐르는 메세지
    발송자와 수신자의 대한 것
    업스트림, 다운스트림
    발송자 → 수신자 형식이 다운스트림, 반대는 없다.
    메시지는 항상 다운 스트림으로 흐른다.
  3.  

메시지의 각 부분

메시지 구조

시작줄 - 어떤 메세지인지 서술, 아스키 문자열

헤더 - 속성, 아스키 문자열

본문 - 데이터를 포함할 수도, 비어있을 수도 있음

 

메시지 문법

더보기

요청 메시지

<메서드> <요청 URL> <버전>

<헤더>

<엔티티 본문>

더보기

응답 메시지

<버전> <상태 코드> <사유 구절>

<헤더>

<엔티티 본문>

 

메서드 - 서버가 리소스에 대해 수행해주길 바라는 동작

요청 URL -리소스를 지칭하는 URL

버전 - HTTP 버전

상태 코드 - 요청의 결과를 나타내는 세 자리의 숫자

사유 구절 - 상태 코드를 설명해주는 짧은 문구

헤더 - 이름 : 값 CRLF 순으로 나타나는 0개 이상의 값

엔티티 본문 - 임의의 데이터 블록

 

시작줄

HTTP 요청 메시지의 시작줄 - 무엇을 해야하는지

HTTP 응답 메시지의 시작줄 - 무슨일이 일어났는지

 

요청줄

  • 서버에게 리소스에 대해 무언가를 해달라고 요청
  • 일어나야 하는 동작의 메서드, 동작 대상을 지칭하는 URL, HTTP 버전

응답줄

  • 수행 결과에 대한 상태 정보와 결과 데이터를 클라이언트에 전달
  • HTTP 버전, 상태 코드, 상태 설명하는 사유 구절이 포함

메서드 - 서버에게 무엇을 해야 하는지 말해준다.

상태 코드 - 클라이언트에게 무엇이 일어났는지 말해준다.

 

헤더

헤더는 간단하다. 요청, 응답에 대한 부가 정보를 제공하는 역할을 한다.

예를 들어 응답 메세지 헤더에서 Content-type: image/gif는 컨텐츠가 이미지 타입인 것을 제공한다.

엔티티 본문

선턱적인 부분, HTTP 메시지의 화물

메서드

  • HTTP 버전에 맞는 메서드를 사용해야 한다.
  • GET - 서버에게 리소스를 달라고 요청하기 위해 사용된다.
  • HEAD - GET과 일치하지만, 응답으로 헤더만 돌려준다.
  • PUT - 서버에 문서를 작성한다. 존재하지 않으면 작성하고, 존재하면 교체한다.
  • POST - 서버에 입력 데이터를 전송, 대게 HTML 폼을 지원하기 위해 사용된다.
  • DELETE - 서버에게 요청 URL로 지정한 리소스를 삭제할 것을 요청한다.

상태 코드

  • 100 - 199 : 정보성 상태 코드
  • 200 - 299 : 성공 상태 코드
    • 서버는 대응하는 성공을 의미하는 상태 코드를 보낸다.
    • 200 OK, 201 Created, 202 Accepted
  • 300 - 399 : 리다이렉션 상태 코드
    • 클라이언트가 관심있어 하는 리소스에 대해 다른 위치를 사용하라고 전달
    • 다른 위치를 Location 헤더로 보내수 있다.
  • 400 - 499 : 클라이언트 에러 상태 코드
    • 클라이언트의 잘못된 요청에 따른 에러
    • 400 Bad Request, 403 Forbidden, 404 Not Fount
  • 500 -599 : 서버 에러 상태 코드
    • 서버 자체에서 에러가 발생하는 경우
    • 클라이언트가 서버에 제한이 걸리거나 보조 구성요소에 발생한 에러일 수 있음

헤더

메서드와 함께 클라이언트와 서버가 무엇을 하는지 결정하기 위해 사용된다.

  • 일반 헤더
    • 클라이언트, 서버 모두 사용한다.
    • 일반 정보 헤더
  • 요청 헤더
    • 요청 메시지를 위한 헤더
    • 서버에게 받고자 하는 데이터의 타입과 같은 부가 정보를 제공한다.
    • 요청 정보 헤더, Accept 관련 헤더, 조건부 요청 헤더, 요청 보안 헤더, 프록시 요청 헤더
  • 응답 헤더
    • 응답 메시지를 위한 헤더
    • 클라이언트에게 부가 정보를 제공
    • 응답 정보 헤더, 협상 헤더, 응답 보안 헤더
  • 엔티티 헤더
    • 요청, 응답 양쪽 모두 사용한다.
    • 엔티티와 그것의 내용물에 대한, 개체의 타입부터 광범위한 정보를 제공
    • 엔티티 정보 헤더, 콘텐츠 헤더, 엔티티 캐싱 헤더
공지사항
최근에 올라온 글
최근에 달린 댓글
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30