TIL

OSI 7계층 응용 계층 (Application Layer)에 대하여 (간단 소개)

추운날_너를_기다리며 2024. 9. 24. 23:13

응용 계층(Application Layer)이란?

  • 응용 계층은 OSI 7계층 모델의 가장 상위 계층으로, 사용자가 네트워크 상에서 직접적으로 사용하는 애플리케이션들과 통신하는 부분을 담당합니다. 
  • 응용 계층의 주요 목적은 사용자가 네트워크를 통해 접근하는 서비스를 제공하는 것이고, 이는 이메일, 웹 브라우징, 파일 전송, 원격 로그인 등의 다양한 네트워크 서비스를 포함하며, 네트워크 상의 애플리케이션 프로세스 간의 통신을 규정합니다.
  • 응용 계층에서 사용되는 다양한 프로토콜들은 실제 데이터를 처리하는 애플리케이션 프로그램들과 하위 계층 간의 인터페이스 역할을 하며, 응용 프로그램이 네트워크 상에서 데이터를 주고받는 데 필요한 규칙들을 정의합니다.

응용 계층의 주요 프로토콜과 기능

응용 계층에서는 여러 가지 프로토콜이 동작하는데 각 프로토콜은 특정한 네트워크 서비스를 지원합니다.

아래는 몇 가지 중요한 응용 계층 프로토콜들입니다.

  1. HTTP (Hypertext Transfer Protocol)
  2. DNS (Domain Name System)
  3. SMTP (Simple Mail Transfer Protocol)
  4. FTP (File Transfer Protocol)
  5. Telnet
  6. POP3 (Post Office Protocol 3)

이 중에서 HTTP와 DNS에 대해 더 깊이 살펴보겠습니다.

HTTP (Hypertext Transfer Protocol)

  • HTTP는 인터넷에서 웹페이지를 전송하는 데 사용되는 가장 기본적인 프로토콜입니다.
  • 웹 브라우저가 웹 서버와 통신할 수 있도록 하며, 주로 클라이언트(웹 브라우저)와 서버 간의 상호작용을 처리합니다.

HTTP의 특징:

  • 클라이언트-서버 모델: HTTP는 클라이언트와 서버 간의 요청(Request)와 응답(Response)으로 동작합니다. 클라이언트는 웹 브라우저가 될 수 있으며, 사용자가 웹사이트에 접근할 때 서버에 특정 자원(이미지, HTML 파일, 동영상 등)을 요청합니다. 서버는 이에 대한 응답으로 해당 자원을 클라이언트에 제공합니다.
  • 비연결성(Connectionless): HTTP는 기본적으로 비연결형 프로토콜로, 각 요청과 응답이 독립적으로 이루어집니다. 클라이언트가 서버에 요청을 보낸 후 클라이언트가 응답을 받으면 연결이 종료됩니다. 새로운 요청을 위해서는 다시 연결을 설정해야 합니다. 이는 성능을 높이는 데 유리하지면, 상태를 유지하지 않는다는 단점이 있습니다.
  • 상태 비저장성(Stateless): HTTP는 Stateless 프로토콜로, 각 요청은 서로 독립적입니다. 즉, 서버는 이전 요청과 다음 요청 간의 상태를 기억하지 않습니다. 이를 해결하기 위해 저희는 Cookie나 Session 같은 기술이 추가로 사용됩니다.

HTTP의 주요 메서드:

  • GET: 서버에서 데이터를 요청하는 메서드입니다. 예를 들어, 사용자가 웹 브라우저에서 URL을 입력하면 브라우저는 해당 URL에 대해 GET 요청을 보냅니다.
  • POST: 서버로 데이터를 전송하는 메서드입니다. 주로 Form 데이터와 같은 데이터를 서버에 보낼 때 사용합니다. 즉, 사용자가 웹 페이지에 있는 양식(Form)에 텍스트, 이베일 주소, 비밀번호, 파일 등을 입력하고 해당 데이터를 출력하면 이 데이터가 서버로 전송됩니다. 이 과정에서 사용되는 데이터가 Form 데이터 입니다.
  • PUT: 서버에 자원을 업로드하거나 수정할 때 사용됩니다.
  • DELETE: 서버에서 특정 자원을 삭제할 때 사용됩니다.

HTTP 동작 과정:

  1. 사용자가 브라우저에 URL을 입력하고, 브라우저는 해당 서버에 GET 요청을 보냅니다.
  2. 서버는 클라이언트의 요청(Request)을 받고, 해당 리소스를 찾아 응답(Response)을 클라이언트에 보냅니다.
  3. 클라이언트는 서버에서 받은 응답(Response)를 처리하고, 이를 사용자가 볼 수 있는 형태(HTML 페이지 등)로 렌더링합니다.

DNS (Domain Name System)

  • DNS는 인터넷 상에서 사람이 쉽게 기억할 수 있는 도메인 이름을 IP 주소로 변환해 주는 프로토콜입니다.
  • 인터넷에서 컴퓨터 간의 통신은 IP 주소를 기반으로 이루어지지만, 사람들은 숫자로 이루어진 IP 주소를 기억하기 어렵기 때문에 이를 해결하기 위해 도메인 체계가 도입되었습니다.
  • DNS는 사용자가 www.example.com과 같은 도메인 이름을 입력하면 이를 해당 IP 주소 (예: 192.168.0.1)로 변환하여 웹 서버와의 연결을 도와줍니다.

DNS의 주요 기능:

  1. 이름 해석(Name Resolution): 도메인 이름을 IP 주소로 변환해줍니다.
  2. 도메인 이름 등록: 도메인 소유자는 DNS를 통해 자신이 소유한 도메인 이름을 등록하고 관리할 수 있습니다.
  3. 부하 분산(Load Balancing): DNS는 여러 서버 중에서 부하가 적은 서버로 요청을 분산시키는 역할도 할 수 있습니다.

DNS의 동작 과정:

  1. 사용자가 브라우저에 www.example.com을 입력하면, 먼저 로컬(사용자 컴퓨터에 캐시된) DNS 서버에서 해당 도메인의 IP 주소를 찾습니다.
  2. 로컬 DNS 서버에 정보가 없다면, 루트 DNS 서버에 요청을 보내 해당 도메인의 IP 주소를 확인합니다.
  3. 루트 서버는 해당 도메인의 권한이 있는 TLD(Top-Level Domain) 서버로 요청을 전달합니다. 예를 들어, 루트 서버가 TLD 서버로 example.com을 보낼 경우 .com TLD 서버가 이 요청을 처리하게 됩니다.
  4. TLD 서버는 도메인의 네임서버를 알려주고, 네임서버는 최종적으로 IP 주소를 반환합니다.
  5. 브라우저는 네임서버에서 최종적으로 반환받은 IP 주소를 사용하여 웹 서버에 접속하고, 사용자는 웹사이트에 접근할 수 있게 됩니다.

DNS의 구조:

  • 루트 DNS 서버: DNS 체계의 최상위에 있으며, TLD 서버로 요청을 전달합니다.
  • TLD 서버: .com, .org, .net 등 최상위 도메인을 관리하는 서버입니다.
  • 권한 DNS 서버 (Authoritative DNS Server): 특정 도메인에 대한 최종 IP 주소 정보를 가지고 있는 서버입니다.

응용 계층의 다른 주요 프로토콜

  • FTP (File Transfer Protocol): 파일을 서버와 클라이언트 간에 전송하는 프로토콜입니다. 주로 대용량 파일 전송 시 사용됩니다.
  • SMTP (Simple Mail Transfer Protocol): 이메일을 전송하는 데 사용되는 프로토콜입니다. 클라이언트가 이메일을 작성해 보내면, SMTP 서버가 이를 수신자의 메일 서버로 전달합니다.
  • Telnet: 원격 컴퓨터에 접속하여 명령어를 입력하고 처리 결과를 받을 수 있는 프로토콜입니다. SSH가 보안성을 강화한 형태로 많이 대체되었습니다.

응용 계층의 역할 요약

응용 계층은 네트워크 상의 다양한 서비스와 애플리케이션이 사용자의 요청을 처리할 수 있도록 하는 인터페이스 역할을 합니다. 이 계층은 프로토콜들을 통해 웹 서비스, 파일 전송, 이메일 등 여러 애플리케이션들이 서로 통신할 수 있도록 규정하고 지원합니다.