HTTP란?
통신규약, 웹서비스에서 클라이언트와 서버간에 정보를 요청하고 응답받기 위한 프로토콜
특징
☑️ 클라이언트 - 서버 구조
클라이언트의 요청이 있을 때만 서버에서 요청에 따른 응답을 리턴
클라이언트에서 서버로 요청하는 단방향 통신
💡 단방향 통신: 데이터의 흐름이 한 방향으로만 한정되어 있는 통신방식이다. 양방향식의 경우에는 가정에서의 전화와 같이 송신과 수신이 가능하지만, 단방향통신 방식은 일방적인 송신 또는 수신만이 가능하다.
ex): 텔레비전 방송, 라디오( 데이터를 수신만 할 수 있고, TV나 라디오를 통해 데이터를 보낼 수 없음.
☑️ 무상태(Stateless) 프로토콜 지향
서버가 클라이언트의 연결/상태 정보를 보존하지 않음
-> 클라이언트가 서버에 이전 요청과 같은 데이터를 원해도 동일한 요청을 다시 해야함.
ex) 로그인 -> 내 게시판 -> 재로그인 -> 내 글
장점: 클라이언트의 요청에 어떤 서버가 응답해도 상관이 없기 때문에 서버 확장성이 높음. (클라이언트가 이전에 자신의 요청 정보를 저장해놓다가 해당 정보를 다시 보내주므로)
단점: 클라이언트가 많은 양의 추가 데이터를 전송해야한다.
개선점: 로그인과 같은 상태정보를 브라우저 쿠키나 세션 등을 통해 상태 유지시킨다.
☑️ 비연결성
클라이언트가 서버에 요청하고 응답을 받으면 TCP/IP 연결을 끊기 때문에 연결을 유지하지않음
-> 서버 리소스를 효율적으로 관리하고, 수많은 클라이언트의 요청도 대응할 수 있다.
☑️ HTTP 메서드 사용
HTTP 메서드를 사용하여 클라이언트가 버에게 요청의 목적이나 종류를 알림.
주요 메서드
GET : 리소스 조회
-> URL 형식으로 웹서버 측 리소스 요청
POST : 요청 데이터 처리, 주로 데이터 등록에 사용
-> 요청 데이터를 HTTP 바디에 담아 웹서버로 전송
PUT : 리소스 갱신, 해당 리소스가 없으면 생성
-> POST처럼 정보를 서버로 제출하는 것으로, 형식은 동일하나 갱신 위주
PATCH : PUT과 마찬가지로 리소스 수정할 때 사용, PATCH는 리소스를 일부분만 변경 가능
DELETE : 리소스 삭제
소켓(Socket)이란?
네트워크상에서 동작하는 프로그램 간 통신의 종착점(EndPoint), 접속의 끝부분
💡 EndPoint: IP주소와 Port 번호의 조합으로 이뤄진 최종 목적지(PC, 핸드폰 등의 접속 연결부)를 나타냄.
특징
서버와 클라이언트 양방향 연결이 이뤄지는 통신이다.
-> 클라이언트도 서버로 요청을 보낼 수 있고, 서버도 클라이언트로 요청을 보낼 수 있다.
서버와 클라이언트가 계속 연결을 유지한다.
정리
클라이언트와 서버 양쪽에서 서로에게 데이터 전달을 하는 방식인 양방향 통신
스트리밍이나 실시간 채팅 등 실시간으로 데이터를 주고 받아야하는 상황에서 주로 사용
Connection을 자주 맺고 끊는 HTTP 통신보다 실시간으로 데이터를 송·수신할 때 유용
but, 그만큼 Connection을 계속 들고 있어야 하기 때문에 리소스 소모가 있다.