본문 바로가기
CS/Network

[Network] 07. 응용 계층 : 애플리케이션에 데이터 전송하기

by 원만사 2021. 12. 6.
반응형

응용 계층의 역할

 OSI 모델의 응용 계층의 역할에 대해서 알아보자.

 

응용 계층의 역할

 애플리케이션은 서비스를 요청하는 측인 클라이언트와 서비스를 제공하는 측인 서버로 나누어 생각할 수 있다. 웹 브라우저나 메일 프로그램은 클라이언트에 해당하고, 웹 서버 프로그램이나 메일 서버 프로그램은 서버에 해당한다. 이러한 애플리케이션은 응용 계층에서 동작한다(해당 글에서 응용 계층은 5계층인 세션 계층과 6계층인 표현 계층을 포함하는 것으로 생각한다).

 

 응용 계층에서는 사용자 측(클라이언트)의 요청을 전달하기 위해 통신 대상(서버 등)이 이해할 수 있는 메시지(데이터)로 변환하고 전송 계층으로 전달하는 역할을 한다. 클라이언트 측 애플리케이션이 서버 측 애플리케이션과 통신하려면 응용 계층의 프로토콜을 사용해야 한다.

 

 아래의 표는 응용 계층에서 사용하는 대표적인 프로토콜이다. DNS는 네트워크에서 컴퓨터나 네트워크 장비에 붙여진 이름을 기반으로 IP 주소를 알아내기 위해 사용된다.

프로토콜 내용
HTTP 웹 사이트 접속
DNS 이름 해석
FTP 파일 전송
SMTP 메일 송신
POP3 메일 수신

 

 아래의 그림은 각 계층의 프로토콜과 기술을 정리한 내용이다.

OSI 모델의 계층에서 사용되는 프로토콜과 기술

 

- 서비스를 요청하는 측을 클라이언트, 서비스를 제공하는 측을 서버라고 한다.
- 클라이언트에서 사용하는 애플리케이션과 서버에서 사용하는 서버 프로그램 간의 통신은 응용 계층의 프로토콜을 사용한다.
- 응용 계층의 주요 프로토콜에는 HTTP, FTP, DNS, SMTP, POP3 등이 있다.

 

웹 서버의 구조(웹 사이트 접속)

 응용 계층에 존재하는 웹 페이지를 접속하기 위한 프로토콜을 사용하여 웹 페이지에 접속하는 구조에 대해 알아보자.

 

HTTP란?

 클라이언트(웹 브라우저)는 웹 사이트를 보기 위해 서버(웹 서버 프로그램)의 80번 포트를 사용하여 HTTP 통신을 한다. 아래 그림과 같이 클라이언트에서 HTTP 요청(request)을 보내고 서버에서 HTTP 응답(response)을 반환한다.

HTTP 요청과 HTTP 응답

 

 클라이언트가 데이터를 요청할 때는 "GET:이라고 하는 요청 정보, 파일 이름, 버전 등을 서버에 전송한다. 그러면 서버는 응답으로 요청을 정상적으로 처리했다는 "OK"라는 정보를 반환하고 index.html을 클라이언트에게 보낸다.

 

 예전의 HTTP/1.0 버전에서는 요청을 보낼 때마다 연결했다 끊는 작업을 반복했다. 그러다 HTTP/1.1 버전에서는 keepalive라는 기능이 추가되었다. keepalive는 연결을 한 번 수립하면 데이터 교환을 마칠 때까지 유지하고, 데이터 교환을 모두 끝내면 연결을 끊는 구조다. keepalive는 요청의 순서대로 처리하는 특징이 있어 이전 요청을 처리하는 데 시간이 길어지면 다음 요청에 대한 처리가 늦어지는 단점이 있다.

HTTP/1.1의 연결

 

 HTTP/2 버전에서는 HTTP/1.1 버전의 이러한 단점을 보완하여 빠르게 콘텐츠를 표시할 수 있도록 했다. HTTP/2 버전은 요청을 보낸 순서대로 응답을 반환하지 않아도 된다. 그렇기 때문에 콘텐츠를 빠르게 표시할 수 있다.

 아래 그림과 같이 요청에 대한 응답을 순서대로 보내지 않아도 된다.

 

HTTP/2의 연결

- 일반적으로 웹 브라우저는 웹 서버(웹 서버 프로그램)의 80번 포트를 통해 HTTP 통신을 한다.
- 웹 브라우저에서는 HTTP 요청을 보내고, 웹 서버에서는 HTTP 응답을 반환한다.
- HTTP/1.1 버전은 keepalive 기능이 있어서 데이터를 교환하는 동안에는 연결을 유지하고 데이터 교환이 끝나면 연결을 끊는다.
- HTTP/2 버전은 요청을 보낸 순서대로 응답을 반환하지 않아도 된다.

DNS 서버의 구조(이름 해석)

 응용 계층에는 이름 해석을 통해 도메인 이름을 IP 주소로 변환하는 역할을 하는 DNS가 있다. DNS의 구조에 대해 알아보자.

 

도메인 이름이란?

 DNS는 URL을 IP 주소로 변환하는 서비스(시스템)이다. 216.58.220.110와 같은 숫자로 이루어진 IP 주소는 사람들이 쉽게 기억하기 어렵다. 이러한 이유로 IP 주소가 아닌 https://google.com과 같은 주소를 사용하여 접속하도록 돕는 것을 DNS의 이름 해석(name resolution)이라고 한다. 해당 주소로 접속하면 DNS 서버가 이 웹 사이트 서버의 IP 주소를 알려주는 것이다. 이를 '이름 해석'이라고 한다.

 

 www.google.com과 같이 컴퓨터나 네트워크를 식별하기 위해 붙여진 이름을 도메인 이름이라고 하고, 도메인 이름 앞에 있는 www는 호스트 이름(서버 이름)이라고 한다.

 

 컴퓨터의 웹 브라우저가 www.google.com에 접속 하는 경우를 예로 들어 DNS 서버와의 통신 흐름을 살펴보자. 컴퓨터와 DNS 서버 사이에서는 다음 (1)~(3)과 같이 통신의 교환이 일어난다.

컴퓨터와 DNS 서버간에 일어나는 IP 주소 교환

  1. 컴퓨터에서 '이 도메인 이름의 IP 주소'를 요청한다.
  2. DNS 서버는 해당 요청에 해당하는 도메인 이름의 IP 주소를 알려 준다.
  3. 컴퓨터는 IP 주소로 서버에 접속한다.

 위 그림과 같이 먼저 DNS 서버에 요청하여 IP 주소를 확인하고 웹 서버에 접속한다. 하지만 요청한 첫 번째 DNS 서버가 도메인의 IP 주소를 모르는 경우도 있다. 그런 경우에는 DNS 서버 1이 DNS 서버 2에 요청한다. DNS 서버는 전 세계에 흩어져 있고 모두 계층적으로 연결되어 있다. 

 

- DNS 서버는 '이름 해석'을 사용하여 도메인 이름을 IP 주소로 변환한다.
- URL에는 호스트 이름과 도메인 이름이 있는데, 예를 들어 www.google.com에서 google.com은 도메인 이름이고 www는 호스트 이름이다.
- 요청받은 DNS 서버가 해당 도메인 이름의 IP 주소를 모르는 경우에는 다른 DNS 서버에 질의한다.
- DNS 서버는 전 세계에 흩어져 있으므로 연계하면서 동작한다.

메일 서버의 구조(SMTP와 POP3)

 응용 계층의 메일을 송수신하기 위한 프로토콜의 구조에 대해 알아보자.

 

메일의 송수신 구조

 메일을 보내는 데 사용되는 프로토콜은 SMTP이고, 메일을 받는 데 사용되는 프로토콜은 POP3이다. SMTP는 포트 번호로 25번을 사용하고 POP3는 110번을 사용한다.

 아래 그림과 같이 SMTP와 POP3를 사용하여 메일을 주고 받을 수 있다. SMTP는 메일 서버 간의 메일 전송에도 사용된다.

SMTP와 POP3를 사용한 메일 송수신

  1. SMTP를 사용하여 컴퓨터 1에서 메일 서버 1로 메일을 보낸다.
  2. SMTP를 사용하여 메일 서버 1에서 메일 서버 2로 메일을 보낸다.
  3. POP3를 사용하여 메일 서버 2에서 컴퓨터 2로 메일 데이터를 보낸다.

 

SMTP에 의한 메일 송신과 메일 전송

 컴퓨터 1의 메일 프로그램은 SMTp를 사용하여 메일 서버 1로 메일을 보낸다. 동작 흐름은 아래 그림과 같다.

컴퓨터와 메일 서버 간에 일어나는 메일 교환

 메일이 메일 서버 1로 전송되고 나면 다시 SMTP를 사용하여 메일 서버 1에서 메일 서버 2로 메일을 전송한다.

 

POP3에 의한 메일 수신

 메일 서버에는 메일 박스라고 하는 메일을 보관해 주는 기능이 있다. 메일 서버 2는 POP3를 사용하여 메일 서버 2의 메일 박스에서 메일을 가져와서 컴퓨터 2로 전송한다.

 

 메일 서버 2에 컴퓨터 1의 메일이 도착하면 컴퓨터 2는 메일 서버 2의 메일 박스에 있는 메일을 받아 가야 하지만 메일을 수신할 때는 사용자 이름과 비밀번호를 이용한 사용자 인증이 필요하다.

메일 서버와 컴퓨터 간에 일어나는 메일 교환

  1. 세션을 시작한다.
  2. 컴퓨터 2에서 받는 사람의 사용자 이름을 통지하고 메일 서버 2에 'OK'라는 확인 응답을 반환한다.
  3. 컴퓨터 2에서 수신자의 비밀번호를 통지하고 메일 서버 2에 '비밀번호 확인'이라는 확인 응답을 반환한다.
  4. 컴퓨터 2에서 자신의 메일이 있는지 확인하고 메일 서버 2는 '있음'이라는 확인 응답을 반환한다.
  5. 컴퓨터 2에서 메일 박스에 보관된 이메일을 전송받는다.
  6. 세션을 종료한다.
- 메일 송신은 SMTP (프로토콜) 25번 포트를 사용한다.
- 메일 수신은 POP3 (프로토콜) 110번 포트를 사용한다.
- 메일 서버 간에도 SMTP를 사용하여 메일을 전송한다.
- 메일 서버에는 메일 박스가 있는데 여기에 메일이 보관된다.

 

참고

- 「모두의 네트워크」 - 미즈구치 카츠야

 

반응형

댓글