본문 바로가기
Study/그림으로 이해하는 서버 구조와 기술

[그림으로 이해하는 서버 구조와 기술] 4. 외부용 서버를 알아보자

by hxxyeoniii 2025. 4. 7.

1. 웹 서버

: 웹 브라우저의 요청에 따라 html, 이미지 등의 정보를 제공하는 SW 또는 그 기능을 탑재한 컴퓨터

: 웹 서버 중 가장 큰 점유율을 차지하는 SW는 NGINX(2021년 12월 기준) 

: 이외에 아파치 HTTP 서버, 마이크로소프트 Internet Information Server 등이 있음


2. 웹 서버 통신

HTTP 요청

1. 요청 라인

   > 메서드 이름, 대상 리소스의 URI, HTTP 버전

   > GET, POST 메서드 등

 

2. 헤더 부분

   > 클라이언트 수용 가능 유형 등 정보

 

3. 바디 부분

   > 서버에 보내는 정보

 

* 현재는 대부분 SSL/TLS를 이용하는 HTTPS 프로토콜 사용

 

 

 

HTTP 응답

1. 상태 라인

   > 요청 처리 결과를 나타내느 3자리 숫자

   > 100~199 : 정보 제공

   > 200~299 : 성공

   > 300~399 : 리다이렉트

   > 400~499 : 클라이언트 오류

   > 500~599 : 서버 오류

 

2. 헤더 부분

   > 서버에서 보낸 정보 유형, 콘텐츠 크기, 갱신 일시 등

 

3. 바디 부분

   > 클라이언트가 지정한 URL 콘텐츠 정보


3. 웹 애플리케이션 서버

웹 시스템의 사용자 인터페이스를 이용해 데이터베이스로 관리되는 데이터를 처리하는 서버

 

예시

1) PHP 

: 오픈 소스 소프트웨어

: HTML 파일에 프로그램을 삽입하는 형태

: 웹 서버 모듈로 작동해 웹 서버 소프트웨어와 조합해 웹 애플리케이션 서버로 보는 경우가 많음

 

2) 톰캣

: 자바로 애플리케이션 서버 구축


4. 3계층 클라이언트 서버 시스템

1. 표현 계층

: 사용자 GUI 담당 -> 웹 서버

 

2. 응용 계층

: 업무 처리에 의존하는 데이터 가공 -> 웹 애플리케이션 서버

 

3. 데이터 계층

: 데이터베이스 처리 -> DB 서버

 

=> 각 기능을 독립적으로 관리할 수 있는 것이 가장 큰 장점


5. DNS와 이름 해석

웹 서버 통신은 URL(도메인)을 이용한다. -> DNS 서버가 이름을 해석해 URL을 IP 주소로 변환해주는 것

 

DNS(Domain Name Service)

: URL이나 이메일 주소를 IP 주소로 변환하는 메커니즘이나 서버

: DNS 서버에 인터넷상 모든 정보가 설정되어 있는 것은 아니기에 모르는 IP 주소가 있을 수 있음

: 모르는 IP 주소는 gilbut.co.kr을 관리하는 다른 DNS 서버에 문의해 이름 해석

 

 

이름 해석 메커니즘

이름을 해석할 수 없던 조직 내 DNS 서버는 자신이 클라이언트가 되어 최상위 도메인을 관리하는 DNS 서버(= 루트 DNS)에 문의


6. DNS 서버의 종류와 소프트웨어

1. DNS 서버에는 정보 그 자체가 있는 DNS 콘텐츠 서버질의한 정보의 메모만 있는 DNS 캐시 서버가 있음

2. DNS 서비스를 정지하면 사용자 생활에 큰 영향을 주므로 기본 서버와 보조 서버 두 대로 구성할 때가 많음

 

DNS 서버를 실현하는 SW 예

1) BIND

: 가장 많은 점유율

: 리눅스 계열 OS에서 표준으로 채택됨

 

2) PowerDNS

: GUI로 관리할 수 있는 것이 특징 

 

3) NSD

: 위 2개의 소프트웨어에 비해 속도가 빠르지만 업데이트나 Q&A 서비스의 해외 지원이 약한 편

 

=> DNS 서버는 직접 구축하지 않고 인터넷 서비스 제공자 등이 제공하는 DNS 서비스를 이용할 때도 많음


7. 메일 서버

일반적으로 이메일 송수신은 송신(SMTP)과 수신(POP3)을 나눠 생각해야 함

 

메일이 전달되는 과정

 

<이메일을 보내는 사람>

1. 이메일을 작성하고 본문, 목적지 주소 설정

2. 전송에 필요한 정보가 이메일 소프트웨어에서 설정됨(보내는 사람 정보는 대부분 메일 소프트웨어 설정으로 자동 삽입)

3. 전송

 

<메일 서버>

4. 목적지 주소를 보고 목적지 도메인에서 관리되는 메일 서버 파악(DNS에 의한 이름 해석 + MX 레코드 화깅ㄴ)

5. 이메일이 목적지 도메인에서 관리되는 메일 서버에 도착

6. 수신자가 원하는 타이밍에 이메일 수신

 

 

 

SMTP

: 메일 클라이언트에서 메일 서버로 이메일을 보내거나 메일 서버 간 이메일을 전송할 때 사용하는 프로토콜

 

POP3

: 클라이언트가 서버에서 이메일을 받을 때 사용되는 프로토콜

 

MX 레코드

: DNS 서버에서 정의되는 도메인 정보 중 하나

: 도메인으로 오는 이메일을 어떤 메일 서버로 배달해야 하는지 지정하는 레코드

 

 

 

메일 주소 구성

대체로 "사용자 이름@도메인 이름"으로 구성

user1@gilbut.co.kr -> 사실은, user1@mail.gilbut.co.kr

-> 호스트 이름인 mail을 생략할 수 있는 이유는 DNS 서버의 MX 레코드를 사용해 대상 도메인의 메일 서버 이름을 가져올 수 있기 때문

 

 

 

이메일을 수신하는 프로토콜 : POP & IMAP

이메일을 수신하는 프로토콜에는 앞서 설명한 POP3 외에도 IMAP이 있음

 

1. POP(Post Office Protocol)

: 직역하면 우체국 프로토콜

: 메일 스풀이라는 메일 서버 영역에 이메일을 저장해두고 사용자는 원하는 시간에 메일 스풀에서 이메일을 내려받음

: 내려받은 데이터는 메일 스풀에서 삭제됨

 

2. IMAP(Internet Message Access Protocol)

: 인터넷 메일에서 사용됨

: POP은 이메일을 내려받아야 하는 반면, IMAP은 메일 서버에 이메일을 저장해 둔 채 열람 가능


FTP 서버

File Transfer Protocol, 파일 전송을 목적으로 하는 서비스

ex) 리눅스 계열의 vsftpd 소프트웨어, 윈도우 계열의 인터넷 정보 서비스(IIS) 등

 

클라이언트에서 FTP 서버를 조작하는 방법

1. 커멘드라인 사용 : 명령어를 통해 원하는 동작을 실행해 전문 지식이 필요하고 다루기 어려움

2. 클라이언트 소프트웨어 사용 : FFFTP, WinSCP 등

 

FTP 서버 통신

: TCP 프로토콜의 일종이지만, 다른 프로토콜과 달리 포트 2개 사용

: 제어용 -> TCP 21번 포트

: 전송용 -> TCP 20번 포트

 

1. 클라이언트가 21번 포트에 접속해 제어용 커넥션 시작

2. 클라이언트가 전송용 커넥션을 위한 포트를 준비하고 그 번호를 서버에 전달

3. 클라이언트는 서버에 파일 전송 요청

4. 서버는 2번에서 전달밭은 클라이언트의 포트에 접속해 전송용 커넥션 시작

   > 액티브 모드 : 서버에서 클라이언트로 연결을 거는 방식 -> NAPT등 IP 주소, 포트 번호가 변경되는 라우터를 경유하는 경우 동작하지 않을 수 있음

   > 패시브 모드 : 서버가 열어놓은 포트를 통해, 클라이언트가 연결을 거는 방식

5. 파일 전송 시작