일반 소켓과 웹 소켓의 차이가 무엇인가요
소켓 프로그래밍은 애플리케이션 계층에서 소켓을 이용해 프로그램을 작성하는 것으로 알고 있습니다. 웹 소켓은 웹 프로그램을 만드는 것으로 알고 있는데 웹 소켓은 소켓의 한 종류인가요? 아니면 별개의 소켓으로 이해해야하나요?
소켓이란, 프로그램이 네트워크 상에서 데이터를 송신과 수신을 하기 위한 연결부이다.
일반적으로 TCP/IP (또는 UDP) 프로토콜을 이용하거나, WebSocket 을 이용한다.
웹소켓(WebSocket) 과 TCP/IP 소켓은 차이가 있다.
웹소켓은 HTTP 레이어에서 작동하는 소켓으로 레이어가 다르다. (RFC-6455)
IP, PORT 를 통해 통신한다는 점에서는 비슷하다.
기존 http 통신은 단방향 통신으로, 실시간 통신을 하기 위해 실시간처럼 보이는 방식을 사용했다.(Polling 방식)
이후 실제로 실시간 양방향 통신이 가능한 웹소켓은 2011년 국제 인터넷 표준화 기구(IETF) 에서 RFC 6455로 표준화 되었다.
웹소켓의 통신 TCP 80포트 를 사용하면서 HTTP 프로토콜과 호환되며, 웹브라우저와 서버간 통신을 가능하게 해준다.
웹소켓의 포로토콜 표시는 ws(WebSocket), wss (WebSocket Secure) 이다.
웹소켓을 지원하지 않는 브라우저 등이 있었지만 현재는 거의 모든 벤더사에서 지원하고 있다.
크로스 브라우저 지원 등 사용하기 편하게 해주는 웹소켓 프레임워크인 Socket.io 가 있다.
Node.js 에서 기존 TCP/IP 소켓 프로그래밍을 하려면 net.Socket 을 사용한다.
웹소켓은 기존 http 통신을 대체하지 않는다.
웹소켓은 트래픽이 많고 지연이 낮은 접속 환경에서 유리하다.
안녕하세요.
웹소켓은 HTTP 기반에서 사용하는 소켓으로 웹브라우저와의 통신을 위해 사용합니다.
TCP 소켓은 IP / Port로 통신하고, 웹소켓은 HTTP 레이어를 사용하므로 IP / Port + 프로토콜 (ws / wss)을 사용합니다.
TCP 소켓은 보내는 byte이 끝을 알 수 없어 별도로 규정해서 사용하지만, 웹소켓은 메시지 이벤트 방식으로 데이터는 항상 상대방이 보낸 전체 메시지 입니다.