클라이언트와 서버가 정보를 주고받을 때 거의 대부분 HTTP를 사용한다.
HTTP는 HTML, TEXT, IMAGE, 음성, 영상, 파일, JSON, XML
모든 형태의 데이터가 전송이 가능하다.
데이터를 주고받을때 HTTP 메시지가 사용되는데 이를 분석해보자.
● HTTP 메시지
HTTP 메시지 구조는 위와 같다.
요청 메시지와 응답 메시지의 구조는 같지만 전송 정보의 차이가 있어
이를 설명하고자 한다.
● 시작 라인
○ 요청 메시지
요청 메시지의 시작 라인 구조는 아래와 같다.
method request-target HTTP-version CRLF(엔터)
- method: HTTP 메서드 (ex.GET: 조회)
- request-target: 요청 대상 (/search?q=hello&hl=ko)
- HTTP Version: HTTP 버전(ex.HTTP/1.1)
요청 메시지의 시작 라인의 예시는 아래와 같다.
GET /search?q=hello&hl=ko HTTP/1.1
○ 응답 메시지
응답 메시지의 시작 라인 구조는 아래와 같다.
HTTP-version status-code reason-phrase CRLF
- HTTP-version: HTTP 버전
- HTTP 상태 코드: 요청 성공, 실패를 나타냄(200:성공, 400:클라이언트 요청 오류, 500: 서버 내부 오류)
- reason-phrase: 사람이 이해할 수 있는 짧은 상태 코드 설명 글
응답 메시지의 시작 라인의 예시는 아래와 같다.
HTTP/1.1 200 OK
● HTTP 헤더
HTTP 헤더는 HTTP 전송에 필요한 모든 부가정보를 나타낸다.
예) 메시지 바디의 내용, 메시지 바디의 크기, 압축, 인증, 요청 클라이언트(브라우저) 정보,
서버 애플리케이션 정보, 캐시 관리 정보
헤더는 field 이름과 field 값으로 구성되어 있다.
ex)
○ 요청 메시지
Host: www.google.com
○ 응답 메시지
Content-Type: text/html;charset=UTF-8
Content-Length: 3423
● HTTP 메시지 바디
HTTP 메시지 바디는 실제 전송할 데이터를 담는다.
HTML 문서, 이미지, 영상, JSON 등등 byte로 표현할 수 있는 모든 데이터가 전송 가능하다.
'Server > HTTP' 카테고리의 다른 글
[HTTP] 클라이언트에서 서버로 데이터 전송 동작 원리 | HTTP 메서드 활용 (0) | 2022.02.05 |
---|---|
[HTTP] HTTP 요청 메소드란? | HTTP API(GET | POST | PUT | PATCH | DELETE) | HTTP 메소드의 속성 (0) | 2022.02.04 |
[HTTP] HTTP란? | HTTP 특징 (0) | 2022.02.04 |
[HTTP] URI | URL | URN 이란? | URL, URI, URN 차이점 (0) | 2022.02.02 |
[HTTP] DNS 란? (0) | 2022.02.01 |