HTTP(HyperText Transfer Protocol)는 웹상에서 데이터를 주고 받는 방식을 정의하는 프로토콜이다. HTTP의 기본적인 특징을 이해하면 웹의 동작 방식을 더욱 잘 이해할 수 있다. HTTP의 핵심 특징 3가지인 클라이언트-서버구조, 무상태 프로토콜(Stateless), 그리고 단순하면서도 확장 가능한 특징에 대해 자세히 알아보겠다.

 

< 1. HTTP는 클라이언트-서버 구조로 되어 있다.>

HTTP는 클라이언트-서버 구조를 가지고 있다. 클라이언트는 HTTP 메세지를 통해 서버에게 요청을 보내고, 그 요청에 대한 응답을 기다린다. 응답이 오면, 클라이언트는 해당 응답을 통해 웹페이지를 렌더링한다. 이때, 클라이언트는 사용자 인터페이스와 사용자 경험에 집중 하고, 데이터와 비즈니스 로직 처리는 서버에게 맡긴다. 이런 분업 체계 덕분에 클라이언트와 서버는 각각 독립적으로 발전할 수 있다.

 

예를 들어, 서버 트래픽이 발전하더라도 클라이언트를 수정할 필요는 없다. 백엔드에서 트래픽 관리에 집중하면 되는 것이다. 

 

 

< 2. HTTP는 무상태 프로토콜(Stateless)상태를 지향한다.>

HTTP는 클라이언트의 상태를 보존하지 않는다. 이 말은 클라이언트의 이전 요청을 기억하지 않는다는 뜻이다.

이해를 돕기 위해 간단한 예들이 있다.

 

예를 들어, 노트북을 사려는 고객과 점원 간의 대화가 있다고 가정해보자. 고객이 노트북 가격을 묻고, 점원이 가격을 말한 후, 고객이 두 대를 사겠다고 하면, 점원은 전에 언급된 노트북 가격을 기억하고 두 대의 가격을 계산할 수 있다. 이 상황이 Stateful 상황이다.

 

반면에, Stateful 상황에서 점원이 중간에 바뀌면 문제가  생긴다. 

이러한 것에 대한 단점이 있으며,

 

Stateless Protocol은 이는 HTTP가 클라이언트의 상태를 기억하지 않는다는 뜻이다.

즉, 중간에 점원(서버)가 바뀌어도  대화(요청)이 이어갈 수 있다는 것이다.

 

이러한 방식은 대규모 시스템에서 확장성을 크게 향상 시킨다.

 

<Stateless의 실무 한계>

예를 들어, 사용자가 로그인한 상태를 유지하는 것은 "무상태 프로토콜"로는 어렵다. 이러한 한계를 극복하기 위해, '쿠키'나 '세션'과 같은 기술이 개발되었다. 이런 기술들은 클라이언트와 서버 사이에 추가적인 정보를 주고 받을수 있도록 하여, 상태를 일정하게 유지할 수 있게 한다.

 

 

<비연결성>

비연결성이란 말 그대로 서버와 클라이언트 사이의 연결을 계속 유지하지 않는다는 것을 의미한다. 서버는 클라이언트의 요청에 응답하고나면 연결을 끊어버린다. 이렇게 함으로써 서버의 자원을 최적화 하고, 많은 클라이언트의 요청을 동시에 처리할 수 있게 된다.

 

예를 들어, 웹 브라우저에서 한 번에 여러 개의 요청을 보내는 경우, HTTP는 각 요청마다 독립적인 연결을 생성한다. 그래서 한 요청이 처리되고 나면 해당 연결은 끊어지고, 다음 요청이 올 때까지 연결은 유지되지 않는다. 이렇게 비연결성을 가진 덕분에, 서버는 동시에 많은 수의 클라이언트의 요청을 처리할 수 있게 된다. 

 

그러나, 단점도 존재 한다. 

첫째로, 매 요청마다 새로운 연결을 만들어야 하기 때문에 이로 인해 추가적인 시간이 소모된다. 그리고 이로 인해 웹 페이지를 로딩하는 시간이 늘어나 사용자의 경험이 저하될 수 있다.

 

둘째로, 웹 페이지를 로딩하는데 필요한 많은 자원들(예:이미지,Javascript,CSS등)을 요청해야 한다. 이는 많은 네트워크 트래픽을 증가시키며, 비효율적인 작업이 될 수 있다.

hello 단어 하나만 쳐도 무수히 많은 것이 다운로드 되고 있다.

그래서 생긴 해결책: 지속 연결(Persistent Connection)

이런 단점들을 해결하기 위해 HTTP는 '지속 연결(Persistent Connection)'이라는 개념을 도입했다. 이는 한 번의 연결로 여러 요청과 응답을 처리할 수 있도록 하는 방법이다. 이후의 HTTP 버전인 HTTP/2,HTTP/3에서는 이 개념을 더욱 발전시켜, 여러 요청을 동시에 처리할 수 있는 능력을 더욱 강화시켰다.

 

 

요약하면, HTTP의 비연결성은 서버의 자원을 효율적으로 관리하는데 큰 도움을 주지만, 그로 인한 사용자 경험의 저하와 같은 단점을 가지고 있다. 이를 해결하기 위해 '지속 연결'이라는 개념이 도입되어, 현재의 웹 통신에서는 이를 통해 더욱 효율적이고 빠른 통신이 가능해졌다.


 

Reference : 모든 개발자를 위한 HTTP 웹 기본 지식

https://www.inflearn.com/

 

인프런 - 라이프타임 커리어 플랫폼

프로그래밍, 인공지능, 데이터, 마케팅, 디자인, 엑셀 실무 등 입문부터 실전까지 업계 최고 선배들에게 배울 수 있는 곳. 우리는 성장 기회의 평등을 추구합니다.

www.inflearn.com

 

'HTTP 웹 기본 지식' 카테고리의 다른 글

HTTP의 변천사  (0) 2023.05.30
웹 브라우저의 URL 요청 과정  (0) 2023.05.30
URI  (0) 2023.05.30
DNS  (0) 2023.05.29
네트워크 상에서 데이터의 이동 이해하기  (0) 2023.05.29

+ Recent posts