-
[HTTP 이해하기] HTTP 메시지HTTP 이해하기 2022. 2. 24. 14:31반응형
HTTP 메시지는 시작줄, 헤더 블록, 본문 이렇게 세 부분으로 이루어진다.
시작줄과 헤더는 그냥 줄 단위로 분리된 아스키 문자열이다. 줄바꿈 문자열은 CRLF 이다.
1. 메시지 문법
요청메시지 형식: <메서드> <요청 URL> <버전> <헤더> <엔터티 본문> 응답메시지 형식 <버전> <상태코드> <사유 구절> <헤더> <엔터티 본문>
예: https://reqbin.com/req/c-1n4ljxb9/curl-get-request-example
How do I send a GET request using Curl?
ReqBin is the most popular online API testing tool for REST, SOAP and HTTP APIs.
reqbin.com
위의 페이지에서 RAW 로 요청 / 응답 type을 선택하면 HTTP 메시지를 볼수 있다.
2. 시작줄
모든 HTTP 메시지는 시작줄로 시작한다.
요청 메시지의 시작줄은 무엇을 해야 하는지, 응답 메시지의 시작줄은 무슨일이 일어 났는지 설명한다.
2.1 요청줄 / 응답줄
요청 메시지: 메서드, 요청 URL, HTTP 버전 정보가 포함된다.
응답 메시지: HTTP 버전, 숫자로 된 상태 코드, 수행 상태에 대해 설명해주는 텍스트 정보가 포함된다.
모든 필드는 공백으로 구분된다.
2.2 버전 번호
버전 번호는 HTTP/x.y 형식으로 요청과 응답 메시지 양쪽 모두에 기술된다. 구 버전은 신규 버전의 새로운 기능을 사용할 수 없다.
버전 번호는 어떤 애플리케이션이 지원하는 가장 높은 HTTP 버전을 가리킨다. 때문에 요청 / 응답 메시지의 버전 번호는 메시지가 해당 버전이라는 뜻이 아니라 현재 클라이언트 / 서버가 해당 HTTP 버전을 지원한다는 뜻이다.
2.3 엔터티 본문
엔터티 본문은 HTTP 메시지의 화물이라고 할 수 있다. HTTP 메시지에 함께 보낼 여러 종류의 디지털 데이터들을 실어 나를 수 있다. (이미지, 비디오, HTML 문서, 전자우편 등)
3. 메서드
요청의 시작줄은 메서드로 시작하며 서버에게 무엇을 해야 하는지 말해준다. 많이 쓰이는 HTTP 메서드는 다음과 같다.
메서드 설명 메시지 본문이 있는가 GET 서버에서 어떤 문서를 가져온다. 없음 HEAD 서버에서 어떤 문서에 대해 헤더만 가져온다. 없음 POST 서버가 처리해야 할 데이터를 보낸다. 있음 PUT 서버에 요청 메시지의 본문을 저장한다. 있음 TRACE 메시지가 프락시를 거쳐 서버에 도달하는 과정을 추적한다. 없음 OPTIONS 서버가 어떤 메서드를 수행할 수 있는지 확인한다. 없음 DELETE 서버에서 문서를 제거한다. 없음 https://developer.mozilla.org/en-US/docs/Web/HTTP/Methods
HTTP request methods - HTTP | MDN
HTTP defines a set of request methods to indicate the desired action to be performed for a given resource. Although they can also be nouns, these request methods are sometimes referred to as HTTP verbs. Each of them implements a different semantic, but som
developer.mozilla.org
4. 상태 코드
상태 코드는 클라이언트에게 무엇이 일어났는지 말해준다. 상태 코드들은 세 자리 숫자로 된 그들의 코드값을 기준으로 묶인다.
전체 범위 정의된 범위 분류 100 ~ 199 100 ~ 101 정보 200 ~ 299 200 ~ 206 성공 300 ~ 399 300 ~ 305 리다이렉션 400 ~ 499 400 ~ 415 클라이언트 에러 500 ~ 599 500 ~ 505 서버 에러 위의 표에서 정의된 범위는 현재 HTTP 명세에 공식적으로 정의된 코드들을 말한다. 만약 정의된 범위 외(인식 할수 없음)의 상태코드를 받으면 그 상태 코드가 포함되는 범주의 일반적인 구성원으로 가정하고 다뤄야 한다. 예를 들어, 550 에러 코드를 받으면 "서버 에러" 로 간주하면 된다.
5. 헤더
HTTP 헤더 필드는 요청과 응답 메시지에 추가 정보를 더한다. 기본적으로 이름/값 쌍의 목록이다.
- Request Header: 요청 메시지에서 사용하는 헤더, 가져오려고 하는 리소스에 대한 정보와 client의 정보를 제공함. (Authorization 등)
- Response Header: 응답 메시지에서 사용하는 헤더, 응답 메시지에 대한 추가 정보를 제공 함. (Age, Location 등)
- Representation Header: 응답 메시지에 포함한 리소스에 대한 정보를 제공 함. (Content-Type, Content-Encoding 등)
- Payload Header: payload 정보를 제공 함. (Content-Length, Content-Range 등)
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers
HTTP headers - HTTP | MDN
HTTP headers let the client and the server pass additional information with an HTTP request or response. An HTTP header consists of its case-insensitive name followed by a colon (:), then by its value. Whitespace before the value is ignored.
developer.mozilla.org
반응형'HTTP 이해하기' 카테고리의 다른 글
[HTTP 이해하기] Cache(캐시) (0) 2022.09.02 [HTTP 이해하기] 프락시(Proxy) 이해하기 (0) 2022.09.01 [HTTP 이해하기] TCP / IP 프로토콜 및 TCP 커넥션 관련 (0) 2022.09.01