Study/Computer Science

[네트워크] HTTP와 소켓 프로그래밍

욘아리 2024. 11. 22. 18:03

네트워크를 통해 서버에서 데이터를 가져오거나 주고받는 통신을 구현하려면 크게 HTTP 프로그래밍과 소켓 프로그래밍 두 가지 방식이 있다. 이 두 방식의 차이에 대해 알아보자.

 

소켓(Socket) 프로그래밍

서버와 클라이언트가 특정 포트를 통해 시간 양방향 통신을 하는 방식

 

소켓 프로그래밍은 TCP/IP 프로토콜을 기반으로 서버와 클라이언트가 특정 포트를 통해 네트워크 연결을 유지하며 실시간 양방향 통신을 하는 방식이다. 이 연결을 통해 서버와 클라이언트는 서로 자유롭게 데이터를 주고받을 수 있으며, 이러한 방식으로 프로그래밍하는 것을 소켓 프로그래밍이라고 한다.

 

HTTP 프로그래밍과 달리, 소켓 프로그래밍은 클라이언트뿐만 아니라 서버도 클라이언트로 요청을 보낼 수 있으며, 지속적인 연결을 유지하기 때문에 실시간 통신이 필요한 서비스에서 자주 사용된다. 예시로 실시간 스트리밍 중계실시간 채팅 등이 있다.

만약 실시간 동영상 스트리밍 서비스를 HTTP 방식으로 구현한다고 가정해 보자. 사용자가 영상을 요청할 때마다 HTTP 요청을 지속적으로 보내야 하며, 동영상이 끝날 때까지 계속 요청을 반복해야 한다. 이 경우, 매번 연결을 설정하고 해제하는 HTTP의 특성상 서버에 과부하가 발생할 수 있다. 반면, 소켓 프로그래밍을 활용하면 한 번 연결을 설정한 후 지속적으로 데이터를 주고받기 때문에 부하를 줄이고 효율적인 통신이 가능하다.

 

Socket 통신

 

소켓 프로그래밍 특징

  • 지속적인 연결 유지 : 서버와 클라이언트가 계속 연결을 유지하며 양방향으로 데이터를 주고받는다.
  • 실시간 통신 : 실시간으로 데이터를 주고받아야 하는 서비스에 적합하다.
  • 실시간 동영상 스트리밍, 온라인 게임, 실시간 채팅 등 즉각적인 반응이 중요한 서비스에서 자주 사용된다.

 

HTTP 프로그래밍

클라이언트가 요청을 보낼 때만 서버가 응답하고, 응답 후 연결을 종료하는 방식

 

HTTP 프로그래밍은 소켓 연결 위에서 동작하는 애플리케이션 계층의 통신 방식이다. 클라이언트가 요청(Request)을 보낼 때만 서버가 응답(Response)하고, 응답이 완료되면 연결을 종료하는 방식을 사용한다. 이러한 특징 때문에 비연결형 단방향 통신이라고도 한다.

 

서버는 클라이언트로 요청을 보낼 수 없고, 오직 클라이언트가 요청할 때만 응답한다. 예시로는 여러분이 이 블로그 글을 읽는 상황을 들 수 있다. 블로그 링크를 클릭하는 순간, 클라이언트(브라우저)가 서버에 이 글의 내용을 요청하게 된다. 서버가 해당 내용을 클라이언트에 전달한 후, 연결은 즉시 종료된다. 이러한 HTTP 방식에서는 요청 시마다 연결 설정 시간이 필요하므로, 실시간 통신에는 적합하지 않다. 그러나 콘텐츠 요청과 같이 필요할 때만 데이터를 주고받는 서비스에 효과적이다.

만약 블로그 게시물을 보기 위해 소켓 프로그래밍을 사용한다면, 게시물을 받은 이후에도 연결이 유지되어 불필요한 자원 소모가 발생한다. 따라서 HTTP 프로그래밍은 모바일 앱이나 웹 애플리케이션에서 필요한 순간에만 서버와 연결하는 데 주로 사용되며, 비용 절감 및 유지보수 측면에서도 장점이 많다.

 

 

Http 통신

 

HTTP 프로그래밍 특징

  • 단방향 통신 : 클라이언트가 요청할 때만 서버가 응답하는 구조다.
  • 비연결형 프로토콜 : 요청 후 응답이 완료되면 즉시 연결을 종료한다.
  • 필요할 때만 연결 : 실시간 연결이 필요하지 않은 경우에 적합하다.
  • 모바일 앱 및 웹 애플리케이션에서 서버로 필요한 정보를 요청하는 경우에 주로 사용된다.

 

 

 

출처

https://mangkyu.tistory.com/48