본문 바로가기
Programming/etc

HTTP 통신, 쿠키, 세션 이란?

by 제타 2018. 6. 11.
반응형

HTTP 프로토콜이란?

웹 브라우저와 웹 서버는 HTTP 프로토콜을 사용하여 통신한다.

HTTP통신은 브라우저에서 서버로 요청(request)하고, 서버에서 브라우저로 응답(response)할 때의 규칙이라고 보면 된다.


예를 들어서 웹 브라우저에서 구글 메인 url을 치면 웹 브라우저는 그 주소의 웹 서버를 찾는다.

그리고 웹 서버가 발견되면 index.html이라는 파일을 보고 보겠다는 요청을 보내면 구글에서는 index.html의 내용을 응답해준다. 


즉 HTTP 통신은 요청과 응답이고 특이 사항이 있다면 stateless 통신이다.

서버에서 클라이언트의 상태를 저장하고 있지 않기 때문에 같은 요청을 받아도 같은 응답을 주는 것이다.


쿠키

웹 브라우저에 쿠키라는 구조가 추가되고 일시적으로 상태를 저장할 수 있게 되었다.

즉 내가 어떤 웹 브라우저에 들어갔을 때 내 컴퓨터가 일시적으로 그 사이트의 데이터를 저장하고 있는 것이다.

1개의 쿠키에 저장할 수 있는 데이터의 크기는 4096바이트, 즉 4K로 제한된다. 그리고 쿠키는 HTTP 통신 헤더를 통해 읽고 쓸 수 있다.


예를 들면

방문자와 웹 사이트 간의 요청과 응답이 이루어질 때를 보자.

1. 첫번째 방문 : 방문자 -> 웹사이트에 접속하면 웹 사이트에서 방문자에게 쿠키에 변수 i=1을 담아달라고 요청한다.

2. 두번째 방문 : 방문자 -> 웹사이트에 두번째 접속하면 방문자가 현재 쿠키에 변수 i=1이 있다고 알려주면 웹 사이트가 다시 그럼 i=2로 바꿔달라고 한다.

3. 세번째 방문 : 방문자 -> 웹사이트에 세번째 접속하면 방문자가 현재 쿠키에 변수 i=2가 있다고 알려주면 웹 사이트가 다시 그럼 i=3으로 바꿔달라고한다.


이 처럼 쿠키는 HTTP 헤더를 기반으로 이루어져서 방문자가 데이터를 원하는 대로 변경할 수 있다. 그럼 비밀번호 같은 중요한 정보는 공공장소에서 웹브라우저를 사용하는 사용자 측에서 갖고 있으면 안될 것이다.


세션

그래서 세션이 나왔다. 세션도 쿠키처럼 데이터를 저장하는 것은 같지만 세션은 쿠키에 방문자의 고유 id만 저장하고 실제 모든 데이터는 웹 서버에 저장하는 구조이다. 서버에 데이터를 저장하니까 쿠키와는 다르게 저장할 수 있는 데이터에 제한도 없다.


HTTP 통신은 stateless 기법이지만 세션을 이용하면 쿠키에 기록되어 있는 고유 id를 사용해서 상태를 변수로 확인할 수 있다. 만약 이런 상태에서 통신을 계속 하게 된다면 statefull 통신을 구현할 수 있다.



정리하면

1. http 통신은 stateless하게 응답과 요청으로 이루어지는 통신한다.

2. 쿠키는 데이터를 사용자 측에 저장한다.

3. 세션은 데이터를 서버에 저장한다.



반응형