네트워크 통신은 컴퓨터들 사이에 데이터를 주고받는 과정을 말한다. 이 과정에서는 여러 가지 프로토콜(Protocol)이 사용된다. 프로토콜이란, 통신을 할 때 필요한 규칙이나 절차를 정의한 것을 말한다. 인터넷은 TCP/IP 프로토콜 스위트를 기반으로 동작하며, 이 중 TCP(Transmission Control Protocol)와 IP(Internet Protocol)는 가장 중요한 프로토콜들이다.
TCP는 연결 지향적(Connection-oriented) 프로토콜로, 데이터 전송 전에 먼저 연결을 설정하고, 데이터 전송 후에 연결을 해제한다. TCP는 데이터의 순서를 보장하고, 데이터가 정확하게 도착했는지 확인한다. 이러한 특성 때문에 TCP는 신뢰성 있는 데이터 전송이 필요한 애플리케이션에서 주로 사용된다.
반면, UDP는 연결 지향적이지 않은(Connectionless) 프로토콜로, 데이터 전송 전에 연결을 설정하지 않고, 데이터 전송 후에 연결을 해제하지 않는다. UDP는 데이터의 순서를 보장하지 않으며, 데이터가 정확하게 도착했는지 확인하지 않는다. 이러한 특성 때문에 UDP는 신뢰성보다는 빠른 데이터 전송이 중요한 애플리케이션에서 주로 사용된다.
3-Way Handshake는 TCP 연결을 시작할 때 사용되는 프로세스다. 이 프로세스는 클라이언트와 서버 사이에 신뢰성 있는 연결을 설정하는 데 사용된다. 3-Way Handshake는 다음과 같은 순서로 진행된다.
이러한 3단계의 과정을 거쳐서 클라이언트와 서버 사이에 신뢰성 있는 TCP 연결이 설정된다. 이 연결을 통해 데이터를 안전하게 주고받을 수 있다.
WebSocket은 실시간 양방향 통신을 가능하게 하는 프로토콜이다. WebSocket은 HTTP 기반으로 초기 연결을 설정한 후, TCP 연결 위에서 전이중 통신(duplex communication)을 제공한다. 이 프로토콜은 웹 애플리케이션에서 실시간 데이터 전송이 필요할 때 유용하다. 예를 들어, 채팅 애플리케이션, 실시간 주식 티커, 실시간 뉴스 업데이트 등에서 사용할 수 있다.
연결 유지 (Connection Maintenance):
데이터 전송 (Data Transmission):
WebSocket은 초기 연결 설정을 위해 HTTP를 사용하며, 이 과정에서 3-Way Handshake도 이루어진다. WebSocket 연결 설정은 다음과 같은 순서로 진행된다.
WebSocket 연결 설정 과정에서의 3-Way Handshake는 TCP 연결 설정과 동일하게 동작한다. 클라이언트와 서버는 SYN, SYN-ACK, ACK 패킷을 주고받아 TCP 연결을 설정하며, 이후 WebSocket 프로토콜을 사용하여 양방향 통신을 진행한다.
WebSocket의 실시간 양방향 통신 기능은 다양한 애플리케이션에서 활용할 수 있다. 그 활용 예는 다음과 같다.
WebSocket은 높은 실시간성과 양방향 통신 기능으로 인해 많은 실시간 웹 애플리케이션에서 중요한 역할을 수행한다.