HTTP 통신과 Socket 통신

0

개념정리

목록 보기
11/33

HTTP 통신?

  • HTTP(HyperText Transfer Protocol)는 HTML 파일을 전송하는 프로토콜이라는 의미다.
  • 웹브라우저에서 통신이 일어나며, 초기에는 HTML파일을 전송하려는 목적으로 만들어졌으나 현재는 JSON, Image 파일 등 또한 전송한다.

통신 방식

  • HTTP 통신은 클라이언트에서 서버로 요청을 보내고, 서버가 응답하는 방식으로 통신이 이뤄진다.
    응답에는 클라리언트의 요청에 따른 결과를 반환한다.

    클라이언트의 요청이 있을 때 서버가 응답하는 방식이다. 단방향 통신

  • 서버의 응답에는 응답코드가 같이 전송되며, 사용자는 응답코드 & 메시지 응답으로부터 오는 메세지 body를 통해 요청 값을 전달 받는다.
  • 초기에는 서버를 응답한 후 클라이언트의 connection을 바로 끊어버렸으나,
    최근에는 성능상의 이유(connection을 맺고 끊는 비용이 비쌈)로 Keep Alive 옵션을 통해 일정기간동안 클라이언트와 connection을 유지하는 방식으로 통신이 가능해졌다.

HTTP 통신 정리

  • HTTP 통신은 클라이언트의 요청이 있을 때 서버가 응답하는 단방향 통신이다.
  • JSON, Image, HTML 파일 등 다양한 파일을 전송받을 수 있다.
  • 응답을 받은 후 connection이 끊어지는 것이 기본 동작이지만, 성능상으로 필요하다면 Keep Alive 옵션을 주어 일정시간동안 connection을 유지하는 것이 가능하다.

Socket 통신

: Socket(소켓)이란, 두 프로그램이 서로 데이터를 주고 받을 수 있도록 양쪽(두 프로그램 모두)에 생성되는 통신 단자이다.

  • 소켓통신이란 서버와 클라이언트 양방향 연결이 이뤄지는 통신으로, 클라이언트도 서버로 요청을 보낼 수 있고 서버도 클라이언트로 요청을 보낼 수 있는 통신이다.

    클라이언트와 서버 양쪽에서 서로에게 데이터 전달을 하는 방식의 양방향 통신

  • 보통 스트리밍이나 실시간 채팅 등 실시간으로 데이터를 주고받아야 하는 경우 connection을 자주 맺고 끊는 HTTP 통신보다 소켓통신이 적합하다. 소켓 통신은 계속해서 connection을 들고있기 때문에 HTTP통신에 비해 많은 리소스가 소모된다.

Socket 통신 정리

  • 자주 데이터를 주고 받는 환경이 아닌 경우, HTTP 통신을 통해 받는것이 유리하다.
  • 자주 주고받으면 소켓통신이 유리하다.
  • HTTP 통신은 사용자가 서버에 요청을 보내는 단방향 통신인 반면, 소켓은 양방향 통신이다.

💡 조금 더 깊이 들어가보면, HTTP는 결국 소켓통신이다.

  • 소켓은 IP와 Port Number을 사용해서 만들어진 통신의 양 끝단을 의미하는데, ip와 port number을 활용하는 TCP 레이어 위에 올라간 HTTP 또한 같은 방식을 사용한다.
    하지만 둘을 구분하는 이유는, 한 쪽에서만 요청에 대한 응답을 하는 웹 통신의 특성상 HTTP가 하나의 중요한 프로토콜로 구분됐기 때문이다. http:// 로 시작되는 프로토콜은 내부 구현에서는 소켓을 사용하지만 별도 프로토콜로 구분한 이유가 이것이다.
    즉, HTTP 통신은 소켓통신의 일종이지만, 소켓통신이 HTTP 통신은 아니다.

출처

profile
백엔드를 공부하고 있습니다.

0개의 댓글