웹해킹 스터디 : 과제 1
1. 웹이란 무엇인가
많은 사람들이 "웹이란 무엇인가" 라고 묻는다면 인터넷 이라고 답하는 경우가 많다.
뭐 사람에 따라서는 네트워크나 다른게 아니냐고 묻는 경우가 많아서
먼저 개념을 확실하게 잡고가겠다
What is Internet?
인터넷은 통신 프로토콜을 이용해 정보를 주고받는 컴퓨터 네트워크이다. 네트워크의 네트워크를 구현하여 모든 컴퓨터를 하나의 통신망 안에 연결하고자 하는 의도에서 이를 줄여 인터넷이라고 처음에 이름지어졌다.
그럼 네트워크와의 차이점이 뭐냐? 라고 말하면 인터넷은 inter-net 이다. 즉 네트워크와 네트워크를 연결해 놓은 네트워크다. 즉 인터넷이 더 큰 개념이라고 생각하면 된다.
What is Web?
WWW(World Wide Web)이란 인터넷에 연결된 전세계 사용자들이
서로의 정보를 공유할 수 있는 장소를 의미한다.
간단히 줄여서 WWW나 W3라고 불리며, 간단히 웹(Web)이라고 가장 많이 불린다
웹은 정보의 그물망이라고 보면 되는데 쉽게 말하면 많은 정보가 서로 얽혀있는 정보망이다.
웹에는 수많은 웹사이트들이 있고 각각의 웹사이트는 웹 페이지라는 것으로 이루어진다. 네이버나 구글 이런것 들도 다 웹페이지다. 웹 페이지에는 글, 그림, 동영상 등 수많은 정보를 담고 있고, 마우스로 클릭하면 해당 웹 페이지로 이동하는 링크들이 있다. 이러한 링크들을 통해 각각의 웹 페이지들이 서로 연결되어 있다.
2. Web의 동작 방식
웹의 동작 방식을 간단하게 표현하면 이렇게 말할 수 있다.
클라이언트가 서버에 요청을 보내면 서버는 요청에 대한 응답을 해준다.
그러나 클라이언트와 서버 둘만으로 웹이 동작하는 것이 아니다.
추가로 그 밖의 다른 요소들과의 요청과 응답이 이루어짐으로써 데이터를 받아오는 것이다.
기본적으로 웹을 동작하는데 필요한 요소들 각각의 개념부터 알아보자.
Web Clinent
사용자가 웹에 접근하는 프로그램, Chrome이나 edge, firefox 같은 웹 브라우저들이다.
클라이언트는 사용자로부터 받은 URL에 대해 HTTP 형태로 서버에게 요청한다.
Web Server
웹 페이지를 저장하는 서버로 Apache Web server 등 여러프로그램들이 있따.
서버는 클라이언트에서 요청한 HTTP 메세지를 확인 한 뒤에 , HTML CSS 등의 데이터를 처리하여 클라이언트에 응답한다.
WAS(Web Aplication Server)
앞에 말한 서버만으로 모든 로직을 수행한다면 과부하가 일어날 수 있기 때문에 서버를 돕는 조력자 역할을 한다.
서버는 DB의 연동을 위해 WAS에게 처리를 요청하기도 한다.
사용자 컴퓨터나 장치에 웹 어플리케이션을 수행해주는 미들웨어로 Apache Tomcat이 있다.
DB(Data Base)
데이터의 정보를 저장하는 곳으로 WAS에서 데이터를 요청하면 필요한 데이터를 응답한다.
WAS와 DB 사이의 로직을 얘기하자면,
WAS에서 로직을 수행하다가 데이터를 저장하거나 받아오는 작업이 필요하면 SQL 질의를 통해 DB에 접근한다.
요청받은 DB는 동적인 페이지 처리를 담당하고, 다시 WAS에 데이터를 보내는 응답을 한다.
즉, WAS는 DB와 연동하여 데이터를 처리하고 생성한 파일을 다시 서버에게 반환한다.
3. 웹 사이트 제작에 필요한 언어들
프론트엔드 개발
- HTML (HyperText Markup Language): 웹 페이지의 구조를 정의하는 데 사용되는 마크업 언어입니다. 웹의 기본 구성 요소로, 웹 페이지의 본문, 제목, 이미지, 링크 등을 구성합니다.
- CSS (Cascading Style Sheets): 웹 페이지의 스타일을 정의하는 언어입니다. 레이아웃, 색상, 폰트 등의 시각적 요소를 조정하여 페이지의 외관을 개선합니다.
- JavaScript: 웹 페이지에 동적 기능을 추가하는 프로그래밍 언어입니다. 사용자 상호작용, 애니메이션, 데이터 검증 등을 처리할 수 있으며, 최근에는 프론트엔드 개발뿐만 아니라 백엔드 개발에도 널리 사용됩니다.
백엔드 개발
- Python: 다양한 웹 프레임워크(예: Django, Flask)를 통해 강력한 웹 애플리케이션 및 API를 개발하는 데 사용되는 범용 프로그래밍 언어입니다.
- JavaScript (Node.js): 자바스크립트를 서버 사이드 스크립팅 언어로 활용할 수 있게 해주는 플랫폼입니다. 이를 통해 동일 언어를 프론트엔드와 백엔드 모두에서 사용할 수 있어 개발 과정을 간소화할 수 있습니다.
- PHP: 동적 웹 페이지와 웹 애플리케이션을 생성하기 위해 널리 사용되는 서버 사이드 스크립팅 언어입니다. WordPress와 같은 콘텐츠 관리 시스템(CMS)의 기반이 됩니다.
- Ruby (on Rails): Ruby on Rails라는 프레임워크를 통해 빠른 웹 애플리케이션 개발이 가능한 객체 지향 프로그래밍 언어입니다.
- Java: 안정성과 확장성이 뛰어나며, 엔터프라이즈 수준의 웹 애플리케이션 개발에 자주 사용됩니다. Spring Framework와 같은 다양한 프레임워크가 지원됩니다.
데이터베이스 관리
- SQL (Structured Query Language): 관계형 데이터베이스 관리 시스템(RDBMS)에서 데이터를 관리하기 위해 사용되는 언어입니다.
- NoSQL: MongoDB, CouchDB와 같이 비관계형 데이터베이스를 위한 다양한 기술과 쿼리 언어를 포함합니다. 이들은 대용량의 분산 데이터를 처리하는 데 적합합니다.