HTTP는 HyperText Transfer Protocol의 약자로 HTML 파일을 전송하는 프로토콜이라는 의미를 가진다. 웹브라우저에서 통신이 일어나며, 초기에는 HTML 파일을 전송하려는 목적으로 만들어졌으나 현재는 JSON, Image 파일 등 또한 전송한다.
HTTP 통신은 클라이언트 측에서 요청(Request)을 보내면, 서버 측에서 응답(Response)하는 방식의 단방향 통신이다. 즉, 클라이언트 측에서 먼저 요청을 해야 성립되는 통신이다.
HTTP 통신의 특징으로는, 먼저 언급된 (1) 클라이언트-서버 통신 구조가 있고 (2) 무상태 프로토콜(Stateless) 지향, (3) 비연결성, (4) HTTP 메시지를 통해 통신 정도의 4가지 특징이 있다.
Socket이란 두 프로그램이 서로 데이터를 주고 받을 수 있도록 양쪽에 생성되는 통신 단자이다. 즉, Socket 통신은 서버와 클라이언트 간에 양방향 연결이 이루어지는 통신으로, 클라이언트에서 서버로 요청을 보낼 수 있고, 서버도 클라이언트로 요청을 보낼 수 있는 통신이다.
그렇기에 Socket 통신은 HTTP 통신과 다르게, 클라이언트와 서버 양쪽에서 서로에게 데이터 전달을 하는 방식의 양방향 통신을 지원한다.
보통 동영상 스트리밍이나 실시간 채팅 등 실시간으로 데이터를 주고 받아야 하는 경우 Connection을 자주 맺고 끊는 HTTP 통신(비연결성 특징)보다 소켓 통신이 적합하다. 소켓 통신은 계속해서 Connection을 들고 있기 때문에 HTTP 통신에 비해 많은 리소스가 소모된다.
HTTP 통신은 결국 Socket 통신이다. 다만, 서버쪽에서만 요청에 대한 응답을 하는 웹 통신의 특성 상 HTTP가 하나의 중요한 프로토콜로 구분되기 위해서 나뉘었다. http:// 로 시작되는 프로토콜은 내부 구현에서는 소켓을 사용하지만 별도 프로토콜로 구분한 이유가 이것이다. HTTP 통신이 Socket 통신에 속하는 것이기 때문에, 그 역은 성립하지 않는다. (Socket 통신은 HTTP 통신이다. X)