3.HTTP 메세지

Geunho Hong·2020년 6월 26일
0

3.1 메세지의 흐름

HTTP 메세지는 HTTP 어플리케이션 간에 주고받은 데이터들의 블록이다.

메세지 -> 서버 (인바운드)

서버 -> 클라이언트(아웃바운드)

 ● HTTP 메세지는 강물과 같이 흐른다. 요청 메세지, 응답 메세지냐에 관계없이  
 ● 모든 메세지는 다운스트림으로 흐른다.  

3.2 메세지의 각 부분

HTTP 메세지는 단순한, 데이터의 구조화된 블록이다.

  • 요소
    • 시작줄 - 어떤 메세지인지 서술한다
    • 헤더 - 속성을 의미한다.
    • 본문 - 데이터를 담고있다.

3.2.1 메세지 문법

  • 요청 메세지는 웹 서버에 어떤 동작을 요구한다.

  • 응답 메세지는 요청의 결과를 클라이언트에 돌려준다.

  • 요소

    • 메서드 - 클라이언트 측에서 서버가 리소스에 대해 수행해 주기를 바라는 동작이다.
    • 요청 URL - 요청 대상이 되는 리소스를 지칭하는 완전한 URL 혹은 URL의 경로 구성요소이다.
    • 버전 - 메세지에서 사용중인 HTTP의 버전이다.
    • 상태 코드 - 요청 중에 무엇이 일어났는지 설명하는 세 자리의 숫자.
    • 사유 구절 - 숫자로 된 상태코드의 의미를 사람이 이해할 수 있게 설명해주는 짧은 문구.
    • 헤더 - 엔티티 본문의 시작을 의미한다.
    • 엔티티 본문 - 엔티티 본문은 임의의 데이터 블록을 포함한다.

3.2.2 시작줄

요청 메세지의 시작줄은 무엇을 해야 하는지 말해준다.

응답 메세지의 시작줄은 무슨 일이 일어났는지 말해준다.

  • 요청줄
    요청 메세지는 서버에게 리소스에 대해 무언가를 해달하고 부탁한다.
    서버에서 어떤 동작이 일어나야 하는지 설명해 주는 메서드와 동작 대상을 지칭하는 요청 URL이 있다.

  • 응답줄
    응답 메세지는 수행 결과에 대한 상태 정보와 결과 데이터를 클라이언트에 돌려준다.

  • 메서드
    요청의 시작줄은 메서드로 시작하며, 서버에게 무엇을 해야하는지 말해준다.

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

  • 사유 구절
    사유 구절은 응답 시작줄의 마지막 구성요소이다. 상태코드에 대한 글로 된 설명을 제공한다.

3.2.3 헤더

HTTP 헤더 필드는 요청과 응답 메세지에 추가 정보를 더한다.

* 분류
   * 일반헤더 - 요청과 응답 양쪽에 모두 나타날수 있음
   * 요청 헤더 - 요청에 대한 부가 정보를 제공
   * 응답 헤더 - 응답에 대하 부가 정보를 제공
   * Entity 헤더 - 본문 크기와 콘텐츠, 혹은 리소스 그 자체를 서술  
   * 확장 헤더 - 명세에 정의되지 않은 새로운 헤더  

3.2.4 엔티티 본문

HTTP 메세지의 세번째 부분은 선택적인 엔티티 본문이다.  
엔티티 본문은 HTTP 메세지의 화물이다.
여러 종류의 데이터를 실어나른다.  

3.3 메서드

3.3.1 안전한 메서드

● HTTP는 안전한 메서드라 불리는 메서드의 집합을 정의한다.  
● GET , HEAD 메세지는 안전하다 -> 서버에 어떤 작용도 없음을 의미하기 때문  
● 안전한 메서드가 서버에 작용을 유발하지 않는 다는 보장은 없기에  
사용자에게 그 사실을 알려주는 HTTP 애플리케이션을 만드는것이 좋다.  

3.3.2 GET

● 서버에게 리소스를 달라고 요청하기 위해 사용된다.  

3.3.3 HEAD

● HEAD 메서드는 GET 처럼 행동하지만, 서버는 응답으로 헤더만을 돌려준다.
● 서버 개발자는 반드시 반환되는 헤더가 GET으로 얻는 것과 일치함을 보장해야 한다.  

3.3.4 PUT

● GET 메세지가 서버로부터 문서를 읽어 들이는데 반해 PUT 메서드는 서버에 문서를 쓴다.  
● PUT은 컨텐츠가 변경할 수 있게 하므로,사용자에게 비밀번호와 로그인을 요구한다.  

3.3.5 POST

● POST 메세지는 서버에 입력 데이터를 전송하기 위해 설계되었다.  
● 서버가 처리할 데이터를 담아 보낸다.  

3.3.6 TRACE

● 클라이언트가 요청을 할때, 그 요청은 방화벽,프락시 등의 애플리케이션을 통과할 수 있다.  
● TRACE 메서드는 클라이언트에게 요청이 서버에 도달했을때 어떻게 보이는지 알려준다.  

3.3.7 OPTIONS

● OPTIONS 메서드는 웹 서버에게 여러가지 종류의 지원 범위에 대해 물어본다.  

3.3.8 DELETE

● DELETE 메서드는 서버에게 요청 URL로 지정한 리소스를 삭제 할 것을 요청한다.  
● 서버가 클라이언트에게 알리지 않고 요청을 무시할수 있기에, 삭제를 보장하지는 않는다.  

3.4 상태 코드

● 상태 코드는 클라이언트에게 그들의 트랜잭션을 이해 할 수 있는 쉬운 방법을 제공한다.  
●  요소
  ● 100~199 : 정보성 상태 코드
  ● 200~299 : 성공 상태 코드
  ● 300~399 : 리다이렉션 상태 코드
  ● 400~499 : 클라이언트 에러 상태 코드
  ● 500~599 : 서버 에러 상태 코드  

3.5 헤더

● 헤더와 메서드는 클라이언트와 서버가 무엇을 하는지 결정하기 위해 사용된다.  
●  요소
   ● 일반 헤더 : 메세지에 대한 기본적인 정보를 제공 한다.(클라이언트 서버 모두 사용)
   ● 요청 헤더 : 요청 메세지를 위한 헤더, 클라이언트가 받고자 하는 타입과 같은 부가 정보를 제공  
   ● 응답 헤더 : 응답 메세지는 클라이언트에게 정보를 제공하기 위한 자신만의 헤더를 갖고 있음
   ● 엔티티 헤더 : 엔티티 본문에 대한 헤더, 본문에 들어있는 데이터 타입을 말해줌  
   ● 확장 헤더 

0개의 댓글