소켓
이란 두 프로그램이 서로 데이터를 주고 받을 수 양쪽(두 프로그램 모두)에 생성되는 통신 단자이다.
그럼 소켓 통신
이란 서버와 클라이언트 양방향 연결이 이루어지는 통신으로,
보통 스트리밍이나 실시간 채팅 등 실시간으로 데이터를 주고 받아야 하는 경우 Connection을 자주 맺고 끊는 HTTP 통신보다 소켓 통신이 적합하다. 소켓 통신은 계속해서 Connection을 들고 있기 때문에 HTTP 통신에 비해 많은 리소스가 소모된다.
HTTP란 HyperText Transfer Protocol
의 약자로 HTML 파일을 전송하는 프로토콜이라는 의미를 가진다.
웹브라우저에서 통신이 일어나며, 초기에는 HTML 파일을 전송하려는 목적으로 만들어졌으나 현재는 JSON, Image 파일 등 또한 전송 가능하다.
클라이언트의 요청이 있을 때만 서버가 응답하는 방식 단방향 통신이다.
서버에서 응답을 받고 난 후에는 connection이 끓어진다.
초기에는 서버는 응답한 후 클라이언트(사용자)의 Connection을 곧바로 끊어버렸으나, 최근에는 성능상의 이유(Connection을 맺고 끊는 비용이 비싸다)로
Keep Alive
옵션을 통해 일정 기간 동안 클라이언트와 Connection을 유지하는 방식으로 통신이 가능해졌다.
Http 통신의 특징 중 하나인 무상태(stateless
) 특성은 Thread safe하게 할 수 있다는 것도 알아두면 좋다. 스레드 안전성은 주로 상태에 대한 것이기 때문이다.
HTTP의 Request 메시지와 Response 메시지의 기본 구조이다.
요청 메시지에는 HTTP 메서드(GET, POST, PUT, DELETE 등)와 요청대상(path), HTTP 버전이 들어가있다.
응답 메시지에는 HTTP 버전과 HTTP 상태 코드(200, 404, 501 등등), 코드 설명 글이 들어가져있다.
field-name(필드명): field-value(필드 값) 을 적는다.EX) HOST: www.naver.com
HTTP 전송에 필요한 모든 부가정보가 다 들어가져 있다.
실제 전송할 데이터가 들어가져있다.
HTML, JSON, XML, 이미지, 파일 등등 거읨 모든 데이터를 넣을수 있다.
✅ Http통신 4가지 특징
1) 클라이언트 - 서버 구조로 동작한다.
2)무상태(stateless) 프로토콜
,비연결성
3)HTTP 메세지(시작라인/헤더/바디)
를 통해서 통신한다.
4) 단순하고, 확장 가능하다.
자주 데이터를 주고 받는 환경이 아닌 경우 HTTP 통신을 통해 받는 것이 유리하다.
자주 데이터를 주고 받아야 하는 환경에서는 소켓 통신이 유리하다.
HTTP 통신은 사용자가 서버에 요청을 보내는 단방향 통신인 반면, 소켓 통신은 양방향 통신이다.