TIL

모두의 네트워크를 읽고 요약 및 정리한 글 입니다.

7장: 응용 계층 - 애플리케이션에 데이터 전송하기

28 응용 계층의 역할

우리가 웹 페이지를 볼 때는 구글 크롬같은 웹 브라우저를 사용하고, 메일을 보내고 받을 때는 Outlook과 같은 메일 프로그램을 사용한다. 이렇게 애플리케이션은 사용자가 하고 싶은 일을 할 수 있도록 도와준다. 이런 애플리케이션은 서비스를 요청하는 측서비스를 제공하는 측으로 구분할 수 있다. 일반적으로 서비스를 요청하는 측을 클라이언트, 서비스를 제공하는 측을 서버라고 한다.

서비스를 제공하는 측인 서버에는 웹 서버 프로그램과 메일 서버 프로그램 등이 있다. 그리고 이러한 애플리케이션은 응용 계층에서 동작한다. [모두의 네트워크] 책에서 말하는 응용 계층은 5계층의 세션 계층과 6계층의 표현 계층을 포함하는 것으로 생각한다.

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

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

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

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

인터넷에서 핵심적인 역할을 하고 있는 WWWHTML, URL, HTTP라는 세 가지 기술이 사용된다. HTML은 웹 페이지에서 문장 구조나 문자를 꾸미는 태그를 사용하여 작성하는 마크업 언어이다.


클라이언트는 웹 사이트를 보기 위해 서버의 80번 포트를 사용해 HTTP 통신을 한다. 클라이언트에서 HTTP 요청(request)를 보내고 서버에서 HTTP 응답(response)을 반환한다. 클라이언트가 데이터를 요청할 때는 요청 정보, 파일 이름, 버전 등ㅇ르 서버에 전송한다. 그러면 서버는 응답으로 요청의 상태와 데이터를 클라이언트에게 전송한다.

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

최근에는 HTTP/1.1의 단점을 보완해서 빠르게 콘텐츠를 표시할 수 있는 HTTP/2 버전도 사용할 수 있게 되었다. 기존 HTTP/1.1 버전같은 경우 요청을 보낸 순서대로 응답을 반환하기 때문에 요청을 처리하는 데 시간이 길어지면 다음 요청에 대한 처리가 늦어진다. 그렇게 되면 컨텐츠 표시가 늦어지기 때문에, HTTP/2 버전에서는 요청을 보낸 순서대로 응답을 반환하지 않아도 된다. 그래서 상대적으로 컨텐츠를 빠르게 표시할 수 있다.

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

기본적으로 컴퓨터에는 IP 주소가 있어서 인터넷을 통해 웹 서버에 접속하여 웹 사이트를 볼 수 있다. 하지만 우리가 웹 사이트 주소를 입력할 때는 IP 주소가 아닌 보통 영어로 된 주소를 입력한다. 이는 DNS를 활용하기 때문에 가능한데, DNS는 URL을 IP 주소로 변환하는 서비스(시스템)이다. 예를 들어 https://www.naver.com에 접속하면 DNS 서버가 이 웹 사이트 서버의 IP 주소를 알려준다. 이것을 ‘이름 해석’이라고 한다. www.naver.com과 같이 컴퓨터나 네트워크를 식별하기 위해 붙여진 이름을 도메인 이름이라고 하고, 도메인 이름 앞에 있는 www는 호스트 이름(서버 이름)이라고 한다.

도메인 이름에 해당되는 IP 주소를 확인하는 과정은 다음과 같다.

  • 해당 도메인 이름에 해당하는 IP 주소로 접속하면 컴퓨터에서 DNS 서버로 요청이 간다.
  • 그러면 DNS 서버에서 컴퓨터로 해당 도메인 이름의 IP 주소를 알려 준다.
  • 컴퓨터는 IP 주소로 서버에 접속한다.

만일 요청한 첫 번째 DNS 서버가 도메인의 IP 주소를 모르는 경우, DNS 서버 1이 DNS 서버 2에 요청을 한다. DNS 서버는 전 세계에 흩어져 있고 모두 계층적으로 연결되어 있다.

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

메일을 송수신하려면 클라이언트 측의 메일 프로그램과 서버 측의 메일 서버 프로그램 간에 통신을 해야 한다. 그때 사용되는 프로토콜에는 두 가지 종류가 있다. 메일을 보내는 데 사용되는 프로토콜은 SMTP이고, 메일을 받는 데 사용되는 프로토콜은 POP3이다. SMTP는 메일 서버 간의 메일 전송에도 이용된다.

메일 송수신의 큰 과정은 아래와 같다.

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

컴퓨터 1의 사용자는 메일 서버 1을 사용한다. 이 같은 경우 보통 메일 서비스를 제공하는 포털사이트나 회사의 메일 서버를 사용하는 경우가 많다. 포털사이트에 가입하거나 회사에서 메일 주소를 받으면 메일 서버를 사용할 수 있게 된다. 따라서 메일을 보낼 때는 메일 서비스를 제공하는 포털사이트나 회사의 메일 서버에 메일을 보낸다. 그 메일 서버가 메일 서버 1에 해당한다.


컴퓨터 1과 메일 서버 1간의 통신을 조금 더 자세히 살펴보면 아래와 같다.

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

이렇게 메일 서버 1로 전송된 메일은 SMTP를 활용해 메일 서버 2로 전송된다.


메일 서버에는 메일 박스라고 하는 메일을 보관해 주는 기능이 있다. 메일 서버 2는 POP3를 사용하여 메일 서버 2의 메일 박스에서 메일을 가져와서 컴퓨터 2로 전송한다. 컴퓨터 2가 메일 서버 2의 메일 박스에 있는 메일을 수신할 때는 사용자 이름과 비밀번호를 이용한 사용자 인증이 필요하다.

메일 서버 2와 컴퓨터 2간의 통신은 아래와 같다.

  1. 세션 시작을 통지한다.
  2. 수신자의 사용자 이름을 통지한다.
  3. 수신자의 비밀번호를 통지한다.
  4. 메일을 확인한다.
  5. 메일의 전송을 요청한다.
  6. 세션 종료를 통지한다.

용어 정리

  • 응용 계층(application layer, 애플리케이션 계층): OSI 모델의 최상위 계층으로 다양하게 존재하는 응용 환경에서 공통적으로 필요한 기능을 다룬다. 시스템 간의 응용 처리는 상호 간에 통신하면서 일련의 업무를 처리할 수 있도록 필요한 서비스 기능을 제공한다. 이메일, 파일 전송, 웹 사이트 조회 등 애플리케이션에 대한 서비스를 제공하는 계층이다.
  • WWW(World Wide Web, 월드 와이드 웹): 거대한 통신망인 인터넷은 수많은 사이트, 데이터, 정보를 가지고 있으며, 통신 회선이 거미줄처럼 서로 연결되어 있어서 언제 어디서든 필요한 곳에 접근하거나 정보를 공유하고 주고받을 수 있는 멀티미디어 인터넷 서버다.
  • HTTP(HyperText Transfer Protocol): 웹 서비스에서 클라이언트(웹 브라우저)와 웹 서버 간에 정보를 주고받기 위해 사용되는 네트워크 프로토콜 이다.
  • DNS(Domain Name System, 도메인 이름 시스템): 네트워크에서 호스트 이름을 IP 주소로 변환하는 데 사용하는 시스템(서비스)이다. DNS 서비스가 동작하는 컴퓨터(서버)를 DNS 서버라고 한다.
  • FTP(File Transfer Protocol, 파일 전송 프로토콜): 서버와 클라이언트 간에 파일을 전송하기 위한 프로토콜이다. 일반적으로 통신 포트는 제어 용도로는 21번을 사용하고 데이터 전송 용도로는 20번 포트를 사용한다.
  • SMTP(Simple Mail Transfer Protocol, 단순 메일 전달 프로토콜): 인터넷에서 메일을 송신하는 데 사용하는 프로토콜이다. 통신 포트는 일반적으로 25번을 사용한다. SMTP를 지원하는 서버를 SMTP 서버라고 한다.
  • POP3: 인터넷에서 메일을 수신하는 데 사용하는 프로토콜이다. 통신 포트는 일반적으로 110번을 사용한다. POP3를 지원하는 서버를 POP3 서버라고 한다.
  • HTML(HyperText Markup Language): 인터넷 서비스의 하나인 WWW를 통해 볼 수 있는 문서를 만들 때 사용하는 프로그래밍 언어다. 하이퍼텍스트를 작성하기 위해 개발되었다.
  • URL(Uniform Resource Locator): 인터넷에서 파일 위치를 지정하기 위해 기술된 주소다. 웹 사이트 주소를 지정하기 위해 사용된다.

Leave a comment