ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [CS] Http통신과 Socket통신의 차이점
    CS 2023. 4. 19. 10:56

    1. Http 통신의 특징

    - Hyper Text Transper Protocol의 약자. (데이터를 대부분 text로 주고 받음)

    - 웹 서비스에서 Client - Server 간의 정보를 요청(request) / 응답(response)받기 위해 만들어진 프로토콜

    - Client가 요청이 있을때만, Server에서 응답을 반환(단방향 통신)

    - Statefuless protocol - Server가 Client의 상태를 저장하지 않음(데이터 1회 요청시 Connect / Close 반복)

    - 반드시 DB(레디스 등 메모리 DB 포함)를 거쳐 데이터를 주고 받음

    - 서버 자체의 메모리에 유저 데이터를 들고 있지 않음

     

    2. Socket 통신의 특징

    - 패킷이라는 형식화된 데이터 메모리 단위를 주고 받아 통신함

    - Client와 Server가 특정 Port를 열어서 실시간으로 양방향 통신을 하는 방식

    - Stateful Protocol - Server가  Client의 상태를 저장하고 있음(Client / Server 측에서 임의로 연결상태를 끊지 않는 한 서로 연결 유지)

    - DB를 통해 데이터를 주고 받을 수도 있고, 임시로 데이터를 서버 프로그램 자체 내에서 생성해서 가지고 있을 수도 있음.

    - 서버 자체의 메모리에 유저 데이터를 저장하고 있음.

     

    3. Http 통신의 예시

    Client <=> WAS <=> DB

     

    4. Socket 통신의 예시

     

    5. WebSocket의 등장

    - 웹 서비스에서는 그럼 양방향 통신을 할 수 있는 프로토콜은 존재하지 않는가? (WebRTC 아님, Socket.io 아님) 

    ㄴ WebSocket

    - 웹 서비스에서 Client - Server 간의 정보를 양방향으로 통신하기 위해 만들어짐

    - Stateful protocol - 한번 Connection을 맺으면 일정 시간 동안 Connection을 유지할 수 있음.

    - 웹서버와 통신이 가능하다는 이점이 있음.

    - WebRTC는 P2P(peer to peer) 방식, WebSocket은 Cleint-Server 방식

     

    6. 결론

    - Http 통신은 웹브라우저와 웹서버간 단방향 통신 프로토콜

    - Http 통신대규모 및 비동기 통신에 적합

    - 웹 통신에서 양방향으로 통신하기 위해 WebSocket, WebRTC 등의 기술 등장

    - Socket 통신웹이 아닌 프로그램에서 Client와 Server가 양방향으로 통신가능한 방식

    - Socket 통신은 실시간 통신 및 임시 데이터 저장이 필요한 곳에 사용(실시간 동영상 스트리밍, 임베디드 통신(콜택시 단말기 등), MMORPG, 온라인 게임 등...)

    'CS' 카테고리의 다른 글

    [CS] 공통 코드  (1) 2023.05.08
    [CS] 쓰레드에 대한 이해와 활용  (0) 2023.05.01
    [CS] 저장 프로시저(Stored Procedure)의 정의와 활용  (1) 2023.04.27
    [CS] 코딩의 DRY 법칙  (0) 2023.04.24
    [CS] 메모리란?  (0) 2023.04.17
Designed by Tistory.