HTTP(HyperText Transfer Protocol) 프로토콜이란?
웹에서 데이터를 주고받는 서버/클라이언트 모델의 프로토콜입니다.
HTTP는 애플리케이션 레벨의 프로토콜로 TCP/IP 위에서 작동합니다.
(TCP/IP에 대해서는 다른 포스트에서 설명하겠습니다)
HTTP는 HTML, CSS, JS, 이미지, 동영상, 오디오 등 어떤 타입의 데이터라도 전송할 수 있습니다.
즉 웹 브라우저에서 서버와 통신을 하는 규칙(프로토콜)을 말합니다.
HTTP 프로토콜의 특징은 두 가지가 있습니다:
Connectionless: 연결을 유지하지 않는다.
Stateless: 상태를 저장하지 않는다.
Connectionless
클라이언트와 서버는 서로 연결을 하고 요청과 응답이 완료되면 연결을 끊어버립니다.
왜 이러한 특징을 가질까요?
서버는 한 사람만 통신하는 것이 아닙니다.
불특정 다수와 데이터를 교환해하는데 만약 연결을 끊지 않고 모든 유저와 연결을 유지한다면
모든 유저 정보를 서버 컴퓨터가 가지고 있어야 합니다.
10명 20명 정도는 괜찮겠지만 구글 서버처럼 불특정 다수의 사람들이 접속하는 서버일 경우
모든 유저 정보를 저장하고 있으면 서버 컴퓨터가 과부화되어 성능이 저하될 것입니다.
즉 요청에 대해 응답을 완료한 후 연결을 끊어버리면
서버 부담이 줄어들어 더 많은 클라이언트 에 대한 처리가 가능해집니다
하지만 연결을 끊었을 때 단점이 있습니다
바로 클라이언트의 이전 상태를 알 수가 없습니다
이러한 문제점에서 파생되는 특징으로 StateLess입니다
Stateless
클라이언트의 상태를 저장하지 않는다는 특징입니다.
예시를 통해 이해해보겠습니다.
A라는 클라이언트가 서버에 "저는 A입니다. 댓글을 작성할게요"라고 요청을 보내면 서버는 해당 작업을 처리합니다.
그 후 A 클라이언트가 다시 서버에 "댓글을 작성할게요"라고 요청을 보내면 서버는 "누구세요?"라고 응답합니다.
이처럼 서버는 클라이언트가 누구인지 그리고 이전에 어떤 요청을 했는지 기억하지 않습니다.
각 요청은 독립적으로 처리되며 서버는 이전 요청의 상태를 저장하지 않습니다.
HTTP는 이러한 문제를 쿠키(cookie)를 이용해서 해결했습니다.
지금 당장은 쿠키가 웹 브라우저의 작은 데이터 저장소라고만 이해하시면 됩니다.
클라이언트의 상태를 웹 브라우저 데이터 저장소(쿠키)에 저장하고
서버에 요청을 할 때마다 "나 누구입니다"라고 보낸다는 것까지만 이해하시면 될 것 같습니다.
'네트워크' 카테고리의 다른 글
[네트워크] HTTP Session (4) | 2024.10.19 |
---|---|
[네트워크] 웹 인증이란? (1) | 2024.10.19 |
[네트워크] OSI 7계층 (1) | 2024.10.11 |
[네트워크] URL의 구조 (0) | 2024.07.23 |
[네트워크] 네트워크 기초 용어 (0) | 2024.07.22 |