HTTP
HTTP는 Hyper Text Transfer Protocol의 약자로, 웹에서 데이터를 주고받기 위해 사용되는 단방향 프로토콜이다.
HTTP의 전제는 "클라이언트(웹 브라우저)가 URL 및 부가정보를 통해 사용자가 원하는 페이지를 서버에 요청하고, 서버는 요청에 응답한다." 이다. 여기서 서버에 요청한다는 것이 중요한 포인트다. 클라이언트가 서버에 요청을 해야만 원하는 데이터를 얻을 수 있다는 뜻인데, 사용자는 새로운 데이터를 얻기 위해선 반드시 새로운 URL을 요청해야 한다는 것이다.
HTTP의 특징은 다음과 같다.
- HTTP는 요청(Request) / 응답(Response) 을 기반으로 한다.
- HTTP는 상태를 유지하지 않는 stateless한 프로토콜인데, 이는 각각의 요청이 독립적이고 서버는 클라이언트의 이전 요청을 기억하지 못한다는 것을 의미한다.
- HTTP는 비연결성(Connectionless)이다. 클라이언트가 서버에 요청하고 응답을 받을 때 서로 연결되어 있지만, 응답을 완료하면 연결이 끊어진다.
HTTP 통신을 하면 stateless한 특성으로 인해 응답 서버를 쉽게 바꿀 수 있어 서버 확장성이 높고, 웹 페이지와 관련 이미지, 스크립트 등의 리소스 로딩에 적합하다.
하지만, 새로운 데이터가 생겼을 때 서버가 클라이언트에 자동으로 데이터를 전송해주는 push 방식이 아닌, 클라이언트가 서버에 요청해야 하는 polling 방식이라는 점과 실시간 상호작용성이 떨어진다는 한계점이 있다.
WebSocket
웹소켓(WebSocket)은 HTTP의 통신 제약으로 인한 문제를 해결하기 위해 생긴 프로토콜이다.
클라이언트(웹 브라우저)가 서버에 데이터를 요청하고, 서버가 클라이언트에 데이터를 전송할 때 별다른 제약이 없기 때문에 클라이언트의 요청이 없어도 서버로부터 응답을 받을 수 있다.
웹소켓은 클라이언트와 서버 간에 양방향 통신이 가능하다.
웹소켓은 HTTP 연결을 통해 초기화를 한 후, 클라이언트와 서버 간에 지속적인 소켓 연결을 유지하여 데이터를 실시간으로 주고받을 수 있다. HTTP와 달리, 한 번의 Handshake 를 통해 연결이 이루어지고 명시적으로 종료될 때까지 유지된다.
웹소켓의 특징은 다음과 같다.
- 양방향 통신(Full-Duplex)이다.
- 실시간 통신(Real Time-Networking)이 가능하다.
위 특징으로 인해 채팅이나 게임, 금융 거래 등 실시간 데이터 업데이트가 필요한 서비스에 적합하다.
그림으로 보는 HTTP와 웹소켓 통신 차이
출처
긴 글 읽어주셔서 감사합니다 🍀
잘못 작성된 내용은 피드백 주시면 반영하겠습니다 😎
'Network' 카테고리의 다른 글
[Network] DNS A 레코드(A Record)란? (0) | 2024.05.06 |
---|---|
[Network] 서브넷 마스크(Subnet Mask)란? (0) | 2024.03.20 |
[Network] 포트(Port)와 소켓(Socket) (0) | 2024.03.19 |
[Network] IP 주소, MAC 주소, ARP, RARP (0) | 2024.03.06 |