HTTP 기초 - 1 - 정의, 프로토콜, 클라이언트와 서버, 비연결성

고은연·2021년 2월 15일
4

HTTP 기초

우리는 이 글에서 서비스를 구축하는 방법을 연습합니다. 웹은 http 프로토콜로 통신하므로 http 프로토콜에 대해서 알아보겠습니다.

HTTP란?

http는 Hyper Text Transfer protocol - 하이퍼 텍스트 트랜스퍼 프로토콜의 약자입니다. 하이퍼 텍스트는 특정 규칙으로 텍스트를 표현하는 방법을 뜻하므로 규칙이 있는 텍스트를 전송하는 통신 규약이라는 뜻입니다.
즉 http는 html을 전송하기 위한 통신 규약으로 시작했습니다.

프로토콜이란?

프로토콜은 데이터(메세지)를 교환하는 형식을 말합니다. 요청자가 어떤 형식으로 요청을 하면 응답자가 요청자의 메세지를 읽은 후 어떤 형식으로 응답할 지를 규정합니다.
http 프로토콜은 1989년 0.9버전부터 시작해서 1.0, 1.1을 거쳐 현재 2.0 버전까지 있습니다. 이 중 1.1까지는 사람이 읽을 수 있는 텍스트 형식 프로토콜이고 2.0부터는 사람이 읽어내기 힘든 이진 프로토콜입니다. 프로토콜의 진화에 대해서는 mdn http 프로토콜의 진화 https://developer.mozilla.org/ko/docs/Web/HTTP/Basics_of_HTTP/Evolution_of_HTTP에 자세히 설명되어 있습니다.

클라이언트와 서버

기본적으로 통신은 요청자와 응답자로 나누어집니다. 요청자는 데이터를 요청하는 사람, 그리고 응답자는 데이터를 응답하는 사람입니다.
http 통신에서 요청자는 클라이언트라고 부릅니다. 가장 대표적인 클라이언트는 구글 크롬, ms 엣지 등 웹 브라우저입니다.
반면 응답자는 서버라고 부릅니다. 서버는 클라이언트의 요청을 기다리고 있다가 클라이언트의 요청이 있으면 요청을 처리해서 응답하는 역할을 합니다. 언제 요청이 올 지 모르기 때문에 서버는 항상 요청을 대기하고 있습니다.
물론 최근에는 클라우드 컴퓨팅의 발달에 의해 서버리스로 동작하는 경우도 있으나, 이 또한 요청 처리 서버가 항상 대기중이 아니라는 의미일 뿐 게이트웨이 역할을 하는 서버는 늘 대기하고 있습니다.

비연결성

기본적으로 http는 비연결성 프로토콜입니다. 한 번 요청과 응답이 끝나면 이전 요청과 응답에 대한 것은 까맣게 잊어버립니다.
이런 비연결성은 http의 구현을 간단하게 해 주었고, 웹이 지금처럼 발전하는 데 큰 역할을 했습니다. 하지만 반대로 직접 웹 서비스를 구현하는 입장에서는 이전에 했었던 요청 내용을 기억하는 것을 직접 구현해야 한다는 오버헤드가 생긴다는 것을 의미하기도 합니다.
최근에는 html5가 나오면서 웹소켓 등으로 연결을 지속하는 방법이 생겼습니다. 이전 버전인 html4까지는 연결 지속이 불가능해서 쿠키와 세션 등으로 직접 클라이언트와 서버 사이를 매핑시켜 주곤 했었습니다.

profile
중년 아저씨. 10 + n년차 백엔드 개발자. 스타트업과 창업, 솔로프리너와 1인 기업에 관심 많아요.

1개의 댓글

comment-user-thumbnail
2022년 5월 18일

코드이그나이터를 독학해야 하는 상황에서 부족한 정보와 과정 설명이 너무나 부실한 상황에서 여기를 찾았는데, 설명이 이해가 잘 됩니다. 좋은 정보 감사합니다.(22.05.18)

답글 달기