3. HTTP - 특징편

Dev StoryTeller·2020년 12월 21일
0

Websocket 알아보기

목록 보기
4/9

HTML의 구조, 전송 방법(메소드), 응답코드 등 이런 것들을 모두 이야기하려면 1편으로 끝내긴 매우 길다. 따라서 간단한 특징만 알아보도록 하겠다.
(나머지는 따로 제작하는 걸로...)


1. 특징

HTTP에는 다음과 같은 3가지 특징이 있다.

  • Request-Response 구조
  • Stateless
  • Connectionless

첫번째부터 알아보자.


2. Request-Response 구조

HTTP는 반드시 요청과 응답을 주고받아야 한다.
(출처:how-http-request-and-response-works)

클라이언트가 요청만 한다거나, 서버가 먼저 요청을 한다던가의 경우는 절대 일어날 수 없다.


3. 비연결성(Connectionless)

2처럼 HTTP는 요청-응답을 하고 바로 연결을 끊어버린다.
즉, 클라이언트와 서버 간에 요청-응답이 오가면, 그걸로 끝인 것이다.


4. 무상태성(Stateless)

서버는 클라이언트와의 연결 정보를 갖고 있지 않는다.
한번 연결이 끊기면 그걸로 끝이며, 재연결 시엔 다시 인증해야한다.
휘발성 메모리인 RAM을 생각하면 될 것이다.

(이 때문에 클라이언트의 정보를 저장하기 위해 "세션"이라는 것을 저장하여 사용한다.)


5. 문제점?

위에서 알아본 특징 순서대로 단점이 존재한다.

1. 요청만 보낼 수 없음

요청 - 응답 구조의 단점이다.
서버는 클라이언트의 요청에만 응답할 수 있기 때문에, 클라이언트에게 요청할 수 없다.

  • A(클)와 B(서버)가 채팅을 하는데, B가 A한테 먼저 톡을 보낼 순 없다.

2. 연결 지속 어려움

비연결성과 무상태성의 단점이다.
연결이 바로 완전히 끊겨버리기 때문에, 연결 지속을 위해선 계속 인증을 해야한다.

  • 즉, 로그인하고 페이지를 벗어나거나 하면, 다시 로그인 해야한다.
  • 그리고 페이지 내의 작은 컨텐츠 하나만 바꾸고 싶어도 페이지 전체를 렌더링해야 한다.
    (연결이 끊기면 현재 상태를 저장하지 않기 때문에, 현재 상태(전체 페이지)를 다시 서버로 보내고 응답을 받아와야한다.)

5. 결론

이런 단점을 보완하기 위해 AJAX라는 기술이 생겨났다.
다음편에서는 AJAX에 대해 다뤄볼 것이다.

왜 AJAX는 WebSocket의 대응책이 되지 못했을까?가 궁금한 사람들은 클릭하여 건너뛰어도 좋다 : )

아니면 다음편으로>>

profile
개발을 이야기하는 개발자입니다.

0개의 댓글