컴퓨터공학/네트워크

[컴퓨터 네트워크] 애플리케이션 계층

주정용 2021. 1. 23. 21:13
728x90

네트워크 애플리케이션

  • 종단 시스템에서 통신하는 프로그램

네트워크 애플리케이션 구조

클라이언트-서버

  • 클라이언트 : 서버에 요청을 발신하는 호스트
  • 서버 : 항상 켜져있음, 고정 IP, 데이터센터를 구축해서 가상 서버 생성함

P2P

  • 서버에 거의 의존하지 않음
  • 애플리케이션은 peer라는 연결된 호스트 쌍이 통신함
  • peer는 데스크톱, 랩톱 등
  • 자가 확장성이 있음

프로세스 간 통신

  • 운영체제 관점에서 실제로 통신하는 것은 프로그램이 아닌, 프로세스
  • 프로세스는 메시지를 교환함으로써 종단 시스템간 통신함
  • 클라이언트-서버
    • 클라이언트 : 통신 세션에서 통신을 초기화하는 프로세스
    • 서버 : 세션을 시작하기 위해 접속을 기다리는 프로세스
  • 프로세스는 소켓을 통해 네트워크로 메시지를 송수신함
  • 프로세스 --> 집, 소켓 --> 출입구로 비유
  • 소켓 : 호스트의 애플리케이션(응용) 계층과 전송 계층 간 인터페이스, 애플리케이션과 네트워크 사이의 API
  • 프로세스 주소 배정 : 수신 프로세스를 식별하기 위해서
    • 호스트 주소(IP adress)
    • 호스트 내 프로세스 식별자(port)

전송 계층이 애플리케이션에 제공할 수 있는 서비스

  • 신뢰적 데이터 전송 : 데이터가 안전하게 전달되도록 보장
  • 처리량
  • 시간
  • 보안

인터넷 전송 프로토콜이 제공하는 서비스

  • 전송 프로토콜 : TCP, UDP
  • 전송 프로토콜은 시간과 대역폭을 보장하지 않음

TCP

  • 연결 지향형 : 메시지 전송 전 핸드셰이킹
  • 신뢰적인 데이터 전송 : 프로세스는 모든 데이터를 오류없이 순서대로 전송
  • 두 프로세스가 서로에게 동시에 메시지를 보낼 수 있음 --> 전이중 연결(Full-duplex)

UDP

  • 최소 서비스 모델, 간단한 전송 프로토콜
  • 비연결형 : 메시지 전송 전 핸드셰이킹 안함
  • 비신뢰적인 데이터 전송 : 메시지가 수신 소켓에 도착하는 것을 보장 X, 메시지의 순서가 바뀔 수 있음
  • 혼잡제어 X --> UDP로 송신하면 데이터를 원하는 속도로 네트워크 계층으로 전송할 수 있음

애플리케이션 계층 프로토콜

  • 애플리케이션 계층 프로토콜을 다음을 정의함
    • 교환 메시지 타입
    • 메시지 타입의 문법
    • 필드에 있는 정보의 의미
    • 메시지 전송/응답 결정 규칙
  • HTTP, SMTP ...

HTTP(HyperText Transfer Protocol)

  • HTTP는 클라이언트 프로그램과 서버 프로그램으로 구현됨
  • 클라이언트, 서버는 HTTP 메시지를 통해 통신함
  • 웹 페이지는 객체로 구성
  • 객체는 단일 URL로 지정할 수 있는 하나의 파일
  • 웹서버는 이러한 웹 객체를 가지고 있음
  • HTTP는 TCP를 전송프로토콜로 사용함
  • 브라우저/서버의 프로세스는 소켓 인터페이스를 통해서 TCP로 접속함
  • 서버는 클라이언트에 대한 어떤 상태 정보도 저장하지 않음 --> 비상태 프로토콜

비지속 연결, 지속 연결

비지속 연결 HTTP

  • HTTP는 클라이언트가 웹 페이지를 어떻게 해석하는지 관심이 없음
  • 각 TCP 연결은 하나의 요청 메시지에 하나의 응답 메시지만 전송
  • 각 요청 객체마다 새로운 연결이 맺어져야 함
  • 매번 TCP 연결과정을 수행하기에 송수신 시간이 객체만큼 증가함

지속 연결 HTTP(1.1)

  • 서버는 응답을 보낸 후 TCP 연결을 유지함
  • 진행중인 요청에 대한 응답을 기다리지 않고 계속해서 요청을 송신할 수도 있음 --> Pipelining
  • 보통 서버는 일정 시간 사용되지 않으면 연결을 끊음
  • HTTP1.1의 디폴트는 파이프라이닝 지속 연결

웹 캐싱

  • 웹 캐시/프록시 서버
    • 웹 서버를 대신하여 HTTP 요청에 응답하는 네트워크 /개체
    • 자체 저장 디스크 보유 --> 최근 호출된 객체 사본 저장
  • 캐시는 서버이면서 클라이언트
  • 클라이언트의 요구에 응답시간을 단축할 수 있음
  • 인터넷 접속 링크 상의 트래픽을 줄여줌
  • CDN(Content Distribution Network)

조건부 GET

  • HTTP는 모든 객체가 최신인지 확인하며 캐싱함

인터넷 전자메일

  • 인터넷 전자메일 시스템은 사용자 에이전트, 메일 서버, SMTP로 이뤄져 있음
  • 사용자 에이전트 : 애플의 Mail 앱, MS의 Outlook 등
  • 메일 서버 : 메일박스를 가지고 있음. 메시지 큐를 통해 재전송 등 수행

SMTP(Simple Mail Transfer Protocol)

  • 메일 전송 프로토콜, TCP를 이용
  • 지속 연결
  • Push Protocol
  • 메시지가 ASCII 포맷이도록 요구함
  • Push Protocol이기 때문에 메일서버에서 메일을 확인하려면 POP3 or IMAP, HTTP 등을 이용해야 함

POP3(Post Office Protocol version 3)

  • 매우 간단한 메일 접속 프로토콜
  • 에이전트가 메일서버의 port : 110 를 통해서 TCP 연결을 할 때 작동
  • 인증, 트랜잭션, 갱신의 과정이 있음
  • 원격 폴더를 생성 X, 폴더에 메시지 할당 X

IMAP(Internet Mail Access Protocol)

  • 메일 접속 프로토콜
  • IMAP 서버는 폴더에 각각의 메시지를 연결
  • 사용자가 폴더를 생성하고 폴더 간 메시지 이동 명령 제공
  • 특정 조건에 맞는 원격 폴더 찾기 명령 제공
  • IMAP 세션을 통해서 사용자의 상태 정보 유지

웹 기반 전자메일(HTTP)

  • 에이전트 == 웹 브라우저
  • HTTP를 통해서 메일 서버 내 메일박스와 통신
  • 브라우저 - 메일 서버 --> HTTP, 메일 서버 - 메일 서버 --> SMTP

DNS

  • Hostname : 호스트에 대한 식별자
  • 호스트 네임은 라우터가 처리하는 데 어려움
  • 호스트는 IP 주소로도 식별 가능
  • 호스트를 IP로 변환해주는 디렉터리 서비스
  • DNS 서버들의 계층구조로 구현된 분산 데이터베이스
  • 호스트가 분산 데이터베이스로 질의하도록 허용하는 애플리케이션 계층 프로토콜
  • DNS는 다른 애플리케이션 프로토콜(HTTP, SMTP, FTP 등)이 사용자가 제공한 호스트 네임을 IP 주소로 변환하기 위해 사용됨
  • 주요 기능
    • 호스트 네임 -> IP 주소 변환
    • 호스트 앨리어싱(host aliasing) : 별칭 호스트 네임에 대한 정식 호스트 네임 확보
    • 메일 서버 앨리어싱(mail server aliasing)
    • 부하 분산(load distribution)
  • 분산 계층 데이터베이스 : 루트 DNS 서버 <- 최상위 레벨 도메인 서버 <- 책임 DNS 서버. 자원 레코드 저장
  • DNS 캐싱 제공

CDN(Contents Distribution Network)

  • 다수의 지역에 분산된 서버를 배치. 서버에 콘텐츠 적재하여 운영
  • 서버 배치 철학
    • Enter Deep
      • 서버 클러스터를 세계 곳곳 접속 네트워크에 구축 --> ISP의 접속 네트워크로 깊이 들어감
      • 서버를 최대한 사용자 가까이에 위치 --> 사이의 링크와 라우터 수를 줄임
      • 서버 클러스터 유지 관리 비용이 커짐
    • Bring Home
      • 핵심 지점에 대규모 서버 클러스터 구축
      • 클러스터는 인터넷 교환지점(IXP)에 배치
      • 상대적으로 지연시간, 처리율이 불리함
  • 동작방식
    • 사용자 호스트의 요청을 가로챔 --> 적당한 CDN 클러스터 선택 --> 요청을 해당 클러스터에 연결