06주차_참고 ‐ 웹서버 - movie-01/SmartDevice GitHub Wiki
웹서버는 **클라이언트(브라우저 등)**로부터의 요청을 받아, 웹페이지나 데이터 등을 응답해주는 소프트웨어 또는 시스템을 말한다. 일반적으로 HTTP 또는 HTTPS 프로토콜을 사용하며, 웹 개발과 IoT 시스템에서 핵심적인 역할을 수행한다.
- **클라이언트(예: 웹 브라우저)**가 HTTP 요청을 보냄
- 웹서버는 해당 요청을 수신하고 적절한 처리를 수행
- 처리 결과(HTML, JSON, 이미지 등)를 HTTP 응답으로 클라이언트에 전송
- 클라이언트는 이를 해석하여 사용자에게 출력
[클라이언트] → 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는 경량 웹서버 기능을 내장하고 있어, 별도의 서버 없이도 웹페이지를 제공할 수 있다. 주로 다음과 같은 용도로 활용된다:
- 📋 센서 데이터 실시간 표시
- 🎛️ 디바이스 제어용 웹 UI
- 📡 로컬 네트워크 기반 설정 페이지 제공
#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와 같은 임베디드 디바이스에서도 웹서버를 구축하여 사용자와 상호작용 가능