[HTTP] 2.HTTP란?

Carrot.___.·2023년 5월 4일
0

http

목록 보기
2/3

HTTP

  • 하이퍼텍스트를 빠르게 교환하기 위한 프로토콜
  • HTML, TEXT, IMAGE, 음성, 영상, 파일, JSON, XML 등 모든 형태의 데이터를 HTTP로 주고 받을 수 있으며, 심지어 서버간 데이터를 주고받을 때도 대부분 HTTP를 사용한다.
  • TCP : HTTP/1.1, HTTP/2 기반
  • UDP : HTTP/3 기반
  • HTTP 특징
    1. 클라이언트/서버 구조
    2. 무상태 프로토콜(Stateless)
    3. 비연결성

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

HTTP에서는 위 그림과 같이 클라이언트가 서버에 요청(Request)을 보내고, 응답을 대기한다. 이 후 서버가 요청에 대한 결과를 만들어서 응답(Response)을 보내주는 형식입니다.

2. 무상태 프로토콜(Stateless)
HTTP에서 서버는 클라이언트 상태를 보존하지 않습니다. 따라서, 클라이언트가 서버에 요청시, 현재 어떤 상황인지, 어디까지 진행됐는지 등 추가정보를 전송하여야 할 것 입니다. 반대로, 서버 입장에서 클라이언트의 상태를 보존하지 않기 때문에, 응답 서버를 쉽게 바꿀 수 있습니다. 이를 통해 확장성이 높은 서버를 만들 수 있습니다.
(하지만, 모든 것을 무상태 프로토콜로 처리하기에 한계가 있어, 로그인 상태 등과 같은 정보를 저장하여 사용하는 경우가 많습니다.(ex.세션) )

3. 비연결성

HTTP는 TCP/IP와 달리 비연결성 모델입니다. 실제, 많은 Client가 서비스를 이용해도, 동시에 처리하는 요청은 실제로 매우 많지 않습니다. 따라서, 이는 서버 자원을 매우 효율적으로 사용할 수 있게 됩니다.
하지만, 매 요청 마다 TCP/IP연결을 새로 맺어야 한다는 단점이 있습니다.
이를 개선하기 위해 Persistent Connection을 이용합니다.

Persistent Connection?

연결이 완료되고, 요청 및 응답을 지속적으로 하기 위해 일정 시간동안 연결을 종료하지 않고, 많은 데이터 요청 및 응답이 완료되고 연결을 종료하여 개선한다.

HTTP 메세지 구조

HTTP는 위와 같은 Mesasge 구조를 가지고 있습니다.
  • 요청 메세지 구조
    1. 시작라인 : HTTP 메소드 (GET, POST, PUT, DELETE 등), 요청 대상(/search?query=aa), HTTP Version
    2. Header : URL, 또는 프로토콜, 포트, 도메인의 절대 경로 등
    3. Emptry Line : 공백
    4. Message body : 메세지 요청과 함께 실어보낼 데이터 등
  • 응답 메세지 구조
    1. 시작 라인 : HTTP 버전, HTTP 상태 코드, 상태 코드를 나타내는 글
    2. Header : HTTP 전송에 필요한 모든 부가 정보
      • field-name + ":" + filed-value 형태가 들어감
      • HTTP 전송에 필요한 모든 부가 정보(메세지 바디의 내용, 바디의 크기, 인증 요청 등의 정보,
        임의의 데이터 등)
    3. Body : 실제 전송할 데이터 ( HTML 문서, 이미지, 영상, 데이터 등등)

0개의 댓글

관련 채용 정보