Application Layer


목표

  • 네트워크 애플리케이션 프로토콜의 개념적, 구현 측면
  • 운송 계층 서비스 모델
  • 클라이언트-서버 패러다임
  • P2P 패러다임

  • 널리 사용되는 애플리케이션 레벨 프로토콜을 검사하여 프로토콜에 대해 알아본다
  • HTTP
  • FTP
  • SMTP / POP3 / IMAP
  • DNS
  • 네트워크 애플리케이션 생성
  • 소켓 API

네트워크 앱들

  • 이메일
  • 텍스트 메시지
  • 원격 로그인
  • P2P 파일 공유
  • 멀티 유저 네트워크 게임
  • 스트리밍 서비스
  • VOIP
  • 실시간 화상 회의
  • 소셜 네트워킹
  • 검색

새로운 네트워크 어플리케이션을 만드는 것

  • 다른 엔드 시스템에서 실행
  • 네트워크를 이용한 통신
  • 예) 웹서버는 네트워크 장치용 소프트웨어를 작성할 필요 없이 브라우저 프로그램과 통신한다
  • 네트워크 장치가 사용자 애플리케이션을 실행하지 않음
  • 엔드 시스템의 애플리케이션을 통해 신속한 앱 개발, 보급 가능

프로세스 통신

  • 프로세스 : 호스트 내에서 실행 중인 프로그램
    • 동일한 호스트 내에서 프로세스 간 통신(OS에 의해 정의됨)을 사용하여 두 프로세스가 통신한다.
    • 서로 다른 호스트의 프로세스 간에 메시지 교환으로 통신
  • 클라이언트 프로세스 : 프로세스가 통신을 시작한다.
  • 서버 프로세스 : 프로세스가 연락받을 때까지 기다린다.

  • 별도로 : P2P 아키텍처를 사용하는 애플리케이션에는 클라이언트 프로세스 및 서버 프로세스가 있다.

소켓

  • 프로세스는 메시지를 소켓을 이용하여 보내거나 받을 수 있다.
  • 문과 비슷한 소켓
    • 프로세스 밀치기 메시지 전송
    • 전송 프로세스는 수신 프로세스 시 소켓에 메시지를 전달하기 위해 다른 쪽에 있는 전송 인프라에 의존한다.

프로세스 주소 지정

  • 메시지를 받으려면 프로세스에는 식별자가 있어야 한다
  • 호스트 장치의 고유한 32비트 IP 주소
  • Q : 어떤 프로세스가 실행되는 호스트의 IP주소는 프로세스를 알아내는 데 충분한가?
    • 아니요, 같은 호스트에서 많은 프로세스가 작동중일 수 있다.
  • 식별자에는 호스트의 프로세스와 관련된 IP주소와 포트 번호가 모두 포함됩니다.
  • 포트번호 예) HTTP (80), 메일서버(25), IP 주소, 포트번호

무슨 전송 서비스가 앱에 필요한가?

데이터 통합

  • 몇몇 앱들은(파일 전송 웹 트랜잭션) 100% 신뢰할 수있는 파일 전송을 요구한다.
  • 다른 앱들(오디오) 일부 손실을 견딜 수 있다.

타이밍

  • 몇몇 앱들은(인터넷 전화, 게임) 낮은 지연시간을 요구한다.

쓰루풋

  • 몇몇 앱들은(멀티미디어) 최소 처리량이 “효과적”이어야 한다.
  • 다른 앱(“탄력적인 앱”)은 모든 처리량을 활용한다.

보안

  • 암호화, 데이터 무결성
application data loss throughput time sensitive
file transfer 손실 없음 탄력적 no
이메일 손실 없음 탄력적 no
웹 문서 손실 없음 탄력적 no
실시간 오디오/비디오 손실 견딤 오디오 : 5kbps-1Mbps 비디오 : 10kbps-5Mbps yes, 100’s msec
저장된 오디오/비디오 손실 견딤 같은 앱위에  
상호작용 게임 손실 견딤 몇몇 kbps 이상 yes, few secs
텍스트 메시징 손실 견딤 탄력적 yes, 100’x msec

인터넷 전송 프로토콜 서비스

TCP 서비스

  • 송수신간 신뢰할 수 있는 전송
  • 흐름 제어 : 송신자가 수신자를 압도하지 않음
  • 혼잡 제어 : 네트워크 과부하시 쓰로틀 보낸다
  • 제공하지 않음 : 타이밍, 최소 처리량 보장, 보안
  • 연결 지향 : 클라이언트와 서버 프로세스 간 설정 필요

UDP 서비스

  • 송수신간 신뢰할 수 없는 데이터를 전송한다.
  • 제공하지 않는 것 : 신뢰성, 흐름제어, 혼잡 제어, 타이밍, 처리량, 보장, 보안, 연결 설정

TCP 보안

TCP&UDP

  • 암호화 X
  • 클리어텍스트 비번은 소켓을 통해 보낸다.
  • 암호화된 TCP연결을 제공한다
  • 데이터 무결성
  • 엔드포인트 인증

SSL은 앱 레이어에 있다.

  • 앱들은 SSL 라이브러리를 사용한다.

SSL 소켓 API

  • cleartext passwds는 소켓으로 인터넷에 암호화해서 보낸다.

앱 계층 프로토콜 정의

  • 교환되는 메시지의 유형
  • 예): 요청, 응답
  • 메시지 구문 : 메시지의 필드, 필드 설명 방법
  • 메시지 의미론
  • 분야 정보의 의미
    • 프로세스가 열린 프로토콜 메시지를 보내고 응답하는 시기와 방법에 대한 규칙
  • RFC에 정의되어 있다
  • 상호운용성 허용
  • HTTP, SMTP 프로토콜 - Skype

  • 네트워크 애플리케이션 및 애플리케이션 계층 프로토콜의 구분
  • 웹 애플리케이션은 다음과 같은 많은 구성요소로 구성된다.,
    • 문서 형식 표준(HTML)
    • 웹 브라우저(Firefox)
    • 웹 서버(Apache)
    • 응용 프로그램 계층 프로토콜(HTTP)
    • 애플리케이션 계층 프로토콜은 네트워크 애플리케이션의 한 부분일 뿐 HTTML 는 웹 애플리케이션의 한 부분일 뿐이다.
    • 이메일의 주요 애플리케이션 계층 프로토콜인 SMTP는 하나의 애플리케이션 일 뿐이다.