대부분의 웹사이트는 HTTP 프로토콜을 통해 서버에게 원하는 데이터를 요청하거나 전송하는 등의 통신을 수행한다. 하지만 당연히 HTTP 통신말고도 데이터를 주고받는 다른 통신 방식들도 존재할 것이다.
그중 대표적인 방법이 바로 HTTP 통신과 Socket 통신이다. 두 방식 모두 이 둘의 차이에 대해서 간단하게 정리해보려고 한다.
먼저 언급하면 두 방식의 가장 큰 차이는 클라이언트와 서버의 통신을 유지하는지에 대한 여부이다.
그렇다면 각 방식에 대해서 간단하게 알아보도록 하자.
먼저 HTTP 통신이다. HTTP 프로토콜의 특징 중 하나는 비연결성(Connectionless)이다. 즉, 클라이언트와 서버가 연결되어 클라이언트의 요청에 대해 서버가 응답을 하면 연결을 끊어버린다.
또한, 반대로 서버가 클라이언트에게 요청을 보낼 수 없는 단뱡향 통신 방식이다.
HTTP 통신이 이처럼 연결을 유지하지 않는 이유는 서버의 부하를 줄이기 위해서이다.
일반적으로 클라이언트와 서버의 관계는 N : 1일 것이다. 1개의 서버가 N개의 클라이언트와 통신을 계속해서 유지한다면 어떻게 될까? 통신을 하지 않는 클라이언트도 계속해서 연결을 유지하기 때문에 불필요한 자원을 계속해서 소모할 것이다.
이러한 문제점을 해결하기 위해 한 번의 요청을 처리해 준 후 연결을 끊어버리는 비연결성을 가지는 것이다.
물론 A가 100번의 요청을 짧은 시간 내에 보낸다고 한다면 100번의 요청을 매번 재연결하는 것보다 연결 상태를 유지한 상태에서 100번의 요청을 보내고 연결은 종료하는 것이 이득일 것이다.
이는 HTTP 1.1부터 도입된 Keep-Alive 기능을 통해 개선하였다.
Client의 요청을 Server가 처리한 후 통신을 끊어버리는 단방향적 통신 방법
다음으로 Socket 통신이다. Socket 통신은 서버와 클라이언트가 특정 Port를 통해 연결을 계속해서 유지하는 양방향 통신 방식이다.
즉, HTTP 통신과 반대로 서버나 클라이언트 측에서 연결을 강제로 끊기 전까지는 연결을 유지하는 통신 방식이다. 연결을 지속해서 유지하기 때문에 실시간 통신이 필요한 경우에 자주 사용된다.
또한, 양방향 통신이기 때문에 HTTP 통신과 달리 서버 측에서도 클라이언트 측에게 요청을 보낼 수 있다.
연결을 강제로 해제하지 않는 이상 계속해서 유지하기 때문에 당연히 서버의 부담은 클 수밖에 없다. 즉, 서버의 성능에 따라 연결할 수 있는 클라이언트의 수가 제한된다.
Client와 Server가 특정 Port를 통해 계속해서 통신하는 양방향적 통신 방법
'IT 개인 공부 > Web' 카테고리의 다른 글
Forward와 Redirect 방식의 차이점 & PRG(Post/Redirect/Get) (0) | 2021.08.17 |
---|---|
URI vs URL vs URN (0) | 2021.07.25 |
JSON(Java Script Object Notation) (0) | 2021.07.25 |
REST, REST API, RESTful (0) | 2021.07.25 |
웹 서버(Web Server) vs WAS(Web Application Server) (0) | 2021.07.24 |
댓글