HTTP 프로토콜에 대해서 아는 대로 설명해 주세요.

  • HTTP는 인터넷상에서 데이터를 주고 받기 위한 서버/클라이언트 모델을 따르는 프로토콜이다.

  • 애플리케이션 레벨의 프로토콜로 TCP/IP 위에서 작동한다.

  • 클라이언트에서 요청(request)을 보내면 서버는 요청을 처리해서 응답(response)한다.

  • HTTP로 보낼 수 있는 데이터는 HTML 문서, 이미지, 동영상, 오디오, 텍스트 문서 등 여러 종류이며 어떤 데이터든지 보낼 수 있도록 설계 되어 있다.

클라이언트와 서버는 다음과 같은 역할을 가진다.

  • 클라이언트

    • 서버에 요청하는 클라이언트 소프트웨어(Chrome, Firefox 등)가 설치된 컴퓨터를 이용한다.

    • 클라이언트는 URI를 이용해서 서버에 접속하고, 데이터를 요청할 수 있다.

  • 서버

    • 클라이언트의 요청을 받아서, 요청을 해석하고 응답을 하는 소프트웨어가 설치된 컴퓨터(Apache, Nginx 등)가 서버 소프트웨어다.

HTTP의 연결 방식은 Connectionless 방식으로 작동한다. 서버에 연결하고, 요청해서 응답을 받으면 연결을 끊어버린다. 이런 작동방식은 장단점이 있다.

장점

  • 불특정 다수를 대상으로 하는 서비스에 적합한 방식이다.

  • 수십만명이 웹 서비스를 사용하더라도 접속유지는 최소한으로 할 수 있기 때문에, 더 많은 유저의 요청을 처리할 수 있다.

단점

  • 연결을 끊어버리기 때문에, 클라이언트의 이전 상태를 알 수 없다.

  • 이러한 HTTP의 특징을 stateless라고 하며, Connectionless로부터 파생되는 특징이다.

  • 클라이언트가 과거에 로그인을 성공하더라도 로그인 정보를 유지할 수가 없다. HTTP는 Cookie를 이용해서 이 문제를 해결하고 있다.

Last updated