HTTP와 WebSocket 통신의 차이
- Network
- 2023. 4. 30.
HTTP와 WebSocket은 모두 클라이언트-서버 통신에 사용되는 통신 프로토콜이지만 차이가 있습니다. 연결이 단발적인지, 지속적인지, 통신이 단방향인지 양방향인지 등에 따라 구분하며 각 특징에 맞게 활용됩니다.
Socket vs HTTP
1. HTTP 통신
HTTP(HyperText Transfer Protocol)는 단방향 통신입니다. 단방향 통신은 요청(request)과 응답(response)의 형태로 이루어집니다. 클라이언트가 서버에 요청하면 서버는 그 결과를 응답합니다. 서버는 클라이언트의 요청을 받아야만 응답을 반환합니다. 이렇게 한쪽 방향으로만 통신이 이루어지기 때문에 단방향 통신으로 간주됩니다.
HTTP는 stateless(상태 비저장) 프로토콜입니다. 각 요청과 응답이 독립적이며 서로 간에 상태 정보를 저장하지 않습니다. 예를 들어, 웹 사이트에 방문해서 여러 페이지를 돌아다닐 때 서버는 이전에 사용자가 한 요청을 기억하고 응답하지 않습니다. 매번 동일한 페이지 리소스를 출력합니다.
HTTP 통신의 예시는 정적 웹 페이지 조회하는 것을 떠올리면 됩니다. HTML, CSS, JavaScript로 구성된 컨텐츠를 요청하고 응답받아 웹 페이지에 표시하는 경우에 HTTP 통신이 사용됩니다.
2. WebSocket 통신
반면 웹소켓(WebSocket)는 양방향 통신을 지원하는 프로토콜입니다. 웹소켓은 클라이언트와 서버 간에 한 번 연결이 이루어지면 그 연결을 유지하면서 양방향으로 데이터를 주고받을 수 있습니다. 클라이언트가 요청해야만 서버가 응답하는 것이 아니라 양쪽 모두 언제든지 데이터를 전달할 수 있습니다.
클라이언트와 서버 간 연결은 어느 한쪽에 의해 종료될 때까지 활성 상태를 유지하기 때문에 stateful(상태 저장) 프로토콜입니다.
웹소켓이 사용되는 예시로는 실시간 채팅 앱, 온라인 게임, (출력되는 데이터가 지속적으로 변경되는)실시간 웹 등이 있습니다.
3. WebSocket 통신이 사용되는 이유
웹소켓 통신은 HTTP 일부 통신의 한계점을 극복해줍니다. 예를 들어, 아래와 같은 상황들이 있습니다.
1. HTTP 통신에서는 서버가 자체적으로 클라이언트에게 데이터를 보낼 수 없습니다. 때문에 서버에서 변경사항이 발생했을 때 클라이언트가 즉시 알 수 없습니다.
→ 웹소켓은 양방향 통신을 지원하기 때문에 서버에서 클라이언트에 데이터를 실시간으로 전달할 수 있습니다.
2. HTTP 요청은 매번 헤더 정보를 매번 반복적으로 전송합니다. 통신이 잦을수록 효율이 떨어진다고 볼 수 있습니다.
→ 웹소켓은 연결이 한 번 설정된 후에는 최소한의 헤더 정보만을 사용해 데이터를 주고받습니다. 이로써 데이터 전송에 따른 오버헤드가 줄어들어 통신 효율이 향상됩니다.
3. HTTP 통신은 매번 새로운 연결을 설정해야 합니다.
→ 웹소켓은 한 번 연결되면 연결이 종료될 때까지 지속됩니다. 덕분에 연결 설정에 따른 추가 지연 시간을 줄이고 지속적인 통신을 가능하게 합니다.
'Network' 카테고리의 다른 글
네트워크 표준화 단체 IEEE IETF 하는 일 (0) | 2023.05.05 |
---|---|
네트워크 모델 OSI TCP/IP 차이 (0) | 2023.05.04 |
네트워크, 핸드셰이크(Handshake)란? (0) | 2023.04.29 |
서브넷 마스크(Subnet Mask)란? 사용 가능한 IP의 수 (0) | 2023.04.20 |
ifconfig 명령어 inet, netmask, broadcast 의미 (0) | 2023.04.17 |