[HTTP] HTTP 메세지

업데이트:




✅ HTTP 메세지

HTTP 메시지는 서버와 클라이언트 간에 데이터가 교환되는 방식입니다. 메시지 타입은 두 가지가 있습니다. 요청(request) 은 클라이언트가 서버로 전달해서 서버의 액션이 일어나게끔 하는 메시지고, 응답(response) 은 요청에 대한 서버의 답변입니다.

HTTP 메시지는 HTML, TEXT, IMAGE, 음성, 영상, 파일, JSON, XML 등 거의 모든 형태의 데이터를 전송 가능하고 서버간에 데이터를 주고 받을 때도 대부분 HTTP를 사용합니다.


📌 HTTP 요청&응답 메세지

HTTP 메시지의 시작 줄과 HTTP 헤더를 묶어서 요청 헤드(head) 라고 부르며, 이와 반대로 HTTP 메시지의 페이로드는 본문(body)이라고 합니다.


✅ HTTP 요청

📌 시작줄(시작라인)

HTTP요청은 서버가 특정 동작을 취하게끔 만들기 위해 클라이언트 전송하는 메세지입니다.
시작줄은 세가지 요소로 이루어져 있습니다.

✔ HTTP 메서드

GET / search?q=hello&hi=ko HTTP/1.1
Host : www.google.com

GET, POST, PUT, DELETE 같은 동사형태나 HEAD,OPTIONS 같은 명사형태를 사용해 서버가 수행해야할 동작을 나타냅니다. 예를들어 GET은 리소스를 클라이언트로 가져다 달라는 것을 의미하고, POST는 데이터가 서버로 들어가야 함을 의미합니다. HTTP 메서드에 대한 자세한 설명은 HTTP 메서드 포스팅에 있으니 참고해주시길 바랍니다.



✔ 요청 대상 ( URL, 프로토콜, 포트, 도메인 … )

GET / search?q=hello&hi=ko HTTP/1.1
Host : www.google.com

요청대상은 주로 URL, 프로토콜, 포트, 도메인의 절대경로로 나타내지며 요청 컨텍스트에 의해 특정지어 집니다. 요청대상의 포멧은 HTTP 메소드에 따라 달라지고 다음과 같은 것들이 있습니다.

  • ORIGIN형식 : 끝에 '?'와 쿼리 문자열이 붙는 절대 경로입니다. 이는 가장 일반적인 형식이며, GET, POST, HEAD, OPTIONS 메서드와 함께 사용합니다.
  • absolute 형식 : 완전한 URL 형식입니다. 프록시에 연결하는 경우 대부분 GET과 함께 사용됩니다. 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



✔ HTTP 버전

GET / search?q=hello&hi=ko HTTP/1.1
Host : www.google.com

HTTP 버전을 의미합니다.




📌 HTTP 헤더

HTTP 헤더에는 HTTP 전송에 필요한 모든 부가정보가 포함됩니다. 예를들어 메세지 바디의 내용, 바디의 크기, 압축여부, 인증, 요청 클라이언트 정보, 서버 애플리케이션 정보, 캐시 관리 정보… 등이 있습니다.

일반적으로 문자열 : 헤더 정보 의 형태를 띄고 헤더 종류에 따라 값이 달라집니다. 표준헤더가 굉장히 많기 때문에 전부다 알기는 어렵고 참고자료를 첨부해놓겠습니다.




📌 HTTP 바디

실제 전송할 데이터를 담고있습니다. HTML문서, 이미지, 영상, JSON 등 BYTE로 표현할 수 있는 모든 데이터의 전송이 가능합니다. HTTP 요청의 마지막 부분에 들어가고, 모든 요청에 바디가 들어가지는 않습니다. GET, HEAD, DELETE, OPTIONS 처럼 리소스를 가져오는 요청은 보통 본문이 필요하지 않고 POST 처럼 HTML 폼 데이터를 포함하는 경우 바디가 필요하곤 합니다.




✅ HTTP 응답

📌 시작줄(시작라인)

        ✔ HTTP 버전

        보통 HTTP/1.1 을 사용합니다

        ✔ HTTP 상태 코드

        요청의 성공, 실패를 나타냅니다. 예를들어 200 : 성공, 400: 클라이언트 요청 오류,         500 : 서버내부 오류 를 의미합니다.

        ✔ 이유 문구

        사람이 이해할 수 있는 짧은 상태코드 설명입니다.




📌 HTTP 헤더와 바디

HTTP요청과 내용이 동일합니다.

태그:

카테고리:

업데이트:

댓글남기기