본문 바로가기

CS/네트워크

[네트워크] 웹 소켓과 소켓 통신의 차이는?

웹소켓과 소켓 통신의 차이

  1. 소켓이란?
    1. 네트워크상에서 동작하는 프로그램 간 통신의 종착점으로 1대1 동신의 경우 양측 모두 소켓이 존재해야 통신이 가능합니다.
    2. 현재, 대부분의 통신은 인터넷 프로토콜(TCP,UDP)에 기반하여 대부분의 네트워크 소켓은 인터넷 소켓입니다.
  2. 웹 소켓이란?
    1. 사용자의 브라우저와 서버 사이의 인터액티브 통신 세션을 설정할 수 있게 하는 고급 기술입니다.
    2. 하나의 TCP 접속에 전이중 통신 채널을 제공하는 컴퓨터 통신 프로토콜입니다.
    3. 서버로 메시지를 보내고 서버의 응답을 위해 서버를 폴링하지 않고도 이벤트 중심 응답을 받는 것이 가능합니다.

3. 차이점

  • 동작 계층(OSI 7계층)
    • 소켓은 인터넷 프로토콜에 기반하므로, TCP,UDP가 속한 4계층에 위치한다.
    • 웹 소켓은 어플리케이션 계층인 7계층에 기반한다.
  • 데이터 형식
    • 소켓은 TCP에 기반한 단순한 바이트 스트림을 통한 데이터 전송이다.
    • 웹소켓은 어플리케이션 계층인 7계층에 기반하기 때문에 메시지 형식의 데이터를 다룬다.
    •  

하지만, 웹소켓은 TCP 소켓과 구분 되는 것이 아니라 TCP 소켓의 추상화된 형태입니다. TCP 소켓으로도 실시간 통신을 할 수 있지만, 전송계층의 원시 바이트 대신 애플리케이션 계층을 통해 메시지를 보내는 것이 개발측면에서 더 적합하기 때문에 웹소켓으로 발전되었다.

소켓과 포트의 차이

  • 소켓은 네트워크에서 두 대의 디바이스 간의 데이터 송수신을 위한 통신 엔드포인트라고 할 수 있습니다.
  • 포트는 네트워크에서 특정 소프트웨어의 데이터를 전달하기 위한 통신 채널을 식별하는 번호입니다.
  • 즉, 소켓은 통신 경로를 제공하고 관리하는 역할을 하며, 포트는 통신 과정에서 데이터가 어떤 프로세스나 서비스에 도달해야 하는지를 구분합니다.
  • 예: 소켓이 아파트 입구의 도로라고 하면, 포트는 아파트의 동호수라고 할 수 있다

여러 소켓이 있다고 할 때, 그 소켓의 포트 번호는 모두 다른가요?

포트 번호는 다릅니다. 동일한 포트 번호를 사용하게 된다면, 데이터가 수신될 때 어떤 소켓이 처리해야 하는지 결정할 수 없는 문제가 발생하여서 운영체제에서는 소켓들이 중보된 포트 번호를 사용하지 않도록, 내부적으로 포트 번호와 소켓 연결 정보를 관리합니다.

하지만, 하나의 프로세스는 동일한 포트 번호를 가진 여러 개의 소켓을 결합할 수 있습니다. 이 경우에는 호스트가 하나의 Port로 여러 개의 Socket을 만들어 다른 호스트들과 데이터를 주고 받을 수 있습니다.(예: 여러명이 존재하는 오픈 채팅방)

웹 소켓은 HTTP의 어떤 버전에서 사용할 수 있나요? 그리고 왜 그런가요?

1.1이상을 사용해야 합니다. HTML5의 기술이기 때문에 오래된 버전의 웹에서는 지원하지 않습니다.

웹 소켓 연결 이후 소켓 프로토콜로 변경된다고 했는데, 이러면 보안 문제는 없나요?

보안 문제를 해결하기 위해 HTTP 프로토콜의 보완 강화를 위해서 HTTPS를 쓰는 거 처럼 웹소켓은 "ws"를 이용하는데 여기서 보완을 강화하기 위해서 "wss"를 사용할 수 있습니다.

  • ws를 이용할 경우 데이터 전송시 데이터가 암호화되어있지 않은 채로 전송되기 때문에 데이터가 그대로 노출되는데 아주 오래된 프락시 서버는 웹소켓이 무엇인지 몰라서 '이상한'헤더가 붙은 요청이 들어왔다고 판단하여 연결을 끊어버립니다.
  • wss는 TSL이라는 보안 계층을 통과해 전달되므로 송신자 측에서 데이터가 암호화되고 수신자 측에서 보호화를 하게 됩니다. 따라서 데이터가 담긴 패킷이 암호화된 상태로 프락시 서버를 통과하므로 프락시 서버는 패킷 내부를 볼 수 없습니다.

HTTPS가 아닌 HTTP 에서 웹 소켓 이용하면 보안 문제는 없나요?

웹소켓의 경우 연결 가능한지 확인하기 위해 TCP를 이용하여 확인합니다. 이때 HTTP를 사용하게 되고 그 이후 소켓 프로토콜로 변경되기때문에 웹 소켓 내부의 보안을 신경써서 wss를 사용해야합니다.

HTTP 프로토콜은 주로 몇 번 포트 번호를 사용하나요?

기본적으로 HTTP 통신 포트는 80번, HTTPS는 443번입니다.

그렇다면 하나의 서버가 동시에 여러개의 HTTP 클라이언트 요청을 처리할 때는 어떻게 해야하나요? 동일한 포트인 80번으로 요청이 올텐데?

  1. 멀티 쓰레딩
    • 웹 서버는 각 클라이언트 요청을 독립적인 쓰레드에서 처리합니다. 이를 통해 여러 사용자의 요청을 동시에 처리할 수 있습니다.
  2. 비동기 처리
    • I/O 작업이 끝날 때까지 기다리지 않고 다른 작업을 계속 처리 할 수 있습니다. 웹 서버의 처리량과 효율성이 향상됩니다.
  3. 캐싱
    • 자주 요청되는 정적리소스를 캐시에 저장하여 빠른 응답을 제공합니다. 이렇게하면 서버의 부하가 줄어들고 더 많은 사용자 요청을 처리 할 수 있습니다.
  4. 로드 밸런싱
    • 로드 밸런서를 사용하여 들어오는 요청을 여러 서버에 분산시킬 수 있으며, 이를 통해 서버 부하를 고르게 분산하고 높은 처리량을 유지할 수 있습니다.
  5. 스케일링
    • 수평 스케일링(새로운 서버 추가) 또는 수직 스케일링(기존 서버의 리소스 확장)을 통해 처리량을 높일 수 있습니다. 이를 통해 더많은 사용자 요청을 처리할 수 있습니다.

참고

https://developer.mozilla.org/ko/docs/Web/API/WebSockets_API

 

웹 소켓 - Web API | MDN

웹 소켓은 사용자의 브라우저와 서버 사이의 인터액티브 통신 세션을 설정할 수 있게 하는 고급 기술입니다. 개발자는 웹 소켓 API를 통해 서버로 메시지를 보내고 서버의 응답을 위해 서버를 폴

developer.mozilla.org

https://gusrb3164.github.io/web/2021/10/28/websocket-socket/

 

웹소켓과 소켓은 어떻게 다른가

OSI 계층 관점에서 보는 웹소켓과 소켓의 차이점, 브라우저에서 소켓 대신 웹소켓을 사용하는 이유

gusrb3164.github.io

https://velog.io/@rhdmstj17/%EC%86%8C%EC%BC%93%EA%B3%BC-%EC%9B%B9%EC%86%8C%EC%BC%93-%ED%95%9C-%EB%B2%88%EC%97%90-%EC%A0%95%EB%A6%AC-1

 

[소켓과 웹소켓] 한 번에 정리 (1) | 소켓이란?, 소켓 API의 실행 흐름, 클라이언트 소켓과 서버 소

넷응설 예습 스터디를 위해 소켓 프로그래밍에 대해 자료를 정리하던중 ... http와 TCP/IP소켓 웹소켓 등등 .. 비슷한듯 다른 개념들이 정리가 안되고 헷갈려가지고 한 번에 정리해보려한다. 이번

velog.io

https://tecoble.techcourse.co.kr/post/2020-09-20-websocket/

 

웹소켓에 대해 알아보자

웹 개발을 처음 배우기 시작했다면 서버와 클라이언트의 통신은 모두 HTTP 프로토콜만 이용해서 이루어진다고 생각할 수 있습니다. 하지만 웹 개발을 하면서 채팅, 게임, 주식 차트 등의 실시간

tecoble.techcourse.co.kr

https://ko.javascript.info/websocket

 

웹소켓

 

ko.javascript.info

 

'CS > 네트워크' 카테고리의 다른 글

DHCP는 무엇일까?  (0) 2024.01.15
[네트워크]HTTP와 HTTPS란?  (0) 2023.12.18
[네트워크] TCP와 UDP의 차이란?  (1) 2023.12.18