본문 바로가기
컴퓨터공학/네트워크

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

by Daniel.kwak 2018. 12. 2.

웹 페이지를 볼 때는 크롬같은 웹 브라우져를 사용하고, 메일을 보내고 받을때는 Outlook 같은 메일 프로그램을 사용하게 된다. 

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


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


웹 사이트를 볼 때는 HTTP , 파일을 전송할 때는 FTP , 메일을 보낼 때는 SMTP , 메일을 받을때는 POP3라는 프로토콜을 사용한다. 

또한 네트워크에서 컴퓨터나 네트워크 장비에 붙여진 이름을 기반으로 IP주소를 알아내는 것을 이름해석이라고 하는데, 이를 위해 DNS를 사용한다.


웹 서버의 구조

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


HTTP

클라이언트인 웹 브라우져는 웹 사이트를 보기 위해 웹 서버의 80포트를 사용하여 HTTP통신을 한다. 

클라이언트는 HTTP 요청을 보내고, 서버에서 HTTP 응답을 반환한다.

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

예전의 HTTP/1.0 버젼에서는 요청을 보낼 때마다 연결했다 끊는 작업을 반복했다. 그러나 HTTP/1.1 버젼에서는 keepalive기능이 추가되었다.

keepalive는 연결을 한 번 수립하면 데이터 교환을 마칠 때까지 유지하고 데이터 교환을 모두 끝내면 연결을 끊는 구조이다.

keepalive는 요청도 순서대로 처리하는 특징이 있어서 1번 요청에 대해 1번 응답을 반환하고, 2번 요청에 의해 2번 응답을 반환한다.

따라서 keepalive기능이 있으면 매번 연결 수립과 끊기를 하지 않아도 된다. 

HTTP/2.0에서는 요청을 보낸 순서대로 응답을 반환하지 않아도 된다. 1,2,3 의 요청을 순서대로 보냈어도 2,3,1 순으로 응답이 올 수도 있다는 것.



DNS

기본적으로 컴퓨터(서버)에는 IP주소가 있어서 인터넷을 통해 웹 서버에 접속하면 웹 사이트를 볼 수 있다. 원래는 IP주소를 입력해야 하지만 DNS는 URL을 IP주소로 변환하는 서비스(시스템)이다. IP주소는 222.235.64.222 와 같이 숫자로 구성되어 있어서 사용자들이 외우기엔 불편하므로 www.naver.com과 같은 주소를 사용하여 접속하도록 돕는 것을 DNS의 이름해석이라고 한다. www.naver.com에 접속하면 DNS서버가 이 웹사이트 서버의 IP주소를 알려주는 것.


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

그럼 도메인 이름에 해당하는 IP주소는 어떻게 알 수 있을까?

컴퓨터의 웹 브라우져가 www.naver.com에 접속하는 경우를 예로 들어보면

1.웹 브라우저에 URL인 www.naver.com을 입력하여 접속

2.DNS 서버에서 요청을 받아서 해당 IP주소를 웹 브라우져에 반환.

3.웹 브라우져에서 IP주소로 접속한다.


요청한 첫번째 DNS서버에서 도메인의 IP주소를 모르는 경우도 있다. 이럴 때는 DNS 서버 1이 DNS서버 2에 요청하기도 한다. 

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



메일 서버의 구조

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

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

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


보통 메일 서비스를 제공하는 포털 사이트나 회사의 메일 서버를 사용하는 경우가 많다. 가입하여 메일 주소를 받게 되면 메일 서버를 사용할 수 있게 되는 것이다. 그래서 메일을 보낼때는 메일 서비스를 제공하는 포털 사이트나 회사의 메일 서버에 메일을 보내는 것. 이것은 송신측에서 메일 프로그램에 메일 서비스를 제공하는 메일 서버의 호스트 이름을 설정하면 된다. 


컴퓨터1과 메일서버1 간 통신을 좀 더 자세히 살펴보자. 컴퓨터 1의 메일 프로그램은 SMTP를 사용하여 메일 서버 1로 메일을 보낸다. 동작 흐름은

1.컴퓨터1->메일서버로 세션 시작을 통시한다.

2,컴퓨터1->메일서버로 송신자의 메일 주소를 통지한다. 

3.컴퓨터1->메일서버로 목적지 메일 주소를 통지한다.

4.컴퓨터1->메일서버로 메일 본문 전송을 통지한다.

5.컴퓨터1->메일서버로 메일 본문을 송신한다.

6.컴퓨터1->메일서버로 세션 종료를 통지한다. 


POP3에 의한 메일 수신

SMTP로 메일 서버1이 메일 서버2로 메일을 전송할 수 있다. 메일 서버에는 메일 박스라는 메일을 보관해주는 기능이 있다. 메일 서버 2는 POP3 를 사용하여 메일 서버2의 메일 박스에서 메일을 가져와서 컴퓨터2로 전송한다. 이 때 동작흐름은 

1.컴퓨터2->메일서버2로 세션 시작을 통시한다.

2,컴퓨터2->메일서버2로 송신자의 메일 주소를 통지한다. 

3.컴퓨터2->메일서버2로 목적지 메일 주소를 통지한다.

4.컴퓨터2->메일서버2로 메일 본문 전송을 통지한다.

5.컴퓨터2->메일서버2로 메일 본문을 송신한다.

6.컴퓨터2->메일서버2로 세션 종료를 통지한다. 

메일 서버에서 POP3를 이용하여 메일을 가져올 때는 사용자 이름과 비밀번호를 이용한 사용자 인증이 필요하니까 주의해야 한다.



ping 명령 및 ICMP

ping명령은 Internet Control Message Protocol이라는 프로토콜을 사용하여 목적지 컴퓨터에 ICMP패킷을 전송하고, 패킷에 대한 응답이 제대로 오는지 확인한다. ping명령이 정상으로 실행되면 네트워크 연결이 정상이라고 판단할 수 있다. 

ping 목적지 IP 주소

ping 목적지 호스트 이름 

의 명령어로 사용한다.