HTTP란 ? HTML 문서와 같은 리소스들을 가져올 수 있도록 해주는 프로토콜
(프로토콜 : 네트워크 통신하기 위해 정해둔 약속)
HTTP는 웹에서 이루어지는 모든 데이터 교환의 기초이며, 클라이언트-서버 프로토콜이기도 하고, 애플리케이션 계층의 프로토콜임.
HTML : 문서 작성 언어, WWW를 구성하는 기술
HTTP : 문서 전송 프로토콜
URL : 문서의 위치를 지정하는 방법
클라이언트 : 요청을 보내는 쪽, 일반적으로 웹 관점에서 브라우저
서버 : 요청을 받는 쪽, 일반적으로 데이터를 보내주는 원격지의 컴퓨터
서버에 특정 데이터를 요청
- GET : 존재하는 자원에 대한 요청
- POST : 새로운 자원을 생성
- PUT : 존재하는 자원에 대한 변경
- DELETE : 존재하는 자원에 대한 삭제
클라이언트에서 요청을 하면, 그 요청은 하나의 객체이고, 사용자 에이전트(또는 프록시)에 의해 전송됨. 각각의 개별적인 요청은 서버로 보내지고, 서버는 요청을 처리하고 응답을 제공함. 이 요청과 응답 사이에는 여러 개체들이 있는데, 예를 들면 게이트웨이 또는 캐시 역할을 하는 프록시 등이 있음.
Client - Gateway(or Proxy) - Server
사용자 에이전트는 사용자를 대신하여 동작하는 모든 도구이며 주로 브라우저에 의해 수행됨. 브라우저는 항상 요청을 보내는 개체이며 결코 서버가 될 수 없음.
통신 채널의 반대편에는 클라이언트에 의한 요청에 대한 문서를 제공하는 서버가 존재함. 서버는 사실상 논리적으로 단일 기계임. 서버는 반드시 단일 머신일 필요는 없지만, 여러 개의 서버를 동일한 머신 위에서 호스팅 할 수는 있움. HTTP/1.1과 Host 헤더를 이용하여, 동일한 IP 주소를 공유할 수도 있음.
프록시는 클라이언트와 서버 사이에서 HTTP 메시지를 이어 받고 전달하는 역할
애플리케이션 계층에서 동작함
HTTP의 connectionless, stateless 특징을 보완하기 위해 쿠키&세션 사용
쿠키와 세션은 가장 유명한 예시로는 id,pw 저장이 있다.
쿠키 없을 때 : 클라이언트가 웹사이트에 접근하여 페이지를 요청한다. 웹 서버에서는 접근한 클라이언트의 Request-Header 필드인 쿠키를 확인하여 세션id가 있는지 확인한다. 세션id가 없으면 만들어서 클라이언트에게 돌려준다. (HTTP 화면 돌려줄때 함께 돌려줌) 클라이언트는 받은 세션id를 쿠키에 저장한다.
쿠키 있을 때 : 웹사이트 재방문 시 클라이언트가 가지고 있는 쿠키(세션id)를 페이지 요청할 때 웹 서버에게 요청과 함께 전송한다. 세션id가 있으므로 권한을 가지고 있는 것이다.
공통점
차이점
쿠키 | 세션 | |
---|---|---|
저장위치 | 클라이언트 | 서버 |
저장형식 | text | Object |
용량제한 | 도메인당 20개, 1쿠키당 4KB | 제한 없음 |
만료시점 | 쿠키 저장 시 설정(설정 없으면 브라우저 종료 시 만료) | 알 수 없음(클라이언트가 로그아웃하거나, 설정한 시간동안 반응이 없으면 무효화되기 때문) |
속도 | 빠름 | 느림 |
보안 | 취약 | 보통 |