[normaltic 취업반 5기] 2023-10-25 1주차 내용 정리

2023. 10. 25. 23:22normaltic 취업반 5기/내용 정리

 

Web Server

 

웹 서버는 클라이언트(사용자)가 웹 브라우저 주소창에 요구하는 웹 페이지에 대한 정보가 담긴 URL을 입력하여 요청하면 해당 요청에 따라 HTML 문서나 CSS 같은 정적인 콘텐츠를 클라이언트에게 제공하는 서비스 프로그램을 뜻한다.

 

웹 서버는 들어온 요청의 종류에 따라 역할이 달라진다.

  • 정적인 요청 : HTML이나 CSS, 이미지와 같은 정적인 데이터들을 클라이언트에게 전달한다.
  • 동적인 요청 : 클라이언트측에서 동적인 데이터를 요청했을 경우 웹 서버 자체적으로 처리하지 못하기에 WAS에게 요청을 넘긴다. WAS가 받은 요청에 대한 처리를 완료한 후 웹 서버에게 처리된 응답을 전달하면 웹 서버는 처리된 응답을 클라이언트에게 전달한다.

 

WAS (Web Application Server)

 

WAS는 웹 서버에서 가능한 기능들을 대부분 사용 가능하고 이에 더해 클라이언트 측에서 동적인 데이터를 요청한 경우 해당 요청을 처리하여 동적인 콘텐츠를 전달해 주는 역할 또한 가능하다. WAS는 주로 동적인 요청을 처리하기 때문에 DB 서버와 연계하여 수행된다.

 

WAS는 웹 서버의 기능들을 대부분 사용 가능하다. 그렇다면 WAS로만 서버를 운영해도 괜찮지 않을까? 그렇지 않다. WAS만으로 서버를 운영하게 되면 동적 처리와 정적 처리를 모두 감당해야 하기 때문에 서버에 부하가 가중이 되어 성능이 저하된다. 그렇기에 웹 서버와 WAS 모두 사용하여 정적, 동적 처리 역할을 나누어서 분담해야 부하가 덜어진다. 또한 서버를 나누어 데이터를 보관함으로써 보안성도 강화하는 효과를 얻을 수 있다.

 

Web 서버 구조

 

웹 서버 구조

웹 서버는 Client - Web Server - Web Container - Database 구조로 이루어져 있으며 처리 과정은 다음과 같다.

  1. 클라이언트측에서 파일 요청
  2. 정적인 요청일 경우 Web Server에서 처리하여 클라이언트 측으로 정적 콘텐츠 전달
  3. 동적인 요청일 경우 Web Server에서 처리할 수 없기 때문에 Web Container로 요청 전달
  4. 동적 데이터 처리에 저장된 데이터가 필요한 경우 Database에 필요한 데이터 요청
  5. Database에서 요청 받은 데이터를 Web Container에 제공
  6. Web Container는 Database에게서 받은 데이터를 사용하여 동적 콘텐츠로 처리
  7. 처리된 동적 컨텐츠는 Web Server를 거쳐 클라이언트 측으로 동적 콘텐츠 전달

 

URL (Uniform Resource Locator)

 

URL은 인터넷 상의 특정 웹 사이트, 파일 또는 페이지의 위치를 나타내며 기본적으로 필요한 정보를 검색할 때 이동하려는 주소다.

 

URL 구조
[Protocol]://[Domain or IP]:[Port]/[File Path]?[Parameters]
ex) https://search.naver.com/search.naver?where=nexearch&sm=top_hty&fbm=0&ie=utf8&query=
  • Protocol : https와 같은 프로토콜을 입력하는 자리
  • Domain or IP : 웹 서버를 실행하는 시스템의 IP 주소 또는 Domain을 입력하는 자리, 웹 서버를 실행시킨 경로가 기준이 된다.
  • Port : 웹 서버를 실행시킨 포트 번호를 입력하는 자리, 생략되어 있는 경우 웰 노운 포트인 80번으로 연결한다.
  • File Path : search.naver이란 파일이 위치한 경로를 입력하는 자리
  • Parameters : search.naver파일에 존재하는 파라미터에 값을 입력하는 자리 '?' 기호는 이후부터 파라미터를 의미하는 구분자를 뜻하고, '&'는 파라미터 간 구분자를 의미한다.

 

프론트  엔드 언어 VS 벡 엔드 언어

 

프론트 엔드 언어는 정적 데이터를 표현할 때 쓰이는 언어를 뜻한다. 주로 HTML, CSS, Javescript가 사용된다. 

벡 엔드 언어는 동적 데이터를 표현할 때 쓰이는 언어를 뜻한다. 주로 PHP, Java, Ruby, C, Python 등이 사용된다.

 

PHP

 

PHP 코드의 시작 태그와 종료 태그 : <?php ?>

변수 : $[변수명] = [값]

PHP 시작 태그와 종료 태그를 사용하여 HTML 코드에 PHP 코드를 삽입할 수 있다.

PHP 코드를 사용하는 경우 확장자는 '.php'이어야 한다.

 

 

 

GET, POST Method

 

웹 페이지에서 데이터를 입력받아 동적인 처리를 하기 위해 php 파일로 데이터를 전달하는 방법에는 GET 방식과 POST 방식이 있다. 

 

GET

 

데이터를 전달하기 위해서는 <form> 태그를 사용해야 한다. <form> 태그에서 전달할 방식(GET, POST)를 선택하고 action 파라미터에 전달할 파일을 입력해 준다. 여기서는 데이터를 전달할 방식이 "GET"이고 "test.php"파일에 입력한 데이터를 전달한다. 또한 <form> 태그는 <input> 태그로 작성해주어야 하며, submit은 입력한 data를 action에 입력한 파일로 전달해 주는 역할을 한다.

 

 

GET 메소드를 이용한 데이터 전달방식은 URL에 전달하는 데이터가 노출이 된다. 데이터가 노출이 되기 때문에 공유하기는 쉬우나 보안적으로는 취약하다.

 

POST

 

코드는 GET 방식과 동일하나 method 파라미터를 "POST"만 바꿔준다.

 

 

POST 메소드를 이용한 데이터 전달방식은 GET 방식과는 달리 데이터 노출이 생기지 않는다. 그러므로 사용자 계정 정보 같은 중요한 데이터를 입력할 시 POST 방식으로 데이터를 전달하는 편이 보안적으로 좋다.