IT박스

80 이외의 포트에서 WebSocket을 사용해야합니까?

itboxs 2020. 12. 31. 08:05
반응형

80 이외의 포트에서 WebSocket을 사용해야합니까?


80이 아닌 포트에서 WebSocket을 사용해야합니까? 기존 웹 / HTTP 인프라를 사용하는 전체 목적을 망칠까요? 그리고 더 이상 80이 아닌 포트의 소켓 이라는 이름에 맞지 않는다고 생각합니다 .

다른 포트를 통해 WebSocket을 사용하는 경우 TCP를 직접 사용하지 않는 이유는 무엇입니까? 아니면 WebSocket 프로토콜 자체에 특별한 이점이 있습니까?

그리고 현재 WebSocket 핸드 셰이크가 HTTP UPGRADE 요청의 형태이므로 WebSocket 핸드 셰이크를 수행하려면 포트에서 HTTP 프로토콜을 활성화해야합니까?


80이 아닌 포트에서 WebSocket을 사용해야합니까? 기존 웹 / HTTP 인프라를 사용하는 전체 목적을 망칠까요? 그리고 더 이상 80이 아닌 포트에서 WebSocket이라는 이름에 맞지 않는다고 생각합니다.

호스트 OS가 허용하고 클라이언트가 연결할 수있는 모든 포트에서 webSocket 서버를 실행할 수 있습니다.

그러나 포트 80 (또는 443)에서 실행하면 여러 가지 이점이 있습니다.

  1. 네트워킹 인프라는 일반적으로 클라이언트가 거주하는 장소 (데스크톱 컴퓨터, 모바일 장치 등)에서 서버가있는 장소 (예 : 데이터 센터) 로의 아웃 바운드 연결을 위해 포트 80에서 이미 배포되고 열려 있습니다. 따라서 포트 80에서 webSocket 앱을 배포하기 위해 방화벽 또는 라우터 구성 등에 새로운 구멍이 필요하지 않습니다. 다른 포트에서 실행하려면 구성 변경이 필요할 수 있습니다. 예를 들어, 많은 대기업 네트워크는 아웃 바운드 연결을 설정할 수있는 포트에 대해 매우 까다 롭고 특정 표준 및 예상 동작에 대해서만 구성됩니다. 일부 회사 네트워크에서는 webSocket 연결을 위해 비표준 포트를 선택하는 것이 허용되지 않을 수 있습니다. 이것이 포트 80을 사용하는 가장 큰 이유입니다 (구성이 잠긴 사설 네트워크의 최대 상호 운용성).

  2. 브라우저에서 실행되는 많은 webSocket 앱은 호스트 웹 페이지 용 포트 80에서 이미 사용중인 기존 보안 / 로그인 / 인증 인프라를 활용하려고합니다. 모든 것이 동일한 포트에있는 경우 정확히 동일한 인프라를 사용하여 webSocket 연결의 인증을 확인하는 것이 더 간단 할 수 있습니다.

  3. webSocket을위한 일부 서버 인프라 (예 : node.js의 socket.io)는 결합 된 서버 인프라 (단일 프로세스, 하나의 리스너)를 사용하여 HTTP 요청과 webSocket을 모두 지원합니다. 둘 다 동일한 포트에 있으면 더 간단합니다.


다른 포트를 통해 WebSocket을 사용하는 경우 TCP를 직접 사용하지 않는 이유는 무엇입니까? 아니면 WebSocket 프로토콜 자체에 특별한 이점이 있습니까?

webSocket 프로토콜은 원래 브라우저에서 서버로 작동하도록 정의되었습니다. 브라우저에서 일반적인 TCP 액세스가 없으므로 사용자 지정 브라우저 추가 기능이없는 영구 소켓을 원하면 webSocket이 제공됩니다. 일반 TCP 연결과 비교하여 webSocket 프로토콜은 앱 수준 및 종단 간 연결 유지 핑 / 퐁을 수행하는 표준 방식 인 HTTP 인증 및 쿠키를 활용할 수있는 기능을 제공합니다 (TCP는 홉 수준 연결 유지를 제공합니다. ,하지만 종단 간은 아님), 내장 프레임 프로토콜 (TCP에서 고유 한 패킷 형식을 설계해야 함) 및 이러한 상위 수준 기능을 지원하는 많은 라이브러리. 기본적으로 webSocket은 TCP보다 높은 수준에서 작동하며 (내부에서 TCP 사용) 대부분의 사람들이 유용하다고 생각하는 더 많은 내장 기능을 제공합니다. 예를 들어 TCP를 사용하는 경우 가장 먼저해야 할 일은 프로토콜 (데이터 표현 수단)을 얻거나 설계하는 것입니다. 이것은 이미 webSocket에 내장되어 있습니다.

그리고 현재 WebSocket 핸드 셰이크가 HTTP UPGRADE 요청의 형태이므로 WebSocket 핸드 셰이크를 수행하려면 포트에서 HTTP 프로토콜을 활성화해야합니까?

모든 webSocket 요청은 HTTP 요청으로 시작되므로 webSocket을 사용하려는 포트에서 실행중인 HTTP 서버가 있어야합니다. 많은 기능을 갖춘 HTTP 서버 일 필요는 없지만 초기 HTTP 요청을 처리해야합니다.


제 생각에는 가능합니다. 80기본 포트이지만 원하는대로 변경할 수 있습니다.

참조 URL : https://stackoverflow.com/questions/28522857/shall-i-use-websocket-on-ports-other-than-80

반응형