imhamburger 님의 블로그

도커(Docker) - 서버 이해하기 본문

도커(Docker)

도커(Docker) - 서버 이해하기

imhamburger 2024. 7. 2. 12:37

이번엔 서버가 무엇인지 알아보자.

 

서버는 네트워크를 통해 요청을 받은 데이터를 보내주는 컴퓨터 시스템이다.

웹페이지를 보여주게 하는 웹서버, 데이터 관리를 해주는 데이터베이스 서버, 파일을 저장하고 관리해주는 파일 서버, 전자메일을 송수신하고 저장하는 메일서버 등 종류가 다양하다.

 

우리가 자주보는 네이버 메인페이지를 예를 들어보자.

크롬에 naver.com를 입력하면 모니터에 짜-잔 하고 네이버 페이지가 보여진다. 하지만 이는 내가 이용중인 웹브라우저(크롬같은)가 네이버 서버에 요청하고 네이버 서버는 어딘가에 저장해놓은 메인페이지의 html 소스를 웹브라우저에 보내줌으로써 가능해진 것이다.

 

그럼 서버는 내 요청을 어떻게 받아서 처리하는거지?

앞서 <네트워크 이해하기>에서 서버를 잠깐 설명하였다. 서버는 네트워크 환경을 통해 요청을 받지만 IP주소만으로는 움직일 수 없다.

네트워크 환경 안에서 포트번호를 확인해야 어떤 서버로 보내는 요청인지 식별할 수 있다. 예를들어, 택배를 보내려는데 아파트 동만 알고 호수를 모르면 배송을 할 수 없듯이 포트번호가 호수 라고 생각하면 쉬울 것 같다. 자주 사용되는 포트 번호는 다음과 같다.

번호 프로토콜 통신 프로토콜 설명
443 HTTPS TCP 웹 서버 접속(SSL)
110 POP3 TCP 메일 읽기
25 SMTP TCP 메일 서버간 메일 전송
22 SSH TCP 컴퓨터 원격 로그인
53 DNS UDP DNS 질의
20 FTP TCP 데이터 전송

 

여기서 프로토콜이란, 컴퓨터들끼리 서로 이해할 수 있는 '공통의 언어'를 말한다.

컴퓨터는 모든 입력을 0과 1로만 이루어진 디지털 언어만 사용한다. 해석하는데 서로 다른 규칙이 있다면, 당연히 다양한 제조사의 컴퓨터들이 위 그림처럼 데이터를 해석하지 못하는 상황이 나타난다. 이를 해결하기 위해 표준화된 통신 규칙, 즉 프로토콜이 필요했다.

 

여기서 주의해야할 점!

그럼 443번은 무조건 HTTPS의 포트번호인가?

그것은 아니다. 위 번호는 기본 포트번호로 포트번호를 별도로 지정하지 않았을 경우에 해당 포트번호를 사용한다는 의미이다. 직접 지정하면 다른 포트번호를 쓸 수 있다. 

 

그럼 위에서는 무조건 포트번호가 필요하다 했는데 지정을 안했는데도 어떻게 접속이 가능한걸까?

그 이유는 우리가 사용하는 웹브라우저는 포트번호를 적어주지 않아도 해당 프로토콜의 기본 포트를 요청하기 때문이다. (만약 프로토콜이 없었다면, 컴퓨터는 다른 컴퓨터에 요청하는데 오류가 있을 것이다.)

 

마지막으로 내가 프랑스에 있는 친구에게 이메일을 보낸다면 서버에서는 어떤 일이 일어날까?

나는 naver 이메일을 이용하고 친구는 gmail 이메일을 이용한다고 가정해보자.

naver 메일을 이용하여 이메일을 작성하고 보내면 naver 메일 서버는 SMTP 프로토콜 + DNS(Domain Name System) 프로토콜을 통해 친구의 메일 서버 주소를 확인하고 gmail 메일 서버로 전송한다. gmail 메일 서버는 IMAP 프로토콜을 사용하여 메세지를 받고 저장한다.

 

갑자기 너무 복잡해진 느낌이지만, 서버가 무엇을 하는지 그리고 어떻게 작동하는지 정도는 알 것 같다.