2021 04 09
2021-04-09¶
프로가 되기 위한 웹 기술 입문¶
- 3장. HTTP를 이해하자
- HTTP 요청
1) 메서드
- GET, POST 등의 방식 2) URI - 무엇을 원하는가? 3) HTTP 버전 - 통신에 사용하는 HTTP 버전 4) Accept - 웹 클라이언트가 받을 수 있는 데이터의 종류 5) Accept-Language - 웹 클라이언트가 받을 수 있는 자연 언어의 종류 6) User-Agent - 이용 중인 웹 브라우저의 종류/버전 7) Host - 요청 보낸 곳의 호스트명 & 포트 번호- HTTP 응답 1) 상태 라인
- HTTP 버전, 상태 코드, 응답 구문으로 명시 2) 메시지 헤더 - 응답에 대한 부가적인 정보들 3) 메시지 본문 - 실질적인 메시지 (ex. HTML 파일의 내용 등)- HTTP는 한 번에 하나의 리소스만을 취득
- 원래는 파일명을 특정하여 URL로 요청하는데, 이를 생략하면 기본적으로 index.html등 디폴트 페이지를 반환하도록 설계함
- 인터넷 상에 접속된 모든 컴퓨터는 IP 주소라는 숫자로 식별 - IP 주소를 알면 특정 호스트를 지정할 수 있는 것 - 여기에 대기중인 포트를 명시해야 함... 정보를 기다리는 곳! - 해당 호스트에 "정보"(ex. HTTP 요청)를 TCP/IP 라는 프로토콜로 전송하게 된다 - "정보"는 잘게 패킷으로 나뉘어 전송이 된다. - 잘게 나눠야 실패시 재전송에 유리
- DNS를 통해 호스트명을 IP 주소로 변환할 수 있음
- HTTP 데이터 전송 - GET 메서드 - ?로 시작하는 쿼리스트링 - ?key1=value1&key2=value2 - 해당 매개변수들을 웹 어플리케이션에 넘겨주도록 설계 - URL에 매개변수가 포함되기에 매개변수째로 기억하거나 다른 사람에게 전달해야 할 때 편리 - "부작용이 없다"라고 표현 - POST 메서드 - HTTP 요청 메시지 본문에 매개변수들을 포함 - 비밀 정보, 결재 처리, 대량의 정보를 포함해야 할 경우
- 4장. CGI에서 웹 애플리케이션으로
- HTTP는 무상태 프로토콜(stateless protocol)... 사용자와의 정보 송수신을 연속된 흐름으로 제어 불가
- "쿠키"와 "세션"을 도입하여 해결하자!
- <쿠키> - HTTP의 규격을 확장해 웹 애플리케이션과 웹 브라우저 사이에서 정보 교환할 수 있도록 한 것 - 기존의 HTTP 헤더에 "Cookie: " 추가 - ex) Cookie: user=honggd; pass=webtext - 웹 서버에서 웹 브라우저로 HTTP 응답의 헤더를 이용해 작은 정보를 보낸다 - "이름=값"의 조합 - 웹 서버로 부터 쿠키를 받은 웹 브라우저는, 다음번에 같은 웹 서버에 접속할 때 전에 받았던 쿠키를 그대로 HTTP 요청 헤더에 넣어 보냄 - 요청 헤더에 들어있는 쿠키를 조사해 접속한 상대가 어떤 상대인지 판별 가능
- <세션> - 쿠키는 텍스트로 저장되기 때문에 안전하지 못한 방법 - 인가된 사용자를 판별하기 위해 굳이 텍스트를 사용할 필요가 없다고 판단 - 인가된 사용자임이 판별이 되면, 세션 ID라는 접수 번호를 발급해주는 것은 어떨까? - 웹 서버에 요청을 발행한 웹 클라이언트를 식별할 수 있기만 하다면, 그걸로 충분! - 결국 쿠키를 이용해 정보 주고 받는 것은 변함 없지만, - 쿠키 속에 사용자의 정보를 넣어놓기 vs 그냥 세션 ID만 넣어놓기 - 후자 승리!
- 5장. 웹 어플리케이션의 구성 요소
- CGI를 통해 펄/C언어로 웹페이지를 통적으로 생성할 수 있어짐
- 하지만 매번 펄 인터프리터 등의 프로세스를 기동하기에 효율 떨어짐
- 이를 개선하고자 웹 서버 안에서 펄이나 PHP 직접 실행할 수 있도록 함
- 데이터베이스: 컴퓨터 상의 대량의 정보를 축적해 효율적으로 검색할 수 있게 한 SW
- DBMS: 데이터 베이스의 구현/처리에 특화된 SW
- SQL(Structured Query Language)를 통해 데이터베이스에서 원하는 정보를 효율적으로 CRUD 할 수 있음
- 웹 어플리케이션에서 누가 어떻게 SQL을 DB로 전달? - 웹 어플리케이션의 프로그램이 SQL을 발행 - 우선 DB는 독립적으로 작동하는 프로세스... DB가 있을 수 있는 곳은 2곳 - 웹 서버 자체에 DB SW를 설치하여 구성하기 - DB용으로 새로운 컴퓨터를 마련하여 통신하기 - 부하가 줄어들어 편리 - 어떤 방법으로라도 SQL을 보내 정보의 추출 의뢰하고 결과 받아야함 - 쿼리 발행이나 결과의 전달에는 DB 제품 고유의 통신 프로토콜 사용 - DB와의 통신은 주로 DB 접속용 라이브러리릍 통해 하게됨 (ex. JDBC) - 개발자가 DB 제품 고유의 프로토콜까지 신경써서 개발할 필요 X
- 웹 서버 vs 웹 어플리케이션 서버 ... 공부할 것