[CS / Server] 서버와의 데이터 통신 HTTP, AJAX 통신, WebSocket, SSE 각각 알아보자

2024. 1. 3. 18:42·Computer Science
현대 소프트웨어 개발에서 서버와의 효율적인 데이터 통신은 핵심적인 주제 중 하나입니다. 
이에 따라 HTTP, AJAX, WebSocket, SSE와 같은 다양한 통신 프로토콜과 기술들이 등장했습니다. 
이번 글에서는 각각의 특징과 활용 방법을 자세히 살펴보겠습니다. 
웹과 애플리케이션 개발에 필수적인 이 기술들을 이해하고 활용함으로써 보다 효과적이고 동적인 데이터 통신을 구현할 수 있습니다. 

 

 

1. HTTP

HyperText Transfer Protocol

 

HTTP에서는 클라이언트가 서버에 요청 메시지를 보내면 이에 대해 서버가 응답 메시지를 반환합니다.

서버는 응답 메시지를 반환한 후에 초기 상태로 돌아갑니다. 이 때 서버는 클라이언트의 상태를 저장하지 않습니다.

 

즉, HTTP 프로토콜은 상태가 없는 프로토콜 입니다.

여기서 상태가 없다라는 말은 데이터를 주고 받기 위한 각각의 데이터 요청이 서로 독립적으로 관리가 된다는 말이고,

이전 데이터 요청과 다음 데이터 요청이 서로 관련이 없다는 말입니다.

 

이러한 특징 덕분에 서버는 세션과 같은 별도의 추가 정보를 관리하지 않아도 되고,

다수의 요청 처리 및 서버의 부하를 줄일 수 있는 성능 상의 이점이 생깁니다.

 

 

2. Ajax

Asynchronous Javascript And Xml 

 

자바스크립트 라이브러리 중 하나이며, 브라우저가 가지고 있는 XMLHttpRequest 객체를 이용해서 전체 페이지를 새로 고치지 않고 페이지의 일부만을 로드하는 기법입니다.

 

자세한 설명은 이전에 따로 정리했으므로 링크로 남기겠습니다.

 

https://repeater2487.tistory.com/49

 

[JavaScript] AJAX란 무엇인가

AJAX란? Asynchronous JavaScript and XML 자바스크립트 라이브러리 중 하나이며, 브라우저가 가지고 있는 XMLHttpRequest 객체를 이용해서 전체 페이지를 새로 고치지 않고 페이지의 일부만을 로드하는 기법

repeater2487.tistory.com

 

3. WebSocket 과 SSE

WebSocket과 SSE는 비슷한점도 많아 같이 묶어서 알아보겠습니다.

 

WebSocket과 Server-Sent Events(SSE)는 웹 애플리케이션에서 실시간 통신을 구현하는 데 사용되는 기술로, 

HTTP의 단점을 극복하고 더 효율적인 양방향 통신을 제공합니다. 

 

두 기술은 몇 가지 유사한 측면을 가지고 있습니다.

 

3 - 1. 공통점

  • 양방향 통신 : WebSocket과 SSE는 양방향 통신을 지원하여 클라이언트와 서버 간에 실시간으로 데이터를 주고받을 수 있습니다.
  • 실시간 업데이트 : 둘 다 실시간으로 데이터를 전송함으로써, 서버의 변경 사항이 발생하면 클라이언트에 즉시 업데이트할 수 있습니다.
  • 단일 연결 유지 : WebSocket과 SSE는 한 번의 연결로 계속해서 데이터를 주고받을 수 있어 오버헤드를 최소화하고 효율적인 통신을 가능케 합니다.

 

3 - 2. 차이점

  • 프로토콜 : WebSocket은 양방향 통신을 위한 전체 이중 통신 프로토콜을 사용하며, SSE는 기존의 HTTP 프로토콜 위에 구축된 단방향 통신 프로토콜입니다.
  • 클라이언트 요청 : WebSocket은 클라이언트가 서버에 연결을 초기화하며 이후에도 연결이 유지됩니다. SSE는 클라이언트가 서버에 한 번 연결하면 서버에서 이벤트가 발생할 때까지 연결을 유지하고 있습니다.
  • 데이터 형식: WebSocket은 텍스트 및 이진 데이터를 지원하고, SSE는 주로 텍스트 데이터를 전송하는 데에 사용됩니다.

 

이런 공통점과 차이점으로 WebSocket은 실시간 게임, 채팅 애플리케이션 등에서 효과적이며, SSE는 주로 서버에서 클라이언트로의 단방향 푸시 알림이 필요한 상황에서 유용하게 사용됩니다.

저작자표시 (새창열림)
'Computer Science' 카테고리의 다른 글
  • [CS] 오픈소스 메시지 브로커 RabbitMQ
  • [Docker] 도커로 Postgresql 실행하기
  • [CS / DataBase] 인메모리 데이터 저장소 Redis, 왜 사용할까?
  • [CS / 네트워크] 네트워크 토폴로지
마볼링
마볼링
개발과 게임에 관한 내용을 읽기 쉽게 정리합니다.
  • 마볼링
    게임을 좋아하는 개발자의 블로그
    마볼링
  • 전체
    오늘
    어제
    • 분류 전체보기
      • Project
        • LOATODO
        • 인스타그램 클론코딩(중단)
      • Language
        • Java
        • PHP
        • Javascript
      • Framework & Library
        • Spring
        • Vue
      • Computer Science
        • Web
        • Linux
      • CodingTest
        • Algorithm
        • Kotlin으로 푼 코딩 테스트
        • Java로 푼 코딩 테스트
        • Sorting & Thinking
        • BFS
      • 책&강의 정리
      • 정보처리기사
      • 개인
        • 팰월드(PALWORLD)
        • 마인크래프트
  • 블로그 메뉴

    • 링크

      • GitHub
      • Threads
    • 공지사항

    • 인기 글

    • 태그

      error
      php
      코딩테스트
      jsp
      Database
      로아투두
      운영체제
      LoaTodo
      아크 서바이벌
      프로그래머스
      springboot
      이터널 모드
      java
      오블완
      Spring
      네트워크
      codingtest
      JPA
      티스토리챌린지
      CS
    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.1
    마볼링
    [CS / Server] 서버와의 데이터 통신 HTTP, AJAX 통신, WebSocket, SSE 각각 알아보자
    상단으로

    티스토리툴바