06주차_참고 ‐ 웹서버 - movie-01/SmartDevice GitHub Wiki

🌐 웹서버(Web Server)란?

웹서버는 **클라이언트(브라우저 등)**로부터의 요청을 받아, 웹페이지나 데이터 등을 응답해주는 소프트웨어 또는 시스템을 말한다. 일반적으로 HTTP 또는 HTTPS 프로토콜을 사용하며, 웹 개발과 IoT 시스템에서 핵심적인 역할을 수행한다.


🔁 웹서버의 기본 동작 구조

  1. **클라이언트(예: 웹 브라우저)**가 HTTP 요청을 보냄
  2. 웹서버는 해당 요청을 수신하고 적절한 처리를 수행
  3. 처리 결과(HTML, JSON, 이미지 등)를 HTTP 응답으로 클라이언트에 전송
  4. 클라이언트는 이를 해석하여 사용자에게 출력
[클라이언트] → HTTP 요청 → [웹서버] → 처리 → HTTP 응답 → [클라이언트]

🧑‍💻 클라이언트와 서버의 관계란?

🔗 기본 개념

  • 클라이언트(Client): 정보를 요청하는 쪽

  • 서버(Server): 요청을 받고, 그에 맞는 데이터를 응답하는 쪽

두 시스템은 일반적으로 HTTP(웹 통신), TCP/IP(저수준 통신) 등을 통해 요청(Request) ↔ 응답(Response) 구조로 상호작용.

[클라이언트] → 요청(Request) → [서버]
[서버]       → 응답(Response) → [클라이언트]

☕️ 일상 비유: "카페 주문 시스템"

역할 네트워크 구조 카페 비유
클라이언트 요청자 손님
서버 응답자 바리스타 또는 카운터 직원
요청(Request) 데이터 요청 메뉴 주문하기 ("아메리카노 주세요")
응답(Response) 요청에 대한 처리 결과 주문한 커피를 받아오기 ("아메리카노 나왔습니다")
프로토콜 의사소통 방식 메뉴판과 대화, 지불 방식 등

✅ 정리

  • 클라이언트는 요청을 보내는 쪽

  • 서버는 요청을 처리하고 응답하는 쪽

  • 요청과 응답은 항상 일방향이 아닌 상호작용 형태로 이루어짐

  • 일상생활의 주문-응답 구조로 쉽게 이해할 수 있음


💡 웹서버의 핵심 요소

구성 요소 설명
요청(Request) 클라이언트가 서버에 보내는 메시지 (예: GET, POST 등)
응답(Response) 서버가 클라이언트에 보내는 데이터 (HTML, JSON 등)
포트(Port) 기본적으로 HTTP는 80, HTTPS는 443번 포트를 사용
라우팅(Routing) 요청 URL에 따라 서로 다른 처리를 수행하는 기능
정적/동적 페이지 HTML 파일 그대로 응답하는 것과, 서버에서 처리 후 응답하는 것

📦 ESP32와 웹서버

ESP32는 경량 웹서버 기능을 내장하고 있어, 별도의 서버 없이도 웹페이지를 제공할 수 있다. 주로 다음과 같은 용도로 활용된다:

  • 📋 센서 데이터 실시간 표시
  • 🎛️ 디바이스 제어용 웹 UI
  • 📡 로컬 네트워크 기반 설정 페이지 제공

✅ 예제 코드 (Arduino 기반)

#include <WiFi.h>
#include <WebServer.h>

const char* ssid = "ESP32_AP";
const char* password = "12345678";

WebServer server(80);

void handleRoot() {
  server.send(200, "text/html", "<h1>Hello from ESP32</h1>");
}

void setup() {
  WiFi.softAP(ssid, password);
  server.on("/", handleRoot);
  server.begin();
}

void loop() {
  server.handleClient();
}

🧠 요약 정리

  • 웹서버는 클라이언트 요청에 웹페이지나 데이터를 반환하는 통신 중개자 역할
  • HTTP 기반으로 작동하며, 요청/응답 구조로 동작
  • ESP32와 같은 임베디드 디바이스에서도 웹서버를 구축하여 사용자와 상호작용 가능
⚠️ **GitHub.com Fallback** ⚠️