[네트워크] 응용 계층

박성재·2021년 2월 5일
2

네트워크

목록 보기
7/10
post-thumbnail

참고: 모두의 네트워크 - 키즈구치 카츠야 저
위 책을 읽으며 공부한 내용을 정리한 포스트입니다.

배너: godori님이 만드신 배너 메이커 활용


응용 계층의 역할

응용 계층이 수행하는 역할

어플리케이션은 서비스를 요청하는 측(사용자 측)에서 사용하는 어플리케이션과 서비스를 제공하는 측의 어플리케이션으로 분류된다.

일반적으로 서비스를 요청하는 측을 클라이언트, 서비스를 제공하는 측을 서버라고 한다.

웹 브라우저나 메일 프로그램은 사용자 측에서 사용하는 어플리케이션이니 클라이언트에 속한다.
반면, 서비스를 제공하는 측인 서버에는 웹 서버 프로그램과 메일 서버 프로그램 등이 있다. 이런 어플리케이션은 응용 계층에서 동작한다.

여기서 응용 계층은 5계층의 세션 계층과 6계층의 표현 계층을 포함한다.

응용 계층(application layer, 어플리케이션 계층):

OSI 모델의 최상위 계층으로, 다양하게 존재하는 응용 환경에서 공통적으로 필요한 기능을 다룬다. 시스템 간의 응용 처리는 상호 간에 통신하면서 일련의 업무를 처리할 수 있도록 필요한 서비스 기능을 제공한다. 이메일, 파일 전송, 웹 사이트 조회 등 어플리케이션에 대한 서비스를 제공하는 계층이다.

응용 계층에서는 클라이언트의 요청을 전달하기 위해 통신 대상(서버 등)이 이해할 수 있는 메시지(데이터)로 변환하고 전송 계층으로 전달하는 역할을 한다.

또한, 클라이언트 측 어플리케이션(웹 브라우저, 메일 프로그램 등)이 서버 측 어플리케이션(웹 서버 프로그램, 메일 서버 프로그램 등)과 통신하려면 응용 계층의 프로토콜을 사용해야 한다.

웹 사이트를 볼 때는 HTTP , 파일을 전송할 때는 FTP, 메일을 보낼 때는 SMTP, 메일을 받을 때는 POP3라는 프로토콜을 사용한다.
또한 네트워크에서 컴퓨터나 네트워크 장비에 붙여진 이름을 기반으로 IP 주소를 알아내는 것을 이름 해석(name resolution)이라고 하는데, 이를 위해 DNS를 사용한다.

HTTP (HyperText Transfer Protocol):
웹 서비스에서 클라이언트(웹 브라우저)와 웹 서버 간에 정보를 주고받기 위해 사용되는 네트워크 프로토콜이다.

FTP(File Transfer Protocol, 파일 전송 프로토콜):
서버와 클라이언트 간에 파일을 전송하기 위한 프로토콜이다. 일반적으로 통신 포트는 제어 용도로는 21번을 사용하고 데이터 전송 용도로는 20번 포트를 사용한다.

SMTP(Simple Mail Transfer Protocol, 단순 메일 전송 프로토콜):
인터넷에서 메일을 송신하는 데 사용하는 프로토콜이다. 통신 포트는 일반적으로 25번을 사용한다. SMTP를 지원하는 서버를 SMTP 서버라고 한다.

POP3(Post Office Protocol version 3):
인터넷에서 메일을 수신하는 데 사용하는 프로토콜이다. 통신 포트는 일반적으로 110번을 사용한다. POP3를 지원하는 서버를 POP3 서버라고 한다.

DNS(Domain Name System, 도메인 이름 시스템):
네트워크에서 호스트 이름을 IP 주소로 변환하는 데 사용하는 시스템(서비스)이다. DNS 서비스가 동작하는 컴퓨터(서버)를 DNS 서버라고 한다.

이 외에도 다른 프로토콜들이 존재한다.

응용 계층은 각각의 어플리케이션에 대응되는 데이터를 전송하는 역할을한다. 그리고 응용 계층에서 보내려는 데이터는 하위 계층인 전송 계층, 네트워크 계층, 데이터 링크 계층, 물리 계층 순서로 처리된다.

각 계층의 프로토콜과 기술

계층프로토콜
응용 계층HTTP, DNS, FTP, SMTP, POP3, 기타 프로토콜
전송 계층TCP, UDP
네트워크 계층IP
데이터 링크 계층이더넷
물리 계층전기 신호 변환

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

WWW란?

WWW(World Wide Web):
거대한 통신망인 인터넷은 수많은 사이트, 데이터, 정보를 갖고 있으며, 통신 회선이 거미줄처럼 서로 연결되어 있어서 언제 어디서든 필요한 곳에 접근하거나 정보를 공유하고 주고받을 수 있는 멀티미디어 인터넷 서버다.

줄여서 W3나 웹(Web)이라고도 부른다.

WWW에는 HTML, URL, HTTP라는 세 가지 기술이 사용된다.

HTML(HyperText Markup Language):
인터넷 서비스의 하나인 WWW를 통해 볼 수 있는 문서를 만들 때 사용하는 프로그래밍 언어다. 하이퍼텍스트를 작성하기 위해 개발되었다.

URL(Uniform Resource Locator):
인터넷에서 파일 위치를 지정하기 위해 기술된 주소다. 웹 사이트 주소를 지정하기 위해 사용한다.

HTML은 웹 페이지에서 문장 구조나 문자를 꾸미는 태그를 사용하여 작성하는 마크업 언어다. 제목이나 목록과 같은 문장 구조를 지정하거나 이미지 파일을 보여 줄 때도 태그를 사용한다. HTML로 작성하면 웹 브라우저로 볼 수 있다.

또한 HTML은 하이퍼텍스트(hypertext)를 작성하는 마크업 언어라고도 한다. 하이퍼텍스트로는 문자와 이미지를 표시하거나 하이퍼링크(hyperlink)를 사용할 수 있다. 하이퍼링크는 보통 링크(link)라고 부르는데 웹 사이트에서 아이콘이나 버튼 등에 있는 링크를 클릭하면 다른 사이트로 이동할 수 있다.

이동한 사이트에서는 html 파일이나 이미지 파일이 웹 서버에서 전송된다. 이때 문서와 이미지는 각각 별도로 요청한다. 그래서 가끔 글이 먼저 보이고 이미지가 나중에 보일 때가 있는 것이다.

HTTP란?

클라이언트(웹 브라우저)는 웹 사이트를 보기 위해 서버(웹 서버 프로그램)의 80번 포트를 사용하여 HTTP 통신을 한다.

클라이언트에서 HTTP 요청(request)을 보내고 서버에서 HTTP 응답(response)을 반환한다.

  • 요청 예시: GET/index.html HTTP/1.1
  • 응답 예시: HTTP/1.1 200 OK

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

지금은 HTTP/2나 HTTP/1.1 버전을 사용하지만 예전의 HTTP/1.0 버전에서는 요청을 보낼 때마다 연결했다 끊는 작업을 반복해서 웹 페이지가 느리게 보였다.

  • 예시: 연결 수립 -> 요청 -> 응답 -> 연결 끊기 -> 연결 수립 -> 요청 -> 응답 -> 연결 끊기

그러다 HTTP/1.1 버전에서는 keepalive라는 기능이 추가됐다.

keepalive는 연결을 한 번 수립하면 데이터 교환을 마칠 때까지 유지하고, 데이터 교환을 모두 끝내면 연결을 끊는 구조다.
keepalive는 요청도 순서대로 처리하는 특징이 있다. 1의 요청에 대해 1의 응답을 반환하고, 2의 요청에 대해 2의 응답을 반환한다.

  • 예시: 연결 수립 -> 1 요청 -> 1 응답 -> 2요청 -> 2응답 -> 연결 끊기

최근에는 HTTP/1.1 버전의 단점을 보완해서 빠르게 콘텐츠를 표시할 수 있는 프로토콜인 HTTP/2 버전도 사용할 수 있게 되었다.

HTTP/1.1 버전은 요청을 보낸 순서대로 응답을 반환하기 때문에, 이전 요청을 처리하는 데 시간이 길어지면 다음 요청에 대한 처리가 늦어진다. 때문에 콘텐츠 표시다 늦어진다.

HTTP/2 버전은 요청을 보낸 순서대로 응답을 반환하지 않아도 되기 때문에, 콘텐츠를 빠르게 표시할 수 있다.

  • 예시: 연결 수립 -> 1 요청 -> 2 요청 -> 3 요청 -> 2 응답 -> 3 응답 -> 1 응답 -> 연결 끊기

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

도메인 이름이란?

인터넷에서 중요한 역할을 하는 DNS의 구조에 대해 알아보자.

기본적으로 컴퓨터(서버)에는 IP 주소가 있어서 인터넷을 통해 웹 서버에 접속하여 웹 사이트를 볼 수 있다.

예를 들어 웹 브라우저의 주소 창에 URL을 직접 입력하면 웹 사이트가 보인다.

컴퓨터(서버)에 접속하려면 IP 주소를 입력해야 하는데, 우리는 보통 URL을 입력한다.
이는 DNS가 URL을 IP 주소로변환 해주는 서비스를 제공하기 때문이다.

사람들은 숫자로만 되어 있는 IP 주소를 기억하기 어렵기 때문에 https://www.google.com과 같은 주소를 사용하여 접속하도록 돕는 것을 DNS의 이름 해석(name resolution)이라고 한다.

사용자가 https://www.google.com에 접속하면 DNS 서버가 이 웹 사이트 서버의 IP 주소를 알려주며, 이를 '이름 해석'이라고 하는 것이다.

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

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

  1. 컴퓨터에서 "이 도메인 이름의 IP 주소는 무엇인가요?"라고 DNS 서버에 질문한다.
  2. DNS 서버는 해당 요청에 해당한느 도메인 이름의 IP 주소를 알려준다.
  3. 컴퓨터는 IP 주소로 해당 웹 서버에 접속한다.

그러나 요청한 첫 번째 DNS 서버가 도메인의 IP 주소를 모르는 경우도 있다. 그럴 경우에는 첫 번째 DNS 서버가 다른 DNS 서버에 질의한다. 그리고 다른 DNS 서버로부터 받은 IP 주소를 다시 클라이언트에게 전달해준다.

DNS 서버는 전 세계에 흩어져 있고 모두 계층적으로 연결되어 있다.


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

메일의 송수신 구조

메일을 송수신하려면 클라이언트 측의 메일 프로그램과 서버 측의 메일 서버 프로그램 간에 통신을 해야 한다. 그 때 사용되는 프로토콜에는 두 가지 종류가 있다.

메일 송신 : SMTP - 25번 포트
메일 수신: POP3 - 110번 포트

SMTP는 메일 서버 간의 메일 전송에도 이용된다.

메일 송수신 과정

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

컴퓨터 1 -> 메일 서버 1 -> 메일 서버 2 -> 컴퓨터 2

컴퓨터 1의 사용자는 메일 서버 1을 사용하는데, 메일 서비스를 제공하는 포털 사이트나 회사의 메일 서버를 사용하는 경우가 많다.
포털 사이트에 가입하거나 회사에서 메일 주소를 받으면 메일 서버를 사용할 수 있게 된다. 그래서 메일을 보낼 때는 메일 서비스를 제공하는 포털 사이트나 회사의 메일 서버에 메일을 보내는 것이다. (여기서는 메일 서버 1에 해당)

메일 서버를 사용하기 위해서는, 컴퓨터 1에서 사용하는 메일 프로그램에 메일 서버의 호스트 이름(서버 이름)을 설정하면 된다. 그러면 메일 서버 1로 메일을 보낼 수 있다.

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

컴퓨터 1과 메일 서버 1 간의 통신을 좀 더 자세히 살펴보자.

우선 컴퓨터 1의 메일 프로그램은 SMTP를 사용하여 메일 서버 1로 메일을 보낸다.

컴퓨터 1과 메일 서버 1의 동작 과정

  1. 세션 시작을 통지한다.
  2. 송신자의 메일 주소를 통지한다.
  3. 목적지 메일 주소를 통지한다.
  4. 메일 본문 전송을 통지한다.
  5. 메일 본문을 송신한다.
  6. 세션 종료를 통지한다.

매 단계마다 컴퓨터 1과 메일 서버 1는 통지와 확인 응답을 주고 받는다.

이제 컴퓨터 1에서 메일 서버 1로 메일을 보냈으니, 메일 서버 1은 SMTP를 사용하여 메일 서버 2로 메일을 전송한다.

POP3에 의한 메일 수신

메일 서버에는 메일 박스라고 하는 메일을 보관해 주는 기능이 있다.

메일 서버 2는 POP3를 사용하여 메일 서버 2의 박스에서 메일을 가져와서 컴퓨터 2로 전송한다.

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

메일 서버 2와 컴퓨터 1의 동작 과정

  1. 세션을 시작한다
  2. 컴퓨터 2는 받는 사람의 사용자 이름을 통지하고 메일 서버 2는 'OK'라는 확인 응답을 반환한다.
  3. 컴퓨터 2에서 수신자의 비밀번호를 통지하고 메일 서버 2는 '비밀번호 확인'이라는 확인 응답을 반환한다.
  4. 컴퓨터 2에서 자신의 메일이 있는 지 확인하고 메일 서버 2는 '있음'이라는 확인 응답을 반환한다.
  5. 컴퓨터 2에서 메일의 전송을 요청하여 메일 서버 2의 메일 박스에 보관된 이메일을 전송받는다.
  6. 세선을 종료한다.

0개의 댓글