[Web기초] Web의 동작 원리
Web의 등장
전화선을 활용하는 방식 (같은 종류의 전화선끼리만 연결)
-> world wide web (세계 연결 망_ 시공간 제약 없음) 팀 버너스 리
PC 통신 | Web |
폐쇄 | 개방 |
저속 | 고속 |
전화선 / 모뎀 | 광랜(FTTH) |
web 1.0
- 어느 누구나 프로그램을 대중에게 공개할 수 있는 세상의 도래
- 일방향적으로 정보를 제공
web 2.0
- 일방향적으로 정보를 제공 받던 사용자가 직접 정보를 생산하고 공유할 수 있어짐.
- "개방, 참여, 공유"의 정시능ㄹ 바탕으로 정보가 쌍방향으로 소통하고 "사용자가 생성한 데이터"를 위주로 웹 앱의 붐, 그리고 2010년대 들어서 클라우드 기반 인프라와 MSA(Microservices Architecture)의 사용이 확산되면서 API 확산이 가속화되었다.
ex ) Wikipedia, naver 블로그
- 단점: 홍보성, 검증 되지 않은 정보들
스마트폰 시대의 도래
- 언제 어디서나 공유, 반응이 가능해짐 -> Real Time 시대가 도래
- Social Network Service _ 개개인의 시공간의 제약 또한 사라짐
- 영상통화
web 3.0
- 데이터의 투명한 공개
- BlockChain_ 누구나 데이터 확인
ex) NFT
- 완벽한 기술인가?
모든 참여자에게 데이터를 공유해야하기 때문에 네트워크 속도가 느린 편이다.
오픈 소스 형태이기 때문에 책임자가 불분명 _ 법적 보상이 어려움
중앙 집중적인 원장관리는 책임 소재가 명확함.
- 그럼에도 불구하고!
클라이언트와 서버
-인터넷이 어떻게 작동하는가?
인터넷 상의 정보를 활용하기 위해서는 web browser이라는 도구를 이용
ex) Chrome, Safari(애플운영체제)
중요한 것은 사용자가 인터넷상의 정보를 활용하기 위해서는 브라우저의 도움을 반드시 받아야함
* 웹 브라우저는 htm(Text file)을 이해하고 website를 송출한다.
- Client (클라이언트) _ Chrome
브라우저를 통해 원하는 정보를 요청(request) 보내는 주체. 구글링을 하는 우리의 모습이라고 생각하면 됨.
- Server (서버)_ Google
요청을 수신하여 처리하고 응답(response)을 보내는 주체
인터넷 세상에서 두 주체가 통신을 하기 위해서는 일정한 규칙이 필요함
일정한 규칙을 통해 전해진 요청에 대하여 일정한 규칙을 통해서 응답을 제출.
웹브라우저에서 url이라는 주소 양식을 통해 클라이언트와 서버가 통신하는 규칙을 http라고 함
HTTP_Hyper Text Transfer Protocol
protocol : 규칙
Hyper Text : 다른 리소스(page)로 이동할 수 있는 링크 (하나의 페이지에서 다른 페이지로 이동할 수 있는 장치) , html과 연관
URL_ Uniform Resource Locator
: 인터넷 상에 위치해있는 자료들의 주소 체계
서버에 저장된 웹 페이지, 비디오, 음성, 이미지 등도 해당 resource가 위치한 주소를 가지고 있음
쿠키와 세션
쿠키
: 서버로부터 로그인 성공 화면 외에도 다른 중요한 요소들을 받아오게 되는데, 그 대표적인 것이 바로 쿠키이다.
쿠키는 서버에서 클라이언트로 보내져서 브라우져에 저장되는 아주 작은 크기의 데이터를 가리키는 용어이다.
속성을 나타내는 키-값 구조 명시된 유효기간이 만료되는 시점에 브라우져에서 삭제되는 특징을 가짐.
로그인에 성공했다는 증표 남겨 놓을 필요가 있음
증표가 없다면 로그인을 했음에도 그 상태들이 기억되지 못할 것임.
Stateless 무상태성 : http의 경우 각각의 요청과 응답이 종료되었을 때, 연결되지 않고 상태를 기억하지 않는다는 특징을 가짐.
그렇다면 계속 연결되엉 있으면 편한 것 아닌가..? -> 수십, 수백만명이 특정 서버에 동시에 연결되어 있다면, 서버가 온전히 버틸 수 없음. 따라서 stateless 라는 특성이 리소스 관리 측면에서 오히려 효율적인 것임.
그러나 client 가 했던 것은 기억을 해야지
서버가 클라이언트에게 '너 이러이러한 작업에서 성공해서 이런 데이터를 너에게 보내줄게 (쿠키)'
쿠키를 받은 클라이언트는 로그인을 하고 다른 페이지로 이동해도 연결이 풀리지 않음.
브라우저에 저장된 쿠키에 의해서, 클라이언트는 서버와 있었던 일련의 작업들을 받게되고, 서버는 다시 클라이언트에서 보낸 쿠키 정보에 따라 A라는 특정 클라이언트의 상태를 식별하고, 과거에 있었던 일들을 바탕으로 브라우져에 띄워줌
보안을 위해 쿠키에 민감한 정보들을 담으면 안됨.
httpOnly _ 서버에서만 쿠키를 조작할 수 있게 하는 옵션
Secure_ 보안 연결에서만 쿠키값을 전송함.
어찌되었는 서버가 클라이언트를 식별할 수 있는 방법은 쿠키이기 떄문임.
세션
: 민감 정보들이 클라이언트에 저장되어 노출되는 것을 방지, 클라이언트 요청시 보내는 쿠키의 리소스 비용을 절감한다는 장점. 작은 리소스라도 누적이 되면 클라이언트에게는 큰 부담이 될 수 있음.
서버 입장에서는 세션을 운영하는 것이 또 하나의 비용이 될 수 있음. 따라서 서버측에서 세션 저장소를 운용하는 가용성과 설계들이 서버 성능에 영향을 미치거나, 운영비의 변동을 가져옴. 즉, 설계적인 측면에서 유의 할 필요가 있음.
클라이언트에서 로그인 요청을 보내고 성공하게 되면, 서버에서는 여러 정보 그 자체를 주는게 아니라 session ID를 보냄
쿠키 데이터들은 서버의 세션 저장소라는 곳에 가지고 있게 됨.
따라서 클라이언트에서 굳이 많은 민감 정보를 담지 않고, 서버에서 세션 ID를 받고 데이터를 찾아서 받게 되는 것임 .