공부/CS, Network

HTTP? HTTP의 메시지 구조?

k1mwnjn 2023. 3. 30. 20:20

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 부분은 비어있음.)

 

 

 

참고 : https://divheer.tistory.com/188