Kimsora✨
article thumbnail
Published 2023. 9. 24. 19:44
WebSocket 과 WebRTC
320x100
반응형

WebSocket

웹소켓(WebSocket)은 OSI 모델에서 7계층에 위치하는 프로토콜이며, 4계층의 TCP(Transmission Control Protocol)를 기반으로 동작한다 웹소켓은 HTTP 프로토콜과 함께 사용되며, 기존의 Request-Response 구조와는 다르게 커넥션을 열고 유지하여 양방향 통신을 지원한다

 

1.커넥션의 Open과 Close

  • 웹소켓은 클라이언트(브라우저)가 서버와 연결을 맺으면 해당 커넥션이 Open 상태로 유지
  •  Open된 커넥션을 통해 양쪽 간에 언제든 데이터를 주고받을 수 있으며, 커넥션은 클라이언트 또는 서버가 종료할 때까지 유지
  • 서버는 클라이언트의 요청을 기다리지 않고, 업데이트된 정보나 메시지가 있을 때 즉시 클라이언트에게 전달

2.핸드쉐이킹

  • 웹소켓 커넥션은 최초 접속시에 HTTP 프로토콜 위에서 핸드쉐이킹(handshaking)을 수행
  • 핸드쉐이킹 과정에서 클라이언트는 HTTP GET 메서드를 사용하며, "Upgrade: websocket" 헤더를 통해 웹소켓 통신을 요청
  • 서버는 이 요청을 수락하고 "Connection: Upgrade" 헤더를 포함하여 응답
  • 핸드쉐이킹 이후에는 HTTP 프로토콜이 아닌 웹소켓 프로토콜을 사용하여 통신이 이루어짐
  • =>웹소켓은 HTTP와 함께 사용되면서 커넥션을 열어두고 양방향 통신을 가능하게 하는 프로토콜로, 핸드쉐이킹을 통해 서버와 클라이언트 간의 연결을 설정하고 실시간 데이터 전송에 적합하다 이를 통해 웹 애플리케이션에서 실시간 업데이트와 실시간 통신을 구현
ocket.io란
웹소켓을 사용할 수 없는 브라우저인 경우, 일정 간격마다 데이터를 받아오는 HTTP polling을 사용해 실시간 통신 기능을 구현하게끔 해주는 자바스크립트 라이브러리 socket.io !== WebSocket

 

 

WebRTC

웹RTC(Web Real-Time Communication)를 사용하는 P2P(Peer-to-Peer) 통신 환경에서, 클라이언트들은 중앙 서버 없이 서로 직접 통신한다

 

제약사항

1.개인 컴퓨터의 공인 네트워크 주소 얻기

:클라이언트 간의 직접 통신을 위해서는 각 클라이언트의 공인 IP 주소와 포트를 알아야 한다 그러나 대부분의 클라이언트는 사설 IP 주소와 NAT(Network Address Translation) 장치 뒤에 있어서 직접 공인 IP 주소를 알기 어렵다

2.보안 및 방화벽 문제
:일부 컴퓨터 환경에서는 방화벽 및 보안 정책으로 인해 클라이언트 간의 직접 연결이 차단될 수있어  클라이언트가 서로에게 데이터를 전송하기 어렵게 만든다

이러한 문제를 해결하기 위해  TURN 서버(Traversal Using Relays around NAT)가 사용 된다

중계 서버 역할: TURN 서버는 P2P 통신을 위해 중계 역할을 하고 직접 통신이 어려운 경우, 클라이언트는 TURN 서버에 데이터를 보낸다
공인 주소 획득: TURN 서버는 공인 IP 주소와 포트를 가지고 있으며, 클라이언트들은 TURN 서버를 경유하여 다른 클라이언트에게 연결
방화벽 관리: TURN 서버는 방화벽을 통과하여 클라이언트 간 연결을 가능하게 하며 TURN 서버를 통해 데이터가 전달되므로 방화벽 문제를 우회할 수 있다
보안과 데이터 전달: TURN 서버는 데이터를 안전하게 전달하며, 클라이언트 간의 데이터 교환을 중계
중계 서버 역할: TURN 서버는 P2P 통신을 위해 중계 역할, 직접 통신이 어려운 경우, 클라이언트는 TURN 서버에 데이터를 보낸다
공인 주소 획득: TURN 서버는 공인 IP 주소와 포트를 가지고 있으며, 클라이언트들은 TURN 서버를 경유하여 다른 클라이언트에게 연결
방화벽 관리: TURN 서버는 방화벽을 통과하여 클라이언트 간 연결을 가능하게 한다 TURN 서버를 통해 데이터가 전달되므로 방화벽 문제를 우회할 수 있다
보안과 데이터 전달: TURN 서버는 데이터를 안전하게 전달하며, 클라이언트 간의 데이터 교환을 중계

=>TURN 서버를 사용하면 P2P 통신을 위한 클라이언트 간의 연결이 가능하게 되며, 네트워크 주소 변환(NAT) 및 방화벽 등의 문제를 해결할 수 있다 이를 통해 웹RTC를 사용하여 안전하고 신뢰성 있는 P2P 통신을 구현이 가능하다

728x90
반응형

'' 카테고리의 다른 글

CORS 정책이 필요한 이유 와 Proxy  (0) 2022.12.08
[Deploy] CI/CD  (0) 2022.12.07
[최적화] Optimization  (0) 2022.12.05
[사용자 친화 웹] 웹 표준 & 접근성  (0) 2022.11.05
UI, UX  (0) 2022.10.24
profile

Kimsora✨

@sorarar

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

검색 태그

WH