모두의 네트워크 Chap7 - 응용 계층

업데이트:

# 응용 계층의 역할

우리는 웹 페이지를 볼 때는 웹 브라우저를 사용하고, 메일을 보낼때는 메일 프로그램(예 : Outlook)같은 프로그램을 사용한다.

이러한 애플리케이션들은 응용계층에서 동작하며, 서비스를 요청하는 애플리케이션(클라이언트)서비스를 제공하는 애플리케이션(서버)로 나뉜다.

응용계층에서는 클라이언트의 요청을 전달하기 위해 서버가 이해할수 있는 데이터로 변환하고 전송 계층으로 전달하는 역할을 한다.

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

  • 주요 응용 계층 프로토콜
프로토콜 내용
HTTP 웹 사이트 접속
DNS IP주소 해석
FTP 파일 전송
SMTP 메일 송신
POP3 메일 수신

웹 서버의 구조

www란?

World Wide Wed의 약자로, HTML, URL, HTTP라는 세가지 기술이 있다.

  • HTML(Hyper Text Markup Language)은 웹페이지에서 문장 구조나 문자를 꾸미는 태그를 사용하여 작성하는 마크업 언어이다.

    마크업 언어란? 문장의 일부를 태그로 감싸고 문장을 꾸미기 위한 형식

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

  • HTML파일과 이미지는 웹 서버에 각각 별도로 요청되므로 웹 페이지 로딩때 글이나 그림이 먼저 보이기도 한다.

HTTP란?

클라이언트(웹 브라우저)는 웹 사이트를 보기 위해 서버에 80번 포트를 사용하여 HTTP통신을 한다. 클라이언트는 HTTP요청(request)를 보내고 서버는 HTTP응답(response)을 한다.

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

구 버전의 HTTP에서는 요청을 보낼 때 마다 연결했다 끊는 작업을 반복하여 웹 페이지가 느리게 보였다. HTTP/1.1버전에서는 keepalive기능이 추가되어 연결을 한 번 수립하면 데이터 교환을 마칠 때 까지 유지한 뒤 연결을 끊어 빠르게 콘텐츠를 표시할 수 있게 되었다.

HTTP/1.1을 보완하여 HTTP/2에서는 요청을 보낸 순서대로 반환하지 않고 응답해 더 빠르게 콘텐츠를 표시할 수 있게 되었다.

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

도메인 이름이란?

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

그러나 보통은 주소창에 바로 www.github.com와 같이 IP주소가 아닌 것을 입력해도 웹 사이트가 보인다. 이것이 DNS의 역할이다.

DNS(Domain Name System)는 URL을 IP주소로 변환하는 서비스(시스템)이다.

IP주소는 보통 123.456.789.122과 같이 숫자로만 구성되어 있다. 이러한 숫자들의 조합은 인간이 기억하기 쉽지 않기 때문에 IP주소가 아닌 www.github.com과 같은 주소를 사용하여 접속하도록 돕는 것을 DNS의 이름 해석(name solution)이라고 한다.

즉, www.github.com을 입력하면 DNS서버가 이 웹사이트 서버의 IP주소를 알려주는 것이다. 이것을 이름 해석이라고 한다.

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

image

(이미지 출처 : 생활코딩)

처음에는 웹 사이트의 IP주소를 모르기 때문에 DNS서버에 요청하여 IP주소를 확인하고 웹 서버에 접속하는 구조이다.

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

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

메일의 송수신 구조

메일을 송수신 하려면 클라이언트와 서버 측의 메일 서버 프로그램간의 통신을 해야 한다. 이때 사용되는 프로토콜은 SMTP(포트번호 25), POP3(포트번호 110) 두 가지 종류가 있다.

메일을 보내는 간략한 흐름

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

컴퓨터 1의 사용자는 메일서버 1을 사용하는데, 메일 서비스를 제공하는 포털사이트나 회사의 메일 서버를 사용하는 경우가 많다. 그래서 메일을 보낼 때 메일 서비스를 제공하는 포털 사이트나 회사의 메일 서버로 메일을 보내는 것이고, 그 서버가 현재 설명에서 메일 서버 1에 해당한다.

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

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

메일 서버로 메일을 보내는 동작 흐름

KakaoTalk_20201027_084916869_01

이제 컴퓨터 1에서 메일서버 1로 메일을 보냈다. 다음은 SMTP를 이용하여 메일서버 1로 메일서버 2로 메일을 전송하는 과정이다.

KakaoTalk_20201027_084916869_02

POP3에 의한 메일 수신

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

KakaoTalk_20201027_085538155_01

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

KakaoTalk_20201027_085538155_02

ping 명령

목적지 컴퓨터와의 통신을 확인하려면 ping명령을 이용한다. ping 명령은 ICMP(Internet Control Message Protocol)라는 프로토콜을 사용하여 목적지 컴퓨터에 ICMP패킷을 전송하고 패킷에 대한 응답이 제대로 오는지 확인하는 명령이다. ping명령이 정상으로 실행되면 네트워크 연결이 정상이라고 판달할 수 있으므로 문제를 확인할 때 자주 사용한다.

ping 명령 - 프롬프트 창에서 실행한다.

ping 목적지 IP 주소
ping 목적지 호스트 이름

ex) ping www.google.co.kr

태그:

카테고리:

업데이트:

댓글남기기