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 통신은 사용자가 서버에 요청을 보내는 단방향 통신인 반면, 소켓은 양방향 통신이다.
출처