클라이언트와 서버가 서로 소통할 때 지켜야할 규약
hypertext transfer protocol의 약자로, 초기에는 HTML 등 링크를 통해 연결 할 수 있는 문서 (하이퍼텍스트)를 전송하는 프로토콜로 시작하였다.
다만, 현재는 모든 형태의 데이터를 전송하는 프로토콜로 사용중이며, HTML 뿐만 아니라, TEXT, image, 음성, 영상, 파일, JSON, XML 형식의 데이터를 모두 전송할 수 있다. 또한, 서버간 통신을 할 때도 대부분 http 프로토콜로 연결하고 있다.

클라이언트가 서버에게 request 요청을 보내면 서버는 클라이언트에게 request에 대한 response를 보내고 접속을 종료한다.
클라이언트는 서버에 요청을 보내고 응답을 대기한다.
서버가 요청에 대한 결과를 만들어서 응답한다.
통신이 끝나면 인증에 쓰이는 상태를 유지하지 않는다.
비연결성(Connectionless)으로 통신연결을 유지하지 않아 자원의 낭비가 줄어들지만 통신을 할때마다 TCP/IP연결을 서로 해야되기 때문에 통신 시간이 걸린다는 단점이 있다.
이러한 로그인과 같은 상태를 유지하는데 한계를 보안하기 위해 브라우저의 쿠키 또는
서버가 클라이언트에게 전송하는 작은 데이터 파일이다.
이름, 값, 도메인정보, 경로정보, 만료 일자, 시간 등의 정보를 담고 있다.
장점 : 모든 브라우저에서 지원한다.
단점 : 매번 서버에 전송이 되고 저장용량이 작고 보안에 취약하다.
이런 쿠키의 단점을 보완하기 위해 html5부터 웹스토리지가 등장했다.
쿠키와 기능은 유사하나, 클라이언트에 정보를 저장할 뿐 서버로 전송되지 않는다.
key-value 쌍의 값으로 데이터를 저장하는 특징이 있다.
웹스토리지는 지속성에 따라 로컬 스토리지, 세션 스토리지로 구분된다.
브라우저 자체에 반영구적으로 데이터를 저장하고, 브라우저를 종료해도 데이터가 유지된다.
탭 윈도우 단위로 데이터를 저장하고, 탭 윈도우가 닫힐때 데이터가 삭제된다.
로컬스토리지 : 자동로그인
세션스토리지 : 입력 폼 정보, 비로그인 장바구니
쿠키 : 다시보기 팝업창