|
| 1 | +# 웹 서버, 웹 애플리케이션 서버, 클라이언트 구조와 상호작용 |
| 2 | + |
| 3 | +# 목차 |
| 4 | +- [웹 서버, 웹 애플리케이션 서버, 클라이언트 구조와 상호작용](#웹-서버-웹-애플리케이션-서버-클라이언트-구조와-상호작용) |
| 5 | +- [목차](#목차) |
| 6 | + - [소개](#소개) |
| 7 | + - [1. 클라이언트](#1-클라이언트) |
| 8 | + - [클라이언트의 역할](#클라이언트의-역할) |
| 9 | + - [동작 원리](#동작-원리) |
| 10 | + - [예제](#예제) |
| 11 | + - [2. 웹 서버](#2-웹-서버) |
| 12 | + - [웹 서버의 역할](#웹-서버의-역할) |
| 13 | + - [대표적인 웹 서버](#대표적인-웹-서버) |
| 14 | + - [동작 원리](#동작-원리-1) |
| 15 | + - [예제](#예제-1) |
| 16 | + - [3. 웹 애플리케이션 서버](#3-웹-애플리케이션-서버) |
| 17 | + - [웹 애플리케이션 서버의 역할](#웹-애플리케이션-서버의-역할) |
| 18 | + - [대표적인 웹 애플리케이션 서버](#대표적인-웹-애플리케이션-서버) |
| 19 | + - [동작 원리](#동작-원리-2) |
| 20 | + - [예제](#예제-2) |
| 21 | + - [4. 클라이언트, 웹 서버, 웹 애플리케이션 서버의 상호작용](#4-클라이언트-웹-서버-웹-애플리케이션-서버의-상호작용) |
| 22 | + - [전체 흐름](#전체-흐름) |
| 23 | + - [예제 흐름](#예제-흐름) |
| 24 | + - [결론](#결론) |
| 25 | + - [추가 학습 자료](#추가-학습-자료) |
| 26 | + - [다음](#다음) |
| 27 | + |
| 28 | +## 소개 |
| 29 | +웹 기술의 기본적인 이해를 위해, 웹 서버, 웹 애플리케이션 서버, 클라이언트의 구조와 이들이 어떻게 상호작용하는지 살펴보겠습니다. 이 문서에서는 각 구성 요소의 역할과 동작 원리를 설명합니다. |
| 30 | + |
| 31 | +## 1. 클라이언트 |
| 32 | + |
| 33 | +### 클라이언트의 역할 |
| 34 | +- **사용자 인터페이스**: 사용자가 상호작용하는 웹 페이지를 제공합니다. |
| 35 | +- **웹 브라우저**: 웹 페이지를 요청하고 표시하는 소프트웨어(예: Chrome, Firefox, Edge). |
| 36 | + |
| 37 | +### 동작 원리 |
| 38 | +1. **URL 입력**: 사용자가 웹 브라우저에 URL을 입력합니다. |
| 39 | +2. **HTTP 요청**: 웹 브라우저가 서버에 HTTP 요청을 보냅니다. |
| 40 | +3. **응답 수신 및 렌더링**: 서버로부터 HTML, CSS, JavaScript 파일을 받아와서 웹 페이지를 렌더링합니다. |
| 41 | + |
| 42 | +### 예제 |
| 43 | +```text |
| 44 | +사용자가 http://example.com을 입력합니다. |
| 45 | +브라우저가 서버에 HTTP GET 요청을 보냅니다. |
| 46 | +서버가 HTML 페이지를 응답합니다. |
| 47 | +브라우저가 페이지를 렌더링하여 화면에 표시합니다. |
| 48 | +``` |
| 49 | + |
| 50 | +## 2. 웹 서버 |
| 51 | + |
| 52 | +### 웹 서버의 역할 |
| 53 | +- **정적 콘텐츠 제공**: HTML, CSS, 이미지 파일 등의 정적 파일을 클라이언트에 제공합니다. |
| 54 | +- **요청 라우팅**: 웹 애플리케이션 서버로 요청을 전달합니다. |
| 55 | + |
| 56 | +### 대표적인 웹 서버 |
| 57 | +- **Apache**: 오픈 소스 웹 서버 소프트웨어. |
| 58 | +- **Nginx**: 고성능 웹 서버 및 리버스 프록시 서버. |
| 59 | + |
| 60 | +### 동작 원리 |
| 61 | +1. **요청 수신**: 클라이언트의 HTTP 요청을 수신합니다. |
| 62 | +2. **요청 처리**: 요청된 리소스가 정적 파일이면 이를 응답합니다. |
| 63 | +3. **애플리케이션 서버로 전달**: 동적 콘텐츠 요청 시, 웹 애플리케이션 서버로 요청을 전달합니다. |
| 64 | + |
| 65 | +### 예제 |
| 66 | +```text |
| 67 | +브라우저가 http://example.com/index.html을 요청합니다. |
| 68 | +Apache 서버가 요청을 수신하고 index.html 파일을 클라이언트에 응답합니다. |
| 69 | +``` |
| 70 | + |
| 71 | +## 3. 웹 애플리케이션 서버 |
| 72 | + |
| 73 | +### 웹 애플리케이션 서버의 역할 |
| 74 | +- **동적 콘텐츠 생성**: 데이터베이스와 상호작용하여 동적 웹 페이지를 생성합니다. |
| 75 | +- **비즈니스 로직 처리**: 웹 애플리케이션의 핵심 비즈니스 로직을 처리합니다. |
| 76 | + |
| 77 | +### 대표적인 웹 애플리케이션 서버 |
| 78 | +- **Node.js**: JavaScript 기반의 서버 측 프레임워크. |
| 79 | +- **Django**: Python 기반의 웹 애플리케이션 프레임워크. |
| 80 | +- **Spring Boot**: Java 기반의 웹 애플리케이션 프레임워크. |
| 81 | +- **DOTNET** : C# 기반의 웹 애플리케이션 프레임워크. |
| 82 | + |
| 83 | +### 동작 원리 |
| 84 | +1. **요청 수신**: 웹 서버로부터 요청을 전달받습니다. |
| 85 | +2. **비즈니스 로직 처리**: 요청에 따라 필요한 비즈니스 로직을 실행합니다. |
| 86 | +3. **동적 콘텐츠 생성**: 데이터베이스와 상호작용하여 HTML 등의 동적 콘텐츠를 생성합니다. |
| 87 | +4. **응답 전송**: 생성된 동적 콘텐츠를 웹 서버를 통해 클라이언트에 전송합니다. |
| 88 | + |
| 89 | +### 예제 |
| 90 | +```text |
| 91 | +브라우저가 http://example.com/data를 요청합니다. |
| 92 | +Nginx 서버가 요청을 Node.js 애플리케이션 서버로 전달합니다. |
| 93 | +Node.js 서버가 데이터베이스에서 데이터를 가져와 HTML 페이지를 생성합니다. |
| 94 | +생성된 HTML 페이지를 Nginx 서버를 통해 클라이언트에 응답합니다. |
| 95 | +``` |
| 96 | + |
| 97 | +## 4. 클라이언트, 웹 서버, 웹 애플리케이션 서버의 상호작용 |
| 98 | + |
| 99 | +### 전체 흐름 |
| 100 | +1. **클라이언트 요청**: 사용자가 웹 브라우저에서 URL을 입력하여 HTTP 요청을 보냅니다. |
| 101 | +2. **웹 서버 처리**: 웹 서버가 요청을 수신하고 정적 콘텐츠 요청인지 확인합니다. |
| 102 | + - **정적 콘텐츠**: HTML, CSS, 이미지 등의 정적 파일을 직접 응답합니다. |
| 103 | + - **동적 콘텐츠**: 요청을 웹 애플리케이션 서버로 전달합니다. |
| 104 | +3. **애플리케이션 서버 처리**: 웹 애플리케이션 서버가 비즈니스 로직을 처리하고 동적 콘텐츠를 생성합니다. |
| 105 | +4. **응답 전송**: 생성된 동적 콘텐츠를 웹 서버를 통해 클라이언트에 응답합니다. |
| 106 | +5. **클라이언트 렌더링**: 클라이언트가 수신한 HTML, CSS, JavaScript 파일을 렌더링하여 화면에 표시합니다. |
| 107 | + |
| 108 | +### 예제 흐름 |
| 109 | +```text |
| 110 | +1. 사용자가 http://example.com/profile을 입력합니다. |
| 111 | +2. 웹 브라우저가 Nginx 웹 서버에 HTTP GET 요청을 보냅니다. |
| 112 | +3. Nginx 웹 서버가 요청을 Node.js 애플리케이션 서버로 전달합니다. |
| 113 | +4. Node.js 서버가 데이터베이스에서 사용자 프로필 데이터를 가져와 HTML 페이지를 생성합니다. |
| 114 | +5. 생성된 HTML 페이지를 Nginx 서버를 통해 클라이언트에 응답합니다. |
| 115 | +6. 클라이언트 웹 브라우저가 HTML 페이지를 렌더링하여 사용자에게 표시합니다. |
| 116 | +``` |
| 117 | + |
| 118 | +## 결론 |
| 119 | +웹 서버, 웹 애플리케이션 서버, 클라이언트는 웹 애플리케이션의 핵심 구성 요소입니다. 이들은 서로 상호작용하여 사용자가 입력한 요청을 처리하고, 웹 페이지를 제공하는 역할을 합니다. 각 구성 요소의 역할과 동작 원리를 이해하면 웹 애플리케이션의 작동 방식을 더 잘 이해할 수 있습니다. |
| 120 | + |
| 121 | +## 추가 학습 자료 |
| 122 | +- [MDN Web Docs - Client-Server overview](https://developer.mozilla.org/en-US/docs/Learn/Server-side/First_steps/Client-Server_overview) |
| 123 | +- [Apache HTTP Server Documentation](https://httpd.apache.org/docs/) |
| 124 | +- [Nginx Documentation](https://nginx.org/en/docs/) |
| 125 | +- [Node.js Documentation](https://nodejs.org/en/docs/) |
| 126 | +- [Django Documentation](https://docs.djangoproject.com/) |
| 127 | +- [Spring Boot Documentation](https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/) |
| 128 | +- [ASP.NET Core Documentation](https://learn.microsoft.com/ko-kr/aspnet/core/introduction-to-aspnet-core?view=aspnetcore-8.0) |
| 129 | + |
| 130 | +--- |
| 131 | +## [다음](./01_02_URI_URL.md) |
| 132 | + |
0 commit comments