프로그램을 공부하면서 HTTP프로토콜에 대해서 대강 공부를 하였지만, 머릿속에 정리는 되지 않아서 다시 공부하게 되었다.
HTTP프로토콜이란
-인터넷상에서 데이터를 주고 받기 위한 서버/클라이언트 모델을 따르는 것
-애플리케이션 레벨의 프로토콜로 TCP/IP위에서 작동한다. (위의 자료를 보면 TCP/IP는 3계층과 4계층에서 작동하는 것 같다.)
-HTTP는 어떤 종류의 데이터든지 전송할 수 있도록 설계되어 있음
-HTTP로 보낼 수 있는 데이터는 HTML문서,이미지,동영상 오디오 텍스트 문서등 여러 종류가 있다.
-하이퍼텍스트 기반으로(Hypertext) 데이터를 전송하겠다(Transfer) = 링크기반으로 데이터에 접속한다는 의미이다.
작동방식
HTTP는 서버/클라이언트 모델을 따른다.
클라이언트에서 요청(request)을 보내면 서버에서 요청받은사항을 처리하고 응답(response)을 한다.
클라이언트는
서버에서 요청하는 클라이언트 소프트웨어(IE,Crome,Firefox,Safari ...) 가 설치된 컴퓨터를 이용한다.
클라이언트는 URI를 이용하여 서버에 접속하고,데이터를 요청할 수 있다.
서버는
클라이언트의 요청을 받아서, 요청을 해석하고 응답을 하는 소프트웨어가 설치된 컴퓨터(Apache,nginx 등...)이 서버 소프트웨어이다.
웹서버는 보통 표준포트인 80번 포트로 서비스 한다.
위의 작동방식은 이론적인 내용이고 실제적으로 어떤방식으로 작동하는지에 대해서 알아보았다.
HTTP는 Connectionless 방식으로 작동한다고 한다.
서버에 연결하고, 요청해서 응답을 받으면 연결을 끊어버린다.
하나의 자원<------------------->하나의 연결
장점 :
-불특정 다수를 대상으로 하는 서비스에 적합한 방식이다.
-수십만명이 웹 서비스를 사용하더라도 접속유지는 최소한으로 할 수 있기 때문에, 더 많은 유저의 요청을 처리할 수 있다.
단점 :
-연결을 끊어버리기 때문에, 클라이언트의 이전 상태를 알 수가 없다.
-이러한 HTTP의 특징을 stateless라고 하는데, Connectionless 로 부터 파생되는 특징이라고 할 수 있다.
-클라이언트의 이전 상태 정보를 알 수 없게 되면, 웹 서비스를 하는데 당장에 문제가 생긴다.
-클라이언트가 과거에 로그인을 성공하더라도 로그 정보를 유지할 수가 없다. HTTP는 cookie를 이용해서 이 문제를 해결하고 있다
쿠키(cookie)는 클라이언트와 서버의 상태정보를 담고 있는 정보조각인데,
클라이언트가 로그인에 성공을 하면
서버는 로그인 정보를 자신의 데이터베이스에 저장하고, 동일한 값을 쿠키(cookie)형태로 클라이언트에 보낸다.
Session 과 Cookie 사용 이유
- 현재 우리가 인터넷에서 사용하고 있는 HTTP프로토콜은 연결 지향적인 성격을 버렸다.
그래서 새로운 페이지를 요청할 때마다 새로운 접속이 이루어지고, 이전 페이지와 현재 페이지간의 관계가 지속되지 않는다. 이에 따라 HTTP 프로토콜을 이용하게 되는 웹사이트에서는 웹페이지에 특정 방문자가 머무르고 있는 동안 그 방문자의 상태를 지속시키기 위해 쿠키와 세션을 이용한다.
쿠키로 값을 저장하는 방식 말고도 Session으로도 저장하는 방식이 있다. 무슨차이가 있는지 알아볼 필요가 있다고 생각해서 더 알아 보았다.
Session
- 특정 웹사이트에서 사용자가 머무르는 기간 또는 한 명의 사용자의 한번의 방문을 의미한다.
- Session에 관련된 데이터는 Server에 저장된다.
- 웹 브라우저의 캐시에 저장되어 브라우저가 닫히거나 서버에서 삭제시 사라진다.
- Cookie에 비해 보안성이 좋다.
Cookie
- 사용자 정보를 유지할 수 없다는 HTTP의 한계를 극복할 수 있는 방법
- 인터넷 웹 사이트의 방문 기록을 남겨 사용자와 웹 사이트 사이를 매개해 주는 정보이다.
- Cookie는 인터넷 사용자가 특정 웹서버에 접속할 때, 생성되는 개인 아이디와 비밀번호, 방문한 사이트의 정보를 담은 임시 파일로써, Server가 아닌 Client에 텍스트 파일로 저장되어 다음에 해당 웹서버를 찾을 경우 웹서버에서는 그가 누구인지 어떤 정보를 주로 찾았는지 등을 파악할 때 사용된다.
- Cookie는 Client PC에 저장되는 정보기 때문에, 다른 사용자에 의해서 임의로 변경이 가능하다.(정보 유출 가능, Session보다 보안성이 낮은 이유)
그렇다면 보안성이 낮은 쿠키 대신에 보안성이 좋은 세션을 사용하면 더 좋다고 생각되는데, 사실은 그렇지가 않다고 한다.
물론 보안성은 좋지만 Session으로 저장을 하면 Server의 메모리를 과도하게 사용하게 되어 Server에 무리가 가고 과부하가 올수 있다고 한다.
'Java' 카테고리의 다른 글
ToString 과 String.valueOf() (1) | 2023.04.18 |
---|---|
Map 메서드 (0) | 2023.04.11 |
배열과 리스트 (0) | 2023.03.18 |
Java에 대한 이해2 (0) | 2023.03.17 |
자바에 대한 이해 (0) | 2023.03.16 |