1955년생 : 빌게이츠, 스티브 잡스, 팀 버너스리(티모시 버너스 리)
팀 버너스 리 (웹 기술의 창시자)
- CERN(입자물리연구소)에서 컨설턴트로 근무
- 정보검색 시스템 구축
- 이를 바당으로 현재의 웹 기술을 창안
- HTML, HTTP의 창시자
- 리포트의 참고자료를 연결시키고자 만들게됨
- HTML이라는 문서를 HTTP를 통해 실어 나른다
- 슬레시(/) 두개를 사용한것에 대한 의미를 풀어준 썰이 유명하다
전길남 박사
- 1982년 세계두번째로 인터넷 연결을 구현하심
- 라우터를 만듬
URL과 URI
- Uniform Resource Locator (특정파일을 지정)
- Uniform Resource Identifier (포괄적)
Locator : 위치
Identifier : 식별자
Resource : 파일이다(HTML, CSS, ~.jpg, ~.js, ~.json)
형식
Protocol://Address:Port_numder/Path(or filename)?Parameter=value
예시
http://www.test.co.kr/course.do?cmd=search&search_keyword=Test
HTTP
- HTTP는 HTML 문서를 전송 받기 위해 만들어진 응용 프로그램 계층 통신 프로토콜(L7)
- 1996년에 1.0 스펙이 발표돼으며 1999년 6월에 1.1이 발표
- 기본적으로 클라이언트의 요청에 대응하는 응답형식으로 작동한다.
- 헤더는 다음과 같이 분류
- 일반 헤더
- 요청 헤더(HTML문서 요청)
- 응답 헤더
- 엔티티 헤더
- 요청에 사용되는 메서드는 주로 GET, POST
HTTP 응답코드
- 200 OK : 요청이 정상적으로 처리됨
- 201 Create : 요청에 대한 새로운 자원을 생성하는데 성공
- 301 Moved permanently
- 302 Found
- 400 Bad Request : HTTP 규약에 맞지 ㅇ나흔ㄴ 요청
- 403 Forbidden : 권한이 없거나 잘못된 파일 실행 접근 시도.
- 404 Not found
- 500 Internal server error : 내부 오류때문에 요청을 처리할 수 없음
HTTP method
- GET : download
- POST : upload(file), ID/PW 검증
- HEAD
- TRACE
- PUT
- DELETE
- OPTIONS
- CONNECT
웹 서비스 기본 구조와 흐름을 알아야 한다.
TCP/IP 기반으로 웹서버와 연결을 기반으로 HTTP 통신이 이루어 진다.
클라이언트가 서버에 resource(문서)를 요청하고 문서를 받아 구문분석(텍스트 + 테그)을 통해 렌더링하여 브라우저에서 클라이언트가 볼 수 있다
개발시 3대 원칙(유지보수를 위한)
- UI
- Data
- Control(제어)
원칙을 바탕으로 기존 HTML에서 미관요소를 따로 분리하게 된것이 CSS 이다.
서버에 요청시 문서와 CSS를 받게 된다
이때까지는 정적문서였다
1990년대에 동적으로 제어하여 움직임을 주도록 노력하는데
Mocha Script -> Live Script -> JavaScript 순으로 발전해왔다
페이지를 요청시 처리순서가 다음과 같이 변화된다
- 구문분석 : 텍스트와 테그를 분리
- 렌더링 : 테그에 맞게 텍스트를 배치
- JS 엔진 : 동적 페이지 구성
사용자가 개입하기 위해 POST 메소드가 탄생한다
이는 단방향 소통에서 서버와 소통이 가능한 양방향 상호작용을 하게 된다.
양방향 상호작용 + 상태전이의 정보가 따라다니게 되는데 HTTP는 stateless(클라이언트의 상태를 보존하지 않음)이므로 어딘가에 변화의 내용을 기억시켜야할 필요가 생긴다.
클라이언트는 쿠키로 서버는 DB에 기억하게 된다, 쿠키는 상호작용의 위한 부산물이다
예를 들어 로그인을 할 때 아이디, 패스워드를 입력하는데 이 원격지 사용자 입력은 검증의 대상이기 때문에 확인을 하고 진행을 해야한다. DB에서 조희를 통해 확인을 한다
그런데 웹에서 직접 DB에 접근하여 확인하지 않고 중간에 있는 서버로 DB와 연동이 된다.
중간 정리를 하자면 웹 서버는 송/수신을 담당, 데이터베이스는 자료를 담당, 중간에 있는 서버는 처리, 연산을 담당한다.
사용자의 입력으로 데이터를 전달 받고 DB의 데이터로 검증을 하여 중간서버에서 사용자에게 맞는 페이지를 동적으로 생성하여 전달해준다. 이 중간서버는 바로 WAS(Web Application Server)이다. ODBC, JDBC 등으로 DB와 연동되어 각 결과를 생성하여 전달하고 효율적으로 운영되기 위한 View, Model, Control 아키텍쳐의 구조가 있다.
Web Server, Web Application Server, Database를 각 1-Tier로 놓고 봤을데 3-Tier 체제가 된다.
웹 서비스 시스템이 잘 작동하고 있는가 항상 모니터링을 하는데 처리부분에서 응답시간을 확인하는 것이다.
DB의 응답시간과 WAS 상태를 모니터링을 하는데 APM(Application Performance Management)라 한다.
오픈 소스 중에 스카우터가 있다.
APM
- DB 응답시간 모니터링
- WAS 모니터링
요즘에는 Java를 많이 사용하다보니 Tomcat을 APM으로 모니터링을 하게된다.
중요하게 알아야할것이 있다.
User Mode에 소프트웨어 형태로 Java를 위해서 구현된 CPU가 있다. JVM으로 이 CUP가 인식할 수 있는 명령체계가 있는데 Java bytecode로 작동한다
이 bytecode를 기반으로 어플리케이션을 동작시켜주는 이런 애들을 미들웨어라 한다.
미들웨어는 소프트웨어인데 또 다른 소프트웨어가 잘 작동할 수 있도록 도와주는 소프트웨어이다.
일반적으로 TCP/IP 통신, DB, File 입출력 등은 필요하기 때문에 미리 가지고 있는 것이다.필요한 기능만 구현하면 된다.
Java로 웹 서비스를 구현할 때 JSP가 있는데 이것이 미들웨어에 들어가 동작을 할 때 Survlet의 형태가 된다. 함수 하나만 짜놓으면 미들웨어의 도움으로 알아서 동작할 수 있게 편의를 제공 받을 수 있다.
이 middleware를 WAS라 부르고 대표적으로 Tomcat이 있다.
이런 서블릿을 컨테이너의 형태로 관리가 되고 추가로 사용되는 객체 관리를 대신주는 컨테이너, 즉 스프링이 있다.
결국 APM에서 WAS를 모니터링 한다는 것은 JVM에 이상여부를 판단하는 것이다.
지금은 PC뿐 아니라 다양한 기기로 서버에 접속할 수 있는 수단이 생겼다. 환경에 맞춰 페이지를 구성하도록 UI와 Data를 분리하여 데이터를 XML || JSON 형태로 받아 Javascript 기반에 소프트웨어를 실행해 그자리에서 HTML를 생성한다. 대표적으로 React, Vue가 있다.
Request에 종류는 Read, Write, Update, Delete(CRUD)가 있다. 이를 하나하나 함수로 만들고 이를 URI로 만들게 되면 RESTful API가 되는 것이다.
보안쪽으로 보자면 Web Server 앞에는 대표적으로 3가지가 있다
- IPS
- SSL 가속기
- WAF : 방화벽
또한 사용자의 입력은 SQL을 검색하는데 사용되므로 서버측에서 SQL Injection을 검증해야한다
'Network' 카테고리의 다른 글
무료 HTTPS 인증(with. Duck DNS, Tomcat9) (0) | 2024.08.07 |
---|---|
공부하자 네트워크 (0) | 2023.11.07 |
오늘도 한다 네트워크공부 (0) | 2023.11.06 |
네트워크 OSI 7 Layer 먼저 하지 말자 (1) | 2023.11.02 |