HTTP? HTTP의 메시지 구조?
HTTP란?
- 클라이언트와 서버 간 자원을 교환하기 위한 TCP/IP 기반 통신 규약 (프로토콜)
- 클라이언트-서버 모델 : 클라이언트가 HTTP messages 양식에 맞춰 요청(Request)을 보내면, 서버도 HTTP messages 양식에 맞춰 응답(Response)함.
특징
- 단방향성 : 서버가 먼저 응답을 보낼 수 없고 클라이언트가 요청을 보내야만 응답할 수 있음.
- 비연결성 : 클라이언트의 요청으로 서버와 연결된 후, 요청에 대한 응답의 데이터를 전송하면 연결을 종료함.
- 따라서 실시간 통신 불가.
단점
- HTTP는 평문 통신이기 때문에 도청이 가능함.
- 통신 상대가 검증된 상대인지 확인하지 않기 때문에 위장이 가능함.
- 완전성을 증명할 수 없기 때문에 변조가 가능함.
HTTP 메시지 구조
- HTTP messages는 클라이언트와 서버 간 전송되는 데이터의 형식을 정의하는 규칙임.
- 유형
- 요청(Requests) : 클라이언트 -> 서버
- 응답(Response) : 서버 -> 클라이언트
- 구성
- HTTP messages는 몇 줄의 텍스트 정보로 구성됨.
- 구성 파일, API, 기타 인터페이스에서 HTTP messages를 자동으로 완성하기 때문에 개발자는 이런 메시지를 직접 작성할 필요가 없음.
요청(Requests)과 응답(Responses)의 구조
- start line
- 요청이나 응답의 상태를 나타냄.
- start line(요청) : HTTP method, Reques target, HTTP version으로 구성됨.
- status line(응답) : HTTP version, Status Code, Status Text로 구성됨.
- 항상 첫번째 줄에 위치.
- HTTP headers
- 해당 request나 response에 대한 추가 정보를 담고 있는 부분.
- Key : Value 형태로 구성.
- general headers, request headers, entity headers로 구성됨.
- empty line
- 헤더와 본문을 구분하는 빈 줄.
- body
- 요청 또는 응답 관련 전송하는 데이터를 담고 있는 부분.
- 요청과 응답의 유형에 따라 선택적으로 사용(전송하는 데이터가 없다면 body 부분은 비어있음.)