응용 계층(Application Layer)이란?
- 응용 계층은 OSI 7계층 모델의 가장 상위 계층으로, 사용자가 네트워크 상에서 직접적으로 사용하는 애플리케이션들과 통신하는 부분을 담당합니다.
- 응용 계층의 주요 목적은 사용자가 네트워크를 통해 접근하는 서비스를 제공하는 것이고, 이는 이메일, 웹 브라우징, 파일 전송, 원격 로그인 등의 다양한 네트워크 서비스를 포함하며, 네트워크 상의 애플리케이션 프로세스 간의 통신을 규정합니다.
- 응용 계층에서 사용되는 다양한 프로토콜들은 실제 데이터를 처리하는 애플리케이션 프로그램들과 하위 계층 간의 인터페이스 역할을 하며, 응용 프로그램이 네트워크 상에서 데이터를 주고받는 데 필요한 규칙들을 정의합니다.
응용 계층의 주요 프로토콜과 기능
응용 계층에서는 여러 가지 프로토콜이 동작하는데 각 프로토콜은 특정한 네트워크 서비스를 지원합니다.
아래는 몇 가지 중요한 응용 계층 프로토콜들입니다.
- HTTP (Hypertext Transfer Protocol)
- DNS (Domain Name System)
- SMTP (Simple Mail Transfer Protocol)
- FTP (File Transfer Protocol)
- Telnet
- 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 동작 과정:
- 사용자가 브라우저에 URL을 입력하고, 브라우저는 해당 서버에 GET 요청을 보냅니다.
- 서버는 클라이언트의 요청(Request)을 받고, 해당 리소스를 찾아 응답(Response)을 클라이언트에 보냅니다.
- 클라이언트는 서버에서 받은 응답(Response)를 처리하고, 이를 사용자가 볼 수 있는 형태(HTML 페이지 등)로 렌더링합니다.
DNS (Domain Name System)
- DNS는 인터넷 상에서 사람이 쉽게 기억할 수 있는 도메인 이름을 IP 주소로 변환해 주는 프로토콜입니다.
- 인터넷에서 컴퓨터 간의 통신은 IP 주소를 기반으로 이루어지지만, 사람들은 숫자로 이루어진 IP 주소를 기억하기 어렵기 때문에 이를 해결하기 위해 도메인 체계가 도입되었습니다.
- DNS는 사용자가 www.example.com과 같은 도메인 이름을 입력하면 이를 해당 IP 주소 (예: 192.168.0.1)로 변환하여 웹 서버와의 연결을 도와줍니다.
DNS의 주요 기능:
- 이름 해석(Name Resolution): 도메인 이름을 IP 주소로 변환해줍니다.
- 도메인 이름 등록: 도메인 소유자는 DNS를 통해 자신이 소유한 도메인 이름을 등록하고 관리할 수 있습니다.
- 부하 분산(Load Balancing): DNS는 여러 서버 중에서 부하가 적은 서버로 요청을 분산시키는 역할도 할 수 있습니다.
DNS의 동작 과정:
- 사용자가 브라우저에 www.example.com을 입력하면, 먼저 로컬(사용자 컴퓨터에 캐시된) DNS 서버에서 해당 도메인의 IP 주소를 찾습니다.
- 로컬 DNS 서버에 정보가 없다면, 루트 DNS 서버에 요청을 보내 해당 도메인의 IP 주소를 확인합니다.
- 루트 서버는 해당 도메인의 권한이 있는 TLD(Top-Level Domain) 서버로 요청을 전달합니다. 예를 들어, 루트 서버가 TLD 서버로 example.com을 보낼 경우 .com TLD 서버가 이 요청을 처리하게 됩니다.
- TLD 서버는 도메인의 네임서버를 알려주고, 네임서버는 최종적으로 IP 주소를 반환합니다.
- 브라우저는 네임서버에서 최종적으로 반환받은 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가 보안성을 강화한 형태로 많이 대체되었습니다.
응용 계층의 역할 요약
응용 계층은 네트워크 상의 다양한 서비스와 애플리케이션이 사용자의 요청을 처리할 수 있도록 하는 인터페이스 역할을 합니다. 이 계층은 프로토콜들을 통해 웹 서비스, 파일 전송, 이메일 등 여러 애플리케이션들이 서로 통신할 수 있도록 규정하고 지원합니다.
'TIL' 카테고리의 다른 글
JavaScript 다양한 디자인 패턴 (간단하게) (0) | 2024.09.26 |
---|---|
OSI 7계층 응용 계층 (Application Layer)에 대하여 (자세하게) (0) | 2024.09.25 |
Status Code 종류별로 한줄로 설명하기 - 틀린 부분 또는 추가할 부분 지적 O (0) | 2024.09.24 |
Repository Pattern 간단한 소개 (1) | 2024.09.23 |
초보자를 위한 깃허브 팀원끼리 연결, PullRequest, Merge 하는 법 (feat. SubBranch, VSCODE) (0) | 2024.09.19 |