HTTP 메세지

Seongho·2023년 3월 3일
0

WEB

목록 보기
4/10

HTTP 메세지

HTTP 요청 메세지에 모든 것을 전송할 수 있다. html, 텍스트, 이미지, 음성, 영상, 파일, JSON, XML... 거의 모든 형태의 데이터를 전송할 수 있다.

HTTP 특징

  • 클라이언트 - 서버 구조
  • stateless 프로토콜
  • 비연결성
  • HTTP 메세지

1. 클라이언트 - 서버 구조


클라이언트와 서버를 분리하고, 비지니스 로직과 데이터들을 서버에 넣어두고, 클라이언트는 UI, 사용성에 집중하면, 클라이언트와 서버가 독립적으로 발전할 수 있다.

2. stateless(무상태) 프로토콜

서버가 클라이언트의 상태를 보존하지 않는다. 즉, 클라이언트가 서버에 필요한 모든 정보를 그때그때 바로 전송한다.

예를 들어, 클라이언트에서 서버에 전자제품을 구매하는 요청을 보내는 상황을 생각해보면, 무상태 프로토콜에서는 요청에 모든 내용을 포함해서 전송한다. 따라서, 서버는 해당 데이터를 따로 저장하지 않고, 요청에 대해서만 처리한다. 만약 서버1이 장애가 나면, 그냥 중계서버에서 서버2로 요청을 보내주면 해결된다.

또한, 만약, 어떤 이벤트를 진행하는데, 사용자가 평소보다 열배 늘어날 것이 예상되면, 그냥 물리적인 서버의 양을 늘리면 된다.

3. 비연결성



서버는 클라이언트의 요처을 처리하고 연결을 유지하지 않는다. 이로 인해, 최소한의 자원으로 여러 클라이언트의 요청을 처리할 수 있다.
한계
1. HTTP 요청을 한번 전송할 때, TCP/IP 연결을 새로 맺어야 한다. 이 때, 3-way-handshake 시간이 추가된다.
2. 웹 브라우저로 웹 서버에 웹사이트를 요청하면 html, css, JS, 이미지 등 수많은 파일이 다운로드 되는데, 이 시간이 낭비된다.
이를 해결하기 위해 Persistent Connections가 등장하였다.

HTTP 메세지

시작 라인 (요청 메세지)


HTTP 매서드 /요청대상(경로+쿼리) HTTP 버전

  • HTTP 매서드
  • 요청대상(경로 + 쿼리)
  • HTTP 버전
    HTTP/1.1

시작 라인 (응답 메세지)


HTTP 버전 상태코드 이유문구

헤더

  • HTTP 전송에 필요한 모든 부가 정보
    ex) 메시지 바디의 내용, 메시지 바디의 크기, 압축, 인증, 요청 클라이언트(브라우저) 정보,
    서버 애플리케이션 정보, 캐시 관리 정보...

바디

  • 실제 전송할 데이터
profile
Record What I Learned

0개의 댓글