개발/HTTP

[HTTP] HTTP 메시지

devhooney 2022. 7. 6. 08:53
728x90

HTTP 완벽가이드 읽은 후 정리

- 메시지 흐름

- HTTP 메시지 구성

- 요청, 응답 메시지 차이

- 요청 메시지가 지원하는 메소드

- 응답 메시지가 반환하는 상태 코드

- HTTP 헤더들이 하는 일

 

메시지의 흐름

- HTTP 메시지는 HTTP 애플리케이션 간에 주고 받은 데이터의 블록들

- 클라이언트, 서버, 프록시 사이에서 흐름

 

메시지는 원 서버 방향을 인바운드로 하여 송신

- 메시지가 원 서버로 향하는 것은 인바운드로 이동

- 모든 처리가 끝난 후 메시지가 사용자 에이전트로 돌아오는 것은 아웃바운드

 

https://github.com/Conatuseus/TIL/blob/master/Books/HTTP%EC%99%84%EB%B2%BD%EA%B0%80%EC%9D%B4%EB%93%9C/3%EC%9E%A5.HTTP%20%EB%A9%94%EC%8B%9C%EC%A7%80.md

- 다운스트림으로 흐르는 메시지

- 모든 메시지는 다운스트림으로 흐른다

- 발송자는 수신자의 업스트림

 

메시지의 각 부분

https://github.com/Conatuseus/TIL/blob/master/Books/HTTP%EC%99%84%EB%B2%BD%EA%B0%80%EC%9D%B4%EB%93%9C/3%EC%9E%A5.HTTP%20%EB%A9%94%EC%8B%9C%EC%A7%80.md

- 메시지는 시작줄, 헤더 블록, 본문 세 부분으로 이루어짐

- 시작줄은 어떤 메시지인지 서술

- 헤더 블록은 속성

- 본문은 데이터를 담고 있음(없을 수도 있다.)

 

메시지 문법

https://github.com/Conatuseus/TIL/blob/master/Books/HTTP%EC%99%84%EB%B2%BD%EA%B0%80%EC%9D%B4%EB%93%9C/3%EC%9E%A5.HTTP%20%EB%A9%94%EC%8B%9C%EC%A7%80.md


- 요청 메시지 형식

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

<헤더>

<엔티티 본문>

 

- 응답 메시지 형식

<버전><상태 코드><사유 구절>
<헤더>
<엔티티 본문>

 

- 메소드는 클라이언트 측에서 서버가 리소스에 대해 수행해주길 바라는 동작.(GET, HEAD, POST 등)

- 요청URL은 요청 대상이 되는 리소스를 지칭하는 완전한 URL 호은 URL의 경로 구성요소

- 버전은 메시지에서 사용 중인 HTTP의 버전

- HTTP/<메이저>.<마이너>

- 상태 코드는 요청 중에 무엇이 일어났는지 설명하는 세 자리 숫자

- 사유 구절은 숫자로 된 상태 코드의 의미를 사람이 이해할 수 있게 설명해주는 짧은 문구

 

시작줄

- 요청줄은 서버에서 어떤 동작이 일어나야 하는지 설명해주는 메소드와 그 동작에 대한 대상을 지칭하는 요청 URL이 들어있다.

- 응답줄은 수행 결과에 대한 상태 정보와 결과 데이터를 클라이언트에게 돌려 준다.

- 메소드는 서버에게 무엇을 해야 하는지 말해준다.(GET, POST 등)

- 상태코드는 요청 중에 무엇이 일어났는지 설명하는 세 자리 숫자다. 각 코드의 첫 번째 자릿수는 상태의 일반적인 분류(성공, 에러 등)를 나타낸다.

- 사유 구절은 숫자로 된 상태 코드의 의미를 사람이 이해할 수 있게 설명해주는 짧은 문구

 

헤더

- HTTP 헤더 명세는 여러 헤더 필드를 정의함

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

 

엔티티 본문

- 이미지, 비디오, HTML문서 등 여러 디지털 데이터가 들어갈 수 있음

 

메소드

안전한 메소드

- GET, HEAD 메소드

- 요청의 결과로 서버에서 어떤 작용도 하지 않음을 의미

 

GET

- 가장 흔히 사용됨

- 주로 서버에게 리소스를 달라고 요청하기 위해 사용됨

https://github.com/Conatuseus/TIL/blob/master/Books/HTTP%EC%99%84%EB%B2%BD%EA%B0%80%EC%9D%B4%EB%93%9C/3%EC%9E%A5.HTTP%20%EB%A9%94%EC%8B%9C%EC%A7%80.md

 

- GET과 같지만 응답으로 헤더만 받음

- 응답 상태코드를 통해, 개체가 존재하는지 확인 가능

- 헤더를 확인하여 리소스가 변경되었는지 확인 가능

https://github.com/Conatuseus/TIL/blob/master/Books/HTTP%EC%99%84%EB%B2%BD%EA%B0%80%EC%9D%B4%EB%93%9C/3%EC%9E%A5.HTTP%20%EB%A9%94%EC%8B%9C%EC%A7%80.md

 

PUT

- 서버에 문서를 쓴다.

- 새 문서를 만들거나 이미 URL이 존재한다면 본문을 사용해서 교체함

https://github.com/Conatuseus/TIL/blob/master/Books/HTTP%EC%99%84%EB%B2%BD%EA%B0%80%EC%9D%B4%EB%93%9C/3%EC%9E%A5.HTTP%20%EB%A9%94%EC%8B%9C%EC%A7%80.md POST

- 서버에 입력 데이터를 전송하기 위함

https://github.com/Conatuseus/TIL/blob/master/Books/HTTP%EC%99%84%EB%B2%BD%EA%B0%80%EC%9D%B4%EB%93%9C/3%EC%9E%A5.HTTP%20%EB%A9%94%EC%8B%9C%EC%A7%80.md

 

DELETE

- 서버에게 요청 URL로 지정한 리소스를 삭제할 것을 요청

https://github.com/Conatuseus/TIL/blob/master/Books/HTTP%EC%99%84%EB%B2%BD%EA%B0%80%EC%9D%B4%EB%93%9C/3%EC%9E%A5.HTTP%20%EB%A9%94%EC%8B%9C%EC%A7%80.md

 

상태 코드

- HTTP 상태 코드는 크게 다섯 가지로 나뉨.

1. 100-199: 정보성 상태 코드

2. 200-299: 성공 상태 코드

3. 300-399: 리다이렉션 상태 코드

4. 400-499: 클라이언트 에러 상태 코드

5. 500-599: 서버 에러 상태 코드

728x90

'개발 > HTTP' 카테고리의 다른 글

[HTTP] 커넥션 관리  (2) 2022.08.08
[HTTP] URL과 리소스  (0) 2022.07.05
[HTTP] HTTP 개관  (0) 2022.07.01