2-Tier 아키텍쳐 : 리소스가 존재하는 곳(서버)과 리소스를 사용하는 앱(클라이언트)을 분리시킨 것
빈번한 업데이트가 요구되는 경우, 두 곳을 분리해주어야 함.
client : 리소스를 받아 브라우저 창에 뿌린다.
server : 눈에 보이지 않으며, 리소스를 전달해주는 역할을 한다
2-Tier 아키텍쳐 : 클라이언트와 서버
3-Tier 아키텍쳐 : 클라이언트와 서버 그리고 데이터베이스(창고역할)
클라이언트와 서버간의 통신은 요청과 응답으로 구분된다.
요청
이 있어야만 응답
이 온다
프로토콜 : 통신을 하기 위한 통신규약, 즉 약속
웹 애플리케이션 아키텍쳐에서는, HTTP 프로토콜을 이용해서 서로 대화를 나눈다.요청예시) GET/americano HTTP/1.1 Hosts: starbucks.com 응답예시) HTTP/1.1 200 OK { "data":"americano"}
웹에서 HTML, JSON 등의 정보를 주고받는 프로토콜
HTTPS: HTTP에서 보안이 강화된 프로토콜
HTTPS가 필요한 이유 세가지 : 개인정보보호, 무결성, 식별
개인정보 보호 : 아무도 메세지를 가로챌 수 없도록 만든다 (브라우저 url표시줄의 녹색자물쇠는 외부접근차단이 되어있다는 것을 의미) 무결성 : 메세지가 목적지로 가는 중 , 조작되지 않도록 만든다 식별 : ssl인증서 그리고 이 메커니즘을 `암호화`라고 한다.
주문할 수 있는 메뉴판
정확한 주문 방법을 따라 서버에 요청해야한다.
서버가 어떻게 구성되어있는지 모르는 상태라면, CT는 자원을 확인할 수 없다
따라서 서버 API는 모두 API.docs라는 설명서를 가지고 있는데..
이처럼 서버는 리소스를 잘 활용할 수 있도록 API제공해야한다.
즉 의사소통이 가능하도록 만들어진 접점.
(application programming interface)
인터넷에 있는 데이터를 요청할때 HTTP프로토콜을 사용하며,
주소(URL,URI)를 통해 접근할 수 있다
아메리카노 두잔 전부 헤이즐넛시럽 넣어주세요
(여기서 ?뒤에 붙은 문자열들을 (&제외) 파라미터라고 부른다. )
호스트(http://starbucks.com)/coffee/americano?quantity=2&syrup=hazelnet
file://www.google.com/search?q=Java
위의 예시에서 살펴보면,
file:// --> scheme
www.google.com --> hosts
/search --> url-path
?q=Java --> query
scheme: 통신방식(프로토콜)을 결정한다
hosts : 웹서버의 이름, 도메인, IP // port ?? (:80, :3000 등)
url-path : 웹서버에서 지정한 루트 디렉부터 페이지,이미지 등이 위치한 경로와 파일명
IP주소(internet protocol address): 인터넷상에서 사용하는 주소체계_4덩이의 숫자
(각 덩어리마다 0-255)
port: ip주소가 가리키는 피씨에 접속할 수 있는 통로(채널)
0~65535까지 사용할 수 있으며, 0-1024까지의 포트번호는 이미 정해져 있다.
예를들어
22: SSH
80: HTTP
443: HTTPS 등
127.0.0.1은
로컬pc0.0.0.0
, 255,255,255,255
: broadcast address