(TIL 38일차) 소켓 통신

빡기·2020년 3월 9일
2

TIL(Today I Learned)

목록 보기
34/43

Socket 통신 vs HTTP 통신 차이점

HTTP

Client의 요청(Request)이 있을 때만 서버가 응답(Response)하여 해당 정보를 전송하고 곧바로 연결을 종료하는 방식

  • Http통신은 Client의 요청이 있을 때만 Server가 응답하여 처리를 한 후에 연결을 끊는 방식
  • Client가 요청을 보내는 경우에만 Server가 응답하는 단방향적 통신으로, Server가 Client로 요청을 보낼수는 없음

예시(블로그에 들어오는 상황)

블로그 링크를 클릭한 순간에 Client(웹)는 Server(웹서버)로 이 글에 대한 내용을 보내달라고 요청 => 블로그 글에 대한 내용들을 받은 후에는 바로 연결 종료(내용을 기다리는 시간과 함께 연결하는 시간이 걸림)

  • 실시간 연결이 아닌, 필요한 경우에만 Server로 접근하는 콘텐츠 위주의 데이터를 사용할 때 용이
  • 만약 게시물에 대한 내용을 요청하기 위해 실시간으로 연결을 유지하는 Socket통신을 사용하게 되면, 게시물을 받은 후에도 계속 통신을 위한 연결이 성립되어 있어 부하 발생

HTTP의 특징

  • Client가 요청을 보내는 경우에만 Server가 응답하는 단방향 통신
  • Server로부터 응답을 받은 후에는 연결이 바로 종료
  • 실시간 연결이 아니고, 필요한 경우에만 Server로 요청을 보내는 상황에 유용
  • 요청을 보내 Server의 응답을 기다리는 어플리케이션(Android or Ios)의 개발에 주로 사용

Socket 통신

Server와 Client가 특정 Port를 통해 실시간으로 양방향 통신을 하는 방식

  • Socket통신은 Http 통신과 달리 Server와 Client가 특정 Port를 통해 연결을 성립하고 있어 실시간으로 양방향 통신을 하는 방식
  • Client만 필요한 경우에 요청을 보내는 Http 통신과 달리 Socket 통신은 Server 역시 Client로 요청을 보낼 수 있으며, 계속 연결을 유지하는 연결지향형 통신이기 때문에 실시간 통신이 필요한 경우에 자주 사용

예시(실시간 Streaming 중계, 실시간 채팅과 같이 즉각적으로 정보를 주고받는 경우에 사용)

실시간 동영상 Streaming 서비스를 Http 통신으로 구현하였다고 가정
=> 사용자가 서버로 동영상을 요청하기 위해서는 동영상이 종료되는 순간까지 계속해서 Http 통신을 보내야 하고 이러한 구조는 계속 연결을 요청하기 때문에 부하 발생

  • Server와 Client가 계속 연결을 유지하는 양방향 통신
  • Server와 Client가 실시간으로 데이터를 주고받는 상황이 필요한 경우에 사용
  • 실시간 동영상 Streaming이나 온라인 게임 등과 같은 경우에 자주 사용

profile
Front End. Dev

0개의 댓글