콘텐츠로 이동

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 웹 어플리케이션 서버 ... 공부할 것