본문 바로가기
부트캠프

24/09/26 - OSI 7계층: 응용 계층(Application Layer)

by Jini_Lamp 2024. 9. 26.

응용 계층(Application Layer)은 OSI 7계층 중 가장 상위 계층으로, 사용자가 네트워크 서비스를 사용할 수 있도록 인터페이스를 제공하고, 데이터를 주고받는 데 필요한 규칙과 프로토콜을 정의하는 등, 사용자가 직접 상호작용하는 프로그램과 네트워크 간의 연결을 관리한다. 이를 통해 파일 전송, 이메일, 원격 로그인, 웹 브라우징 등의 서비스를 지원한다.

 

 

 

주요 프로토콜

프로토콜은 컴퓨터 내부, 또는 컴퓨터 사이에서 데이터 교환 방식을 정의하는 규칙 체계이다. 응용 계층의 주요 프로토콜은 다음과 같다.

  • HTTP(Hypertext Transfer Protocol)
    월드 와이드 웹(WWW)에서 브라우저와 웹 서버 간에 데이터를 주고받기 위한 프로토콜이다. 주로 웹 페이지, 이미지, 비디오 등의 리소스를 요청하고 응답하는 데 사용되며, 비연결형(Stateless) 프로토콜로 상태 비저장성을 바탕으로 하며, 각 요청과 응답이 독립적으로 처리된다.

    HTTP는 매우 유연하여, 기본적인 텍스트뿐만 아니라 다양한 종류의 미디어 파일과 애플리케이션 데이터를 전송하는 데 사용됩니다. 또한, REST API와 같은 웹 기반 애플리케이션 통신에서 중요한 역할을 한다. 주요 특징은 다음과 같다.
    • 클라이언트 - 서버 모델
      웹 브라우저(클라이언트)가 웹 서버에 요청을 보내고, 서버가 해당 요청에 응답하여 데이터를 전송한다.
    • 요청과 응답
      클라이언트는 서버에 특정 리소스를 요청하는 메시지를 보내고, 서버는 해당 요청에 따라 데이터를 응답한다.
    • 비연결형(Connectionless)
      HTTP는 요청과 응답 후 네트워크 연결을 끊는다. 즉, 한 번의 요청에 응답이 끝나면 연결이 종료되고, 다음 요청이 있을 때 다시 새로운 연결이 생성된다.
      이 방식은 서버 자원을 절약한다는 장점이 있지만, 요청마다 새로운 연결을 만들어야 하므로 성능 상의 부담이 있을 수 있다. 이를 보완하기 위해 HTTP/1.1 이후 버전에서는 keep - alive를 통해 한번의 연결로 여러 요청을 처리할 수 있는 기능을 지원한다.
    • 상태 비저장성(Stateless)
      서버가 클라이언트의 이전 요청에 대한 상태를 저장하지 않는다. 따라서 각 요청은 독립적이다.
      이를 보완하기 위해 웹에서는 쿠키(Cookie), 세션(Session), 토큰(Token) 등을 활용해 클라이언트의 상태를 추적하고 인증 정보를 관리한다.
    • HTTP/HTTPS
      HTTP는 데이터를 암호화하지 않은 상태로 전송하기 때문에 보안에 취약할 수 있다. 이를 개선한 것이 HTTPS( Hypertext Transfer Protocol Secure)로, SSL/TLS 프로토콜을 통해 데이터를 암호화하여 안전한 통신을 제공한다.
  • DNS(Domain Name System)
    사람이 쉽게 읽을 수 있는 도메인 이름을 컴퓨터가 이해할 수 있는 IP 주소로 변환해주는 시스템이다. 주요 기능은 다음과 같다.
    • 도메인 이름 해석
      도메인 이름을 IP 주소로 변환한다. 컴퓨터는 IP 주소를 사용해 통신하지만, 사용자는 기억하기 쉬운 도메인 이름을 사용한다.
      예를 들어, 우리는 웹 사이트를 방문할 때 "www.naver.com"과 같은 도메인 이름을 입력하지만, 컴퓨터는 이를 이해하지 못하기 때문에 해당 도메인 이름을 IP 주소(예: 192.0.2.1)로 변환해야 한다.
    • 계층적 구조
      DNS는 트리 구조를 기반으로 하며, 도메인 이름은 여러 단계로 나누어 진다. 예를 들어 "www.naver.com"의 경우, 아래처럼 나뉘어지는데, 필요한 IP 주소를 찾기 위해 상위 레벨에서 하위 레벨로 이동한다.
      • .com: 최상위 도메인(TLD, Top Level Domain)
      • naver: 2차 도메인
      • www: 하위 도메인(subdomain)
    • 캐싱
      자주 사용되는 DNS 결과는 캐싱되어 네트워크 성능을 향상시킨다. 해당 IP 주소를 로컬 시스템이나 네트워크에 저장하여, 불필요한 DNS 질의를 줄이고 빠른 응답을 제공한다. 이렇게 캐시된 정보는 일정 시간이 지나면 갱신된다.
    • 부하 분산(Load Balancing)
      DNS는 여러 서버 중에서 부하가 적은 서버로 요청을 분산시키는 역할도 할 수 있다.
DNS 서버
DNS 서버에는 여러 종류가 있다. 이들은 서로 협력하여 이름 해석을 빠르게 처리한다.

1. 순환 DNS 서버(DNS Recursive Server/ DNS resolver)
    요청 받은 도메인에 매치되는 IP 주소를 찾기 위해 계층적으로 DNS 쿼리를 수행한다. DNS 캐시를 저장하는 곳이기도 하다.
2. 루트 네임 서버(Root Name Server)
    인터넷의 최상위에 있는 DNS 서버로, 각 도메인의 최상위 도메인(TLD)에 대한 정보를 제공한다.
3. TLD 네임 서버(TLD Name Server)
    각 최상위 도메인의 정보를 관리하는 서버이다.
4. 권한 있는 네임 서버(Authoritative Name Server)
    실제 도메인의 IP 주소 정보를 가지고 있는 서버이다. 여기서 얻은 IP 주소가 순환 DNS 서버를 거쳐 브라우저까지 전달된다.