김우석 개발자

네트워크 애플리케이션 레이어

개요 : [컴퓨터 네트워킹 하향식 접근]을 읽으며 정리한 내용

컴퓨터의 시스템에서 실행되는 프로그램은 서로 통신을 한다. 운영체제 용어로 실제 통신하는 것은 프로그램이 아니라 프로세스이다. 서로 다른 컴퓨터에서 실행되는 프로세스의 통신은 네트워크를 통한 메세지 교환으로 서로 통신한다. 한쪽의 프로세스가 메세지를 보낼 때 다섯 계층의 프로세스 스택을 지나며 캡슐화된다.

하나의 프로세스부터 다른 프로세스로 보내는 메세지는 네트워크를 통해 움직인다. 프로세스는 소켓을 통해 네트워크로 메세지를 보내고 받는다. 프로세스가 집이라면 소켓은 문으로 비유된다.

../../../../../public/assets/2021-07-19-Network-application-layer/socket.gif

../../../../../public/assets/2021-07-19-Network-application-layer/socket_work.gif

특정 프로세서로 메세지를 보내기 위해서는 목적지 호스트의 주소를 갖고 있어야 한다. 수신 프로세스를 식별하기 위해, 두가지의 정보가 명시될 필요가 있다. 하나는 호스트의 주소이고, 또 하나는 호스트 내의 수신 프로세스이다. 호스트는 IP주소로 식별된다. 수신 호스트에서는 수행되고 있는 수신 프로세스도 식별해야 하기 때문에 목적지 포트 번호를 사용한다.

애플리케이션 레이어


사용자가 필요로 하는 인터페이스와 프로토콜을 제공하는 TCP/IP 모델의 가장 높은 추상화 계층이다. 세션 계층, 프레젠테이션 계층 및 OSI 모델의 애플리케이션 계층을 결합한다.

  • 사용자가 네트워크의 서비스를 쉽게 사용할 수 있게 한다.
  • 네트워크 기반 애플리케이션을 개발하는데 사용된다.
  • 사용자 로그인, 네트워크 장치 이름 지정, 메시지 형식 지정, 전자 메일, 파일 전송 등과 같은 사용자 서비스를 제공한다.
  • 오류 처리 및 메시지 복구 전반에 대해 다룬다.
  • 예) HTTP, FTP, SMTP, TELNET, SNMP, DNS

DNS

Domain Name System은 사람이 읽을 수 있는 도메인 이름을(www.amazon.com) IP주소로 변환한다(192.0.2.44).

DNS는 확장성 문제를 다루기 위해 많은 서버를 이용하고 이들을 계층 형태로 구성하여 전 세계에 분산시킨다. 계층으로 구성된 세 유형의 DNS 서버는 루트 서버, 최상위 레벨 도메인 네임 DNS 서버, 책임 DNS 서버로 나뉜다.

DNS 분산 데이터 베이스를 구현한 DNS 서버들은 호스트 네임을 IP 주소로 매핑하기 위한 자원 레코드(RR)을 저장한다. 각 DNS는 하나 이상의 자원 레코드를 가진 메세지로 응답한다. 자원 레코드는 4개의 투플로 되어 있다.

(Name, Value, Type, TTL)

TTL은 자원 레코드의 생존기간으로, 자원이 캐시에서 제거되는 시간을 결정한다.

Name과 Value는 Type에 따라 다른 의미를 가진다.

  • Type = A이면, Name은 호스트 네임이고 Value는 호스트 네임에 대한 IP 주소다. 따라서 Type A 레코드는 표준 호스트 네임의 IP 주소 매핑을 제공한다.
  • Type = NS이면, Name은 도메인이고 Value는 도메인 내부의 호스트에 대한 IP 주소를 얻을 수 있는 방법을 아는 책임 DNS 서버의 호스트네임이다. 예를 들어, (foo.com, dns.foo.com, NS)은 NS의 레코드이다.
  • Type = CNAME이면, Value는 별칭 호스트 네임 Name에 대한 정식 호스트 네임이다. 이 레코드는 질의 호스트에게 호스트 네임에 대한 정식 이름을 제공한다. 예를 들어, (foo.com, relay1.bar.foo.com, CNAME)은 CNAME 레코드이다.

../../../../../public/assets/2021-07-19-Network-application-layer/DNS.png

DNS는 여러가지 추가 서비스를 제공한다.

  • 호스트 앨리어싱
    • 복잡한 호스트 네임을 가진 호스트는 하나 이상의 별명을 가질 수 있다.
    • somewhere.com, www.somewhere.com 같은 별칭을 가질 수 있다
  • 메일 서버 앨리어싱
    • 전자메일 주소는 기억하기 쉬운 것이 좋다.
  • 부하 분산
    • DNS는 중복 웹 서버 같은 여러 중복 서버 사이에 부하를 분산하기 위해서도 사용되고 있다.
    • CNN 같은 인기 있는 사이트는 여러 서버에 중복되어 있어서 각 서버가 다른 종단 시스템에서 수행되고 다른 IP 주소를 갖는다.

    기본적인 DNS Packet 분석

HTTP


HTTP에 대한 이야기는 볼륨이 너무 커서 따로 다루도록 하겠다.

같은 카테고리의 글