**hyperskill - What is an HTTP server 영어 원문
해석은 쉬워서 좋은데, 기초를 알려주느라 글이 길어 해석이 조금 힘들었다..
웹 서버, 혹은 HTTP 서버는 클라이언트의 요청들을 처리할 수 있으며,
클라이언트에게 응답 반환 처리할 수 있는 컴퓨터의 프로그램입니다.
서버가 시작 될 때, 서버는 언제나 요청을 기다리며,
요청된 정보를 반환함으로서 각각의 요청을 응답합니다.
언제든 당신이 웹사이트를 방문 할 때,
당신은 World Wide Web(WWW) 을 사용하여 HTTP 프로토콜을 통해 요청을 보냅니다.
그리고 나서 서버는 response(응답 : HTTP-response) 를 반환합니다.
이는 기본적인 request/response(요청/응답) 모델입니다.
이 모델은 전체적인 인터넷을 기반으로 합니다.
대부분의 웹 어플리케이션들과 웹사이트들은 이 모델로 작동됩니다.
HTTP 서버의 주요 기능은 저장, 처리, 그리고 웹 페이지 클라이언트에게 전달하는 것 입니다.
What is an HTTP server? - HTTP 서버는 무엇인가?
HTTP server 는 Client-Server Model 의 일부입니다.
대부분의 웹 어플리케이션과 웹사이트는 이러한 모델을 사용합니다.
HTTP 서버의 주요한 임무는 HTML, CSS, JavaScript를 담은 텍스트 문서를 전송하는 것 입니다.
하나의 서버는 다중 클라이언트를 제공할 수 있습니다.
그리고 클라이언트들은 주로,
HTTP 응답과 웹 어플리케이션 파일을 읽을 수 있는 브라우저입니다. : (FireFox, Safari, Google Chrome) 등
flowchart TB
Server(("Server"))
Client1("Client");
Client2("Client");
Client3("Client");
Server -- HTTP-Response --> Client1
Server -- HTTP-Response --> Client2
Server -- HTTP-Response --> Client3
Client1 -- HTTP-Request --> Server
Client2 -- HTTP-Request --> Server
Client3 -- HTTP-Request --> Server
이는 클라이언트-서버 아키텍쳐입니다.
당신이 브라우저의 주소창에 도메인 이름을 입력한다면,
해당 도메인 이름에 연결하는 서버에 요청을 보냅니다.
그리고 나서 HTTP server 은 HTTP request 를 처리하고, HTTP response를 반환합니다.
주로, 응답(response)은 헤더와 요청에 대한 body(HTML document) 를 포함합니다.
따라서, 당신이 응답을 받을 때, 들어가고 싶은 사이트를 볼 수 있습니다.
서버 는 static(정적), dynamic(동적), 혹은 hybrid(둘 다 ) 웹 페이지들을 저장합니다.
정적인 페이지는 이미 구축되어 있습니다.
클라이언트가 페이지를 요청 할 때, 서버는 완성되어 있는, 이미 구축된 문서를 반환합니다.
동적인 페이지는 미리 구축된 부분 중, 서버가 클라이언트에게 보낼 수 있는 페이지를 가지고 있습니다.
그리고 나서, 클라이언트 사이드의 JavaScript가,
REST API 서버와 같은 서버로 추가적인 정보를 요청함으로서 웹 페이지의 또다른 부분들을 생성합니다.
하이브리드 페이지는 클라이언트가 페이지를 요청하는 동안,
서버 사이드에서는 페이지를 렌더링합니다.
이러한 상황이 의미하는 것은,
서버가 사용하기에 준비된 웹 페이지들을 가지고 있지 않다는 겁니다.
하이브리드 는, 요청을 처리하고,
클라이언트의 요청에 기반하여 페이지를 구축할 수 있는 모든 필요 데이터를 수집할 필요가 있습니다.
Proxy - 프록시 서버
HTTP 서버들은 요청에 대해 반응하는 것 뿐만 아니라,
다른 서버들에 대해 redirect(리다이렉트) 하는 요청 또한 가능합니다.
이러한 서버들은 proxy(프록시) 서버로서 알려져 있습니다.
프록시 서버 는 하나의 도메인 이름 뒤에 여러개의 웹 서버들을 가지고 있거나,
요청들을 올바른 서버로 리다이렉트 하고 싶을 때, 유익할 겁니다.
예를 들어, 당신이 주요 웹 서버에 사이트를 가지고 있습니다.
또한 당신은 또 다른 서버에 당신의 사이트에 대한 어드민 패널 (관리자 패널)을 가지고 있습니다.
당신은 콘텐츠(내용)을 채울 수 있으며, 어드민 패널 을 사용하여 사이트의 무언가를 수정 할 수 있습니다.
프록시 서버들은 도메인 이름에 따라,
어떤 서버가 클라이언트의 요청들을 받을 것인지 조정 할 수 있습니다.
flowchart LR
Client[["Client\n 클라이언트"]]
Proxy-Server{"Proxy Server\n 프록시 서버"}
Server1("Server for main site\n 주요 사이트에 대한 서버")
Server2("Server for admin panel of your site\n 당신의 사이트에 대한 관리자 패널")
Client -- www.yoursite.com\n www.admin.yoursite.com --> Proxy-Server
Proxy-Server -- www.yoursite.com --> Server1
Proxy-Server -- www.admin.yoursite.com --> Server2
클라이언트는 서로 다른 두 개의 도메인 이름들을 통해 요청을 보낼 수 있습니다.
하지만 이는 Proxy 뒤의 서버로부터 응답을 받습니다.
Load balancing - 로드 밸런싱
HTTP 서버에서 Proxy는, load balancer(로드 밸런서)로서 작동 할 수 있습니다.
HTTP 서버는 마지막 단의 서버에서 요청을 로드하는 것을 줄이기 위해,
클라이언트의 요청들을 분리하여 전송 할 수 있습니다.
따라서 만약에, 웹 서비스가 많은 클라이언트들을 가지고 있다면,
로드 밸런싱 서버를 배치하여, 클라이언트 요청들을 처리하는 서버들에 있어,
요청을 로드하는 것을 줄이는 데 탁월합니다.
로드 밸런싱 서버를 배치하여, 요청을 골고루 분배하여,
일부 서버의 과잉 처리를 방지한다는 의미이다.
HTTP 서버들은 유연한 밸런싱을 위한,
밸런스 구성을 설정하기 위한 관리자를 제공합니다.
Encoding - 인코딩
당신의 요청을 서버로 전송 할 때, 서버에 도달하기 전에, 요청은 주로 많은 노드를 통과합니다.
그리고 이러한 모든 노드들은 당신이 보낸 데이터를 볼 수 있습니다.
또한 이러한 노드들은 서버의 응답도 볼 수 있습니다.
따라서, HTTP 서버들은 certificates(인증서)를 사용하여 연결을 보안 할 수 있습니다.
만약 당신이 도메인 이름의 왼쪽에 있는 브라우저 주소창을 본다면,
"lock" 심볼을 볼 수 있습니다.
당신이 이를 클릭 할 때, 당신은 연결이 보안적인지 아닌지 볼 수 있습니다.
보안 연결이 의미하는 것은, 당신이 서버에 보내고 받는 모든 데이터가 인코딩(encoded) 되어 있으며,
당신의 데이터를 누구도 볼 수 없음을 의미합니다.
Secure HTTP connection(보안 HTTP 연결)은 HTTPS 라고 부릅니다.
HTTPS 프로토콜은 HTTP 프로토콜로부터 완벽히 다르지 않습니다.
차이점은, HTTPS 는 TLS, SSL 전송 매커니즘에 의해 작동됩니다.
TLS (Transport Layer Security) 는 SSL (Secure Socket Layer) 을 기반으로 합니다.
TLS 는 진실된 보안을 생성하는 규칙들과 지침들을 제공하며,
인터넷을 넘어 데이터를 안전하게 전송합니다.
당신이 전송하고 받는 모든 데이터는 SSL 증명서(인증서)로 인해 인코딩됩니다.
인증서(Certificates) 는 특별한 조직이나 인증 기관드렝 의해 발행됩니다.
이들은 인증서에 그들의 디지털 시그니처를 표시합니다.
브라우저는 인증서 사인을 볼 수 있으며, 인증서가 유효하다는 것을 증명할 수 있습니다.
이는 인터넷의 가장 흔한 보안 스키마 중 하나입니다.
당신이 서버로 무언가를 전송 할 때, 브라우저는 인증서를 먼저 확인하고,
그리고 나서 당신의 데이터를 "public key"(공개키) 로 인코딩합니다.
그리고 서버는 당신이 보낸 데이터를 디코딩하기 위해 필요한 "private key"(비밀키) 를 가지고 있습니다.
서버가 응답을 전송 할 때, 이 또한 공개키 로 인코딩 됩니다.
그러곤 당신의 브라우저가 비밀키를 사용하여 이러한 응답을 디코드 할 수 있습니다.
더 보안적이기 위해서, HTTP 서버는 당신의 인증을 요구합니다.
인증을 위해, 당신의 요청 헤더는 "login", "password" 를 담고 있는 인증 파리미터를 반드시 가져야 합니다.
Compressing - 압축
누구도 느린 웹 페이지 다운로드 속도를 사랑하지 않습니다.
HTTP 서버들은 전송할 데이터를 압축 할 수 있습니다.
이러한 과정은 마치,
당신이 문서를 가진 폴더를 "archive"(아카이브)로 압축하고,
누군가에게 이메일로 이를 전송하는 것과 비슷합니다.
서버는 클라이언트에 대한 모든 응답을 압축하고,
클라이언트(브라우저) 는 데이터 압축을 풉니다.
압축된 데이터는 압축되지 않는 데이터보다 사이즈가 낮으므로,
웹 페이지를 열기 위해 적은 용량(바이트)를 다운로드합니다.
Cookies - 쿠키
웹 서버들은 쿠키 와 같은 당신의 브라우저 데이터를 읽을 수 있습니다.
쿠키들은 사람들의 웹 브라우저를 통해, 웹사이트가 유저의 컴퓨터에 저장하는 작은 데이터 파일들입니다.
쿠키 는 웹사이트가 유저에 대한 정보를 기억하게 해주는데,
다음 방문에 유저들의 환경 설정이나 로그인 상태와 같은 것을 기억하게 해 줍니다.
쿠키 는 몇 가지 웹 어플리케이션을 사용하는 동안,
유저의 경험을 향상시키는데 도와줍니다.
예를 들어, 쿠키는 판매자/샵 이 당신의 검색 기록을 기반으로
어떤 제품을 추천 할 수 있는지 도와줍니다.
쿠키 는 잠재적으로 불안정 할 수 있는데,
쿠키는 유저의 컴퓨터에 정보를 저장하여,
웹사이트에 의해 접근되거나, 공격자(해커)들이 유저의 컴퓨터의 접근 혹은 네트워크를 얻을 수 있기 때문입니다.
만약 쿠키가 유저의 로그인 자격 증명과 같은 민감한 정보를 담고 있다면,
이 정보는 탈취되어 유저 행세를 하는 데 사용 될 수 있습니다.
게다가, 쿠키들은 인터넷에서 유저의 행동을 추적하는 데 사용 될 수 있습니다.
이러한 상황은 많은 유저들 사이에서 사생활 침해를 일으킬 수 있습니다.
몇몇 웹사이트들은 유저 환경설정에 대한 정보를 저장하는 데 쿠키 가 사용 될 것이며,
이러한 쿠키 정보는 광고 타켓팅을 위해 사용합니다.
이는 사생활 침해로 간주 될 수 있습니다.
따라서, 쿠키에 어떤 정보가 저장될지에 대해 조심해야 하는 것이 중요하며,
사생활, 보안 둘 다 유지하기 위해 정기적으로 청소하는 것이 중요합니다.
Cache - 캐시
서버들은 가장 잦은 요청들을 캐시 할 수 있습니다. : 임시 저장?
만약 당신의 최신 요청이 이전의 요청과 동일하다면,
서버는 해당 응답에 대해 저장된 복사본을 그냥 반환합니다.
또한, 서버는 당신 브라우저의 로컬 캐시 내부의 몇 가지 데이터를 저장하기 위해,
특별한 헤더를 설정 할 수 있습니다.
따라서 만약 당신의 캐시가 당신의 요청에 대해 응답을 가지고 있다면,
브라우저는 서버에 어떠한 요청도 전송하지 않습니다.
Conclusion - 결론
HTTP 서버들은 클라이언트와 또다른 서버와 소통하기 위한 풍부한 도구들을 가지고 있습니다.
HTTP 서버는 보안은 생성하고, 클라이언트와의 연결을 최적화하는 복잡한 시스템입니다.
이러한 기능은 정적 컨텐츠와 동적 웹 페이지를 저장하거나 분배하는 데 도와 줄 수 있습니다.
HTTP 서버는 인터넷의 기초이며, 소통 규칙이 내부에 있습니다.
심지어 가장 간단한 어플리케이션, 혹은 웹 페이지를 개발하는 동안,
HTTP 서버가 동작하는 것을 아는 것은 아주 좋은 도움이 될 겁니다.
모든 개발자들은 그들의 목표를 위해 기초적인 HTTP 서버를 생성하는 스킬을 가져야 합니다.
words to remember
certificates : 인증서, 증명서
issue : 발행하다
preferences : 환경 설정, 우선권, 더 좋아함, 기호물
impersonate : 가장하다, 행세하다, 역을 맡아하다**
'Hyperskill - 컴퓨터 CS 및 영어 독해 > Introduction to Docker' 카테고리의 다른 글
What is MongoDB - MongoDB 기초 및 설치 (0) | 2024.08.10 |
---|---|
NoSQL - NoSQL 데이터베이스 (1) | 2024.08.08 |
Working with file modes and permissions - 파일 모드와 권한 작업하기 (0) | 2024.08.05 |
File modes and permissions - 파일 모드와 권한 (0) | 2024.08.04 |
Getting data from net - wget, curl 사용법 (0) | 2024.08.03 |