🔒
HTTP와 웹 구조
June 01, 2024
HTTP and Web structure
웹은 HTTP를 이용해서 통신하는 클라이언트와 서버로 구성됨
- 서버: 대ㅔ이터를 관리하고 클라이언트의 요청을 받아 처리하고 그 결과를 배포하는 시스템
- 웹 서버: 정적인 페이지를 서비스함
- 웹 어플리케이션 서버: 클라이언트 요청에 데이터를 동적으로 처리하여 서비스를 지원함
- 클라이언트: 네트워크를 통해 필요한 서비스를 요청하는 시스템
웹 프레임워크 구조
- 정적 요청: 로컬 저장소에서 파일을 찾아서 응답
- 동적 요청: 동적 요청 처리를 위한 웹 애플리케이션 호출
- 서블릿(servlet): 웹 서비스를 위한 인터페이스, HTTP 요청을 처리할 수 있는 규격
쿠키와 세션
HTTP 프로토콜의 두 가지 특징
- 비연결지향(Connectionless)
- HTTP는 한 번의 TCP 연결에서 하나의 요청과 응답을 처리하고 연결을 종료함
- 클라이언트의 정보가 지속적으로 서버에서 관리되지 않음
- 무상태 프로토콜(Stateless)
- 연결을 종료하는 순간 클라이언트와 서버의 통신이 끝남, 상태 정보 유지하지 않음
쿠키
- 쿠키는 HTTP 통신시 사용자 정보를 유지하기 위해 서버에서 생성하여 응답 헤더에 붙여 클라이언트에 전송하는 정보이다.
- 쿠키 정보는 해당 사이트에 요청을 전송할 때 이름 = 값 형식으로 요청 헤더에 포함되어 서버에 전달된다.
- 쿠키의 제약 사항은 브라우저당 최대 300개, 각 호스트마다 최대 20개 까지 사용가능하며, 크기는 최대 4KB이다.
세션 쿠키 | 영속 쿠키 |
---|---|
브라우저가 열려있는 동안 유효한 쿠키, 서버를 이용하는 동안 사용자 정보를 유지하기 위해 사용 | 하드디스크에 유효기간 동안 저장되는 쿠키, 사이트 재 방문 시 사용자 정보를 기억하기 위해 주로 사용 |
대표적인 쿠키 옵션
- Domain: 브라우저가 쿠키값을 전송할 서버의 도메인 지정
- Path: 브라우저가 쿠키값을 전송할 URL 지정
- Expires: 쿠키의 유효 기간 설정
- Secure: SSL 통신채널 연결시만 쿠키를 전송하도록 설정
- HttpOnly: 자바 스크립트에서 쿠키값을 읽어가지 못하도록 설정
세션
- 클라이언트와 서버의 논리적인 연결, 무상태 프로토콜인 HTTP를 사용하는 경우, 서버는 사용자 정보를 유지하기 위해 서버의 메모리에 각 브라우저별로 세션 영역을 할당하고 각각의 영역은 세션 ID로 구분, 이것을 세션 토큰이라 부른다.
- 일정 시간 동안 같은 클라이언트(브라우저)로부터 송신되는 일련의 request를 하나의 상태로 인식하고 그 상태를 유지하는 기술, 클라이언트가 웹 브라우저를 통해 웹 서버에 접속한 이후로 브라우저를 종료할 때 까지 연결이 유지되는 상태
세션 ID를 클라이언트에게 전달하는 방법
- HTML 히튼 필드를 이용하는 방법
- HTML의 히든 필드로 클라이언트에 전달
- 웹 페이지에서 보여지지 않음
- 소스 보기를 통해 쉽게 ID값 추출 가능
- URL rewriting을 이용하는 방법
- 클라이언트 웹 브라우저가 쿠키 사용을 제한한 경우에 사용하는 방법, URL rewriting을 사용하여 ID를 전달한다.
- 웹 서버에서 서비스되는 페이지의 모든 URL에 세션 ID를 request parameter로 붙여서 사용
-
localhost:8080/…/jsessionid=1284AH8AJDAJD78123UASD28D7
- 쿠키를 이용하는 방법
- 클라이언트 웹 브라우저가 쿠키 사용을 허용하는 경우 편리하게 사용됨
세션의 장점 | 세션의 단점 |
---|---|
정보를 서버에서 관리하기 때문에 쿠키보다 보안에 우수 | 서버 부하 증가 |