TIL 44. Http vs Socket

Drageon Lee·2022년 3월 4일
0

TIL_CSS

목록 보기
3/3

Today's topic

이번 posting의 주제로는 http programming과 socket programming에 대해 정리해 보고자 한다. 기존에는 http programming만 알고 있어서 client 쪽에서 server 쪽으로 request보내고 그에 대한 response를 받는 것으로 알고 있었다. 하지만 socket programming을 통해서는 client와 server 사이에서 양방향으로 통신을 한다고 한다.
이번 posting을 통해 여기에 대해 알아보도록 한다.

👉 What is "http programming"?

Http에 대해서는 기존에 Https와 비교하면서 정리를 하였다.
Http vs Https
그럼 socket와 비교하기 위한 http 통신의 특징과 socket 통신이 나오게 된 배경에 대해서 알아보자.

Http 통신의 특징

  • Client와 server 사이에서 client에서 request를 보내면 server에서 response를 보내는 단방향 통신이다.
  • Request에 대한 response를 받으면 connection이 바로 종료가 되어 그 전의 기록은 남아있지 않아 stateless하다.

이러한 특징으로 Http 통신은 client에서 server에 request를 보내서 response 받는 content 위주의 case에 용이했다.

하지만 contents 및 service가 발전해서 실시간으로 data를 주고 받는 경우들(실시간 streaming, chating)이 생겨나면서 client에서만 요청하고 server에서 응답하는 단방향 형태가 아닌 client와 server에서 서로 요청하고 답하는 양방향 통신이 필요로 하게 되었다.
Http 통신으로도 이러한 점을 해결하기 위해 Polling, Long polling, Streaming 등이 있었지만 한계가 있었다.
이를 해결하기 위해 socket programming이 사용되게 되었다.

👉 What is "socket programming"?

Client와 server가 특정 port를 통해 연결을 성립하고 있어서, 실시간으로 양방향 통신을 하는 방식.

Client에서 server로 요청을 보내고 응답을 받을 뿐만 아니라, server에서도 client로 요청을 보내고 받을 수 있기에 양방향 통신이다. 또한, 연결 상태가 유지가 되기에 stateful한 통신 방식이다.

Socket 통신의 특징

  • TCP/IP protocol을 기반으로 맺어진 network 연결 방식이다.
  • Client와 server가 특정 port를 통해 연결을 성립하고 있어서, 실시간으로 양방향 통신을 한다.
  • 계속 연결을 유지하는 연결 지향형 방식이기에, 실시간으로 통신하는 경우에 주로 사용된다.
  • 계속해서 connection을 유지하고 있기에 한번 요청을 주고 받고 하는 http 통신 보다는 많은 resource가 사용된다.

마지막으로 http programming과 socket programming을 비교하며 마무리하도록 하겠다.

Http : 단방향 통신 / stateless / 기본적인 client - server 경우
Socket : 양방향 통신 / stateful / 실시간으로 data 제공하는 경우

📖 출처 :

My opinion

이번 posting에서는 http와 socket 통신에 대해서 알아보았다. http programming만 있는 줄 알았는데 socket을 통해서 실시간 통신이 된다는 것에 놀라웠다. 일반적으로 실시간 streaming 영상을 보고 채팅을 하고 하는데 socket 통신이 사용되고 있었다는 점에서 흥미롭게 다가왔다.
오늘도 하나 알아간다.

profile
운동하는 개발자

0개의 댓글