1. Web

웹이란 World Wide Web의 줄임말로 www나 w3라고 부르기도 한다. 인터넷에 연결된 사용자들이 서로의 정보를 공유할 수 있는 공간이라고 볼 수 있다. 쉽게 많은 정보들이 서로 얽혀있는 정보의 그물망이라고 볼 수 있다.



웹은 인터넷으로 많이 알려져있는데, 사실 인터넷에서 제공하는 여러가지 서비스 중 가장 많이 이용하는 하나이다. 웹 서비스란 인터넷에 연결된 컴퓨터를 이용하면 인터넷에 존재하는 모든 문서에 대해 검색이 가능하게 해주는 서비스이다. 웹은 HTTP라는 프로토콜(통신을 하는데 있어서 어떻게 할지에 대한 약속, 규약)을 기반으로 작동한다.

2. HTTP

HTTP는 Hyper Text Transfer Protocol의 약자로 직역하면 하이퍼텍스트 문서를 교환하기 위해 사용되는 통신 규약이다. 쉽게 말해 인터넷에서 데이터를 주고 받을 수 있는 프로토콜이다.
예를 들어 A란 컴퓨터와 B란 컴퓨터가 있다고 하자. A가 B에게 이미지 파일이 포함된 데이터를 보내려고 하는데 B 컴퓨터는 A가 텍스트만 포함된 파일인지, 이미지가 포함되어 있는지 알 수 없어 받을 수가 없다. 그러므로 데이터를 주고 받기 위해 HTTP라는 약속을 한다.
웹에서는 데이터를 요청하는 것을 클라이언트, 거기에 대해 응답하는 것을 서버라고 한다. 이러한 구조를 클라이언트/서버 구조라고 한다. 일반적으로 웹에서 클라이언트는 브라우저, 서버는 원격지(source)의 컴퓨터다.

* HTTP 특징

HTTP는 Connectionless(비연결성) 방식으로 작동된다. 통신을 하는 내내 서버와 클라이언트가 연결이 되어있는 것이 아닌 클라이언트가 서버에게 요청(Request)를 하면 서버가 응답(Response)을 보내준 뒤 접속을 끊는다.

1) 장점

클라이언트와 서버가 항상 연결이 되어있는 것이 아닌 필요할 때만 연결하는 비연결성이므로 쓸데없는 리소스 낭비를 줄일 수 있다.

2) 단점

요청할 때만 연결이 되기 때문에 클라이언트의 상태를 알 수가 없다. 즉, 서버는 클라이언트를 구분할 수가 없는데 이를 HTTP의 특징인 무상태(stateless)라고 한다. 또한 클라이언트가 서버에 요청을 할 때마다 연결 및 해제를 반복하기 때문에 오버헤드가 발생할 수 있다.
그렇다면 웹에서 서버는 클라이언트를 구분할 수 없는데 어떻게 클라이언트가 로그인을 하면 그 상태를 유지할 수 있을까? 위와 같다면 매번 새로운 인증을 해야하는데 말이다. 이를 보완하기 위해 쿠키세션이 있다.

1) 쿠키

쿠키란 서버에서 사용자의 컴퓨터에 저장하는 정보파일이다. Key와 Value로 구성되어 있고 String 형태로 이루어져 있다. 사용자가 별도의 요청을 하지 않아도 브라우저는 요청(Request)시 Request Header를 넣어 자동으로 서버에 전송한다. 클라이언트마다 저장되는 쿠키는 다르다.

* 쿠키 특징
- key, value, 만료일, 경로 정보로 구성되어 있다.
- 브라우저가 종료되어도 만료기간이 남아있다면 클라이언트에 계속 저장되어 있다.
- 클라이언트에 총 300개의 쿠키 저장 가능

2) 세션

세션이란 클라이언트가 웹 서버에 접속해 있는 상태를 하나의 단위로 보고 그것을 세션이라고 한다. 웹 서버에 클라이언트에 대한 정보를 저장하고 서버에서 클라이언트를 구분하기 위해 클라이언트마다 ID를 부여한다. 이를 세션이라고 한다.

* 세션 동작순서
  1. 클라이언트가 페이지를 요청
  2. 서버는 접근한 클라이언트가 session-id를 전송했는지 확인
  3. session-id가 존재하지 않는다면 서버는 session-id를 생성하여 클라이언트에게 돌려준다.
  4. 위 과정에서 생성한 session-id를 서버에 저장
  5. 클라이언트는 해당 서버에 재접속 시, session-id 값을 서버에 전달하여 구별 가능
* 세션 특징
- 브라우저를 닫거나, 서버에서 세션을 삭제했을 때 삭제가 된다. 따라서 쿠키보다 보안이 좋음
- 각 클라이언트 고유 세션 ID를 부여받는다.
- 저장 데이터에 제한이 없다.