1-1. 네트워크
- 컴퓨터 외 세상의 모든 사물이 네트워크로 연결되어 있다.
- 네트워크와 웹서비스는 무슨 관계일까.
- pc, 클라이언트, 클라우드, 모바일 등 모든 것이 연결되어 있다.
1-2. client와 server

client
- device들에는 기본 브라우저가 존재 -> 이 모든 것이 클라이언트이다.
- 브라우저를 통해서 특정한 사이트에 들어가서 제공하는 서비스를 이용할 수 있기 때문이다.
- 제공해주는 것이 서버, 제공받아 사용하는 것이 클라이언트
- 앱 또한 클라이언트가 될 수 있다.
- SSH, telnet 등도 클라이언트이다.
- 서버의 정보를 보거나 컨트롤하기 원한다면 모두 클라이언트이다.
- 랩탑, PC, 태블릿, 스마트폰에 설치되어 구동된다.
server
- 특정 도메인이나 프로토콜을 이용해 서버에 접속
- 특정한 데이터가 모여있는 곳이다.
HTTP 프로토콜
- client -> server : request
- server -> client : response
1-3. HTTP의 특징

- 클라이언트가 서버에 데이터를 요청
- 서버는 그에 대한 데이터를 찾고 가공하여 제공해준다.
- 요청이 모두 완료되면 연결을 끊어버린다.
- 끊는 이유?
- N대 1의 관계이므로 한꺼번에 여러 요청을 받게 되는데 모든 사람의 연결고리를 연결한다면 서버가 폭파될 것이다.
- 서버의 부담을 줄이기 위해.
- 서버에 요청, 연결
- 요청에 따른 작업
- 클라이언트에 응답
- 연결 해제
- 연결을 유지하기 위해서 쿠키 또는 세션을 이용한다.
- 매 페이지를 이동할 때마다 연결이 끊어져 버리면 너무 불편할 것이다.
- 회원정보는 유지하고 싶을 때 이용하는 방법이다.
- 데이터가 PC에 머물면 쿠키, 데이터가 서버에 머물면 세션이다.
- 한번 접속할 때 자동으로 쿠키생성하고 통신할 때 비교하며 연결을 유지하는 방식이 쿠키
- 서버에서 세션값을 생성하고 통신할 때 비교하며 연결을 유지하는 방식이 세션
1-4. HTTP 처리 방식

client - server
- POST: 새로운 데이터를 server에 입력할 때 (client -> server)
- GET: 어떤 데이터를 server에서 얻길 원할 때 (server -> client)
- PUT: 기존 server의 내용을 수정하고 싶을 때
- DELETE: 기존 SERVER의 내용을 삭제하고 싶을 때
-> html에서는 post와 get 방식만 form태그로 지원한다.
server - DB
- create: 새로운 데이터 생성
- read: 조회
- update: 수정
- delete: 삭제
1-5. POST와 GET
GET
- URL에 데이터가 노출됨
- 도메인 뒤에 query string이 따라 붙어 날아간다.
- 데이터 길이에 제한 있음
- 상대적으로 보안에 취약하다.
POST -> 장고에서는 대부분 post 사용
- 요청 메세지에 데이터를 담아서 사용한다.
- 상대적으로 보안에 강하다.
- django에서 주로 사용한다.
1-6. URL

- URL에 비해 REST URL이 매핑을 통해 간결해진다.
1-7. REST와 Django url맵핑

1-8. 서버 구성

웹 서버
- 주로 정적인 데이터 요청 처리
- 비교적 간단한 데이터 처리 ex) 이미지 등
- 동적인 데이터 요청 시 애플리케이션 서버에 전달
애플리케이션 서버
- 주로 동적인 데이터 요청 처리 ex) 날짜에 따른 날씨 데이터
- Database 연동