Application Layer

이상훈·2023년 7월 11일
0

CS

목록 보기
16/27

Application Layer

  • 인터넷 프로토콜 스택에서 가장 상위 레이어
  • End systems들에게 여러가지 서비스를 제공하거나 받는 부분을 책임.
  • 보통 애플리케이션과 이를 지원하는 프로토콜까지 application layer에 속함.
    • ex) web <-> Http.
  • 대부분 client-server 구조.
    • 반례로 peer-peer(P2P)가 있는데 요새는 많이 안씀.

Web

HTTP

  • Web의 application layer protocol.
  • client-server 구조.
  • TCP 사용.
  • stateless : server는 과거 client 정보들을 기억하지 않음.
    • state를 유지하면 성능과 보안에 취약함.
  • HTTP message format

HTTP 1.0

  • Non-persistent HTTP
    • TCP connection당 object를 최대 1개만 전송 가능
    • 따라서 다수의 object를 보내려면 다수의 connection이 필요하는데 이는 os의 성능과 response time에 부담이 됨.

      HTTP response time : 2RTT + file transmission time

HTTP 1.1

  • 현재 가장 많이 사용되는 HTTP 버전
  • 1.0 버전과 달리 connection을 열어둠
  • 커넥션을 통해 다수 object 송, 수신

HTTP 2.0

  • 서버는 기본적으로 FCFS 방식을 따름
    • 이로인해 HOL blocking 발생
  • HTTP 2.0은 Hol blocking을 완화시켜줌

HTTP 3.0

  • 기존과 달리 UDP 사용

쿠키

  • HTTP는 기본적으로 statelss, state를 유지하고자 할때 쿠키 사용

  • 주로 세션 관리, 개인화, 트래킹 등에서 사용됨

  • 쿠키는 key-value 형태

  • 쿠키 흐름

    1. 클라이언트가 서버에 요청하면 서버는 응답할때 쿠키에 저장하고자 하는 정보를 Header의 Set-Cookie로 전달
    2. 클라이언트는 쿠키 값을 브라우저에 저장
    3. 클라이언트는 서버로 전송하는 요청에 현재 브라우저에 저장된 쿠키를 Header의 Cookie로 전달
    4. 서버는 쿠키값을 토대로 클라이언트 식별
  • 서드 파티 쿠키 : 사용자가 방문한 웹사이트가 아닌, 다른 웹사이트에서 발행한 쿠키 파일

    • 유저의 브라우저 히스토리를 추적할 수 있어서 프라이버시 침해 논란이 있음
    • 점점 서드 파티 쿠키를 막고 있음.

캐시

WEB 캐시

  • origin 서버의 개입 없이 클라이언트의 요구를 충족시킬 수 있음.
    • 캐시에 object가 있으면 캐시에서 클라이언트로 rsponse 응답
    • 케시에 object가 없으면 서버에 요청
  • 서버, 클라이언트 역할 모두 가능하므로 proxy server라고도 불림
    • nginx로 여기에 포함됨
  • 캐시를 통해 클라이언트의 request에 대한 response time을 줄일 수 있음.
  • 네트워크 traffifc을 줄일 수 있음
  • 서버는 HTTP response header에 허용 가능한 캐시 정책 명시.
    • Cache-Control : max-age=<seconds> : object의 유효기간 명시
    • Cache-Control : no-cache : 캐시하기 전에 서버에세 최신본 여부를 확인

Browser 캐시

  • 브라우저가 이미 가지고 있는 object에 대한 요청을 보내는데 최신본이면 리소스 낭비
  • 브라우저가 HTTP request의 Last-Modified 필드를 통해 요청
  • 서버는 브라우저의 object가 최신본인지 판단해서 response 반환
    • 304 Not Modified : 최신본이라는 뜻, 재사용
    • 200 OK, <data> : 최신본이 아님, 최신본 object 반환

DNS

  • Ip주소와 도메인명을 매핑해주는 서비스
  • 분산형, 계층형 구조

Root : ICANN이 직접 관리하는 절대 존엄 서버, TLD DNS 서버 IP 주소를 저장하고 안내하는 역할
TLD : 도메인 등록 기관이 관리하는 서버, Authoritative DNS 서버의 주소를 저장하고 안내하는 역할
Authoritative : 실제 개인 도메인과 IP 주소의 관계가 기록(저장, 변경)되는 서버

Q : engineering.nyu.edu의 학생이 gaia.cs.umass.edu에 접속하고자 할때


Video Streaming

DASH

  • Dynamic, Adaptive Streaming over HTTP
  • 멀티미디어 스트리밍을 위한 프로토콜
  • 유튜브, 넷플릭스 등에서 사용
  • CDN을 이용
    • CDN : Content distribution networks의 약자로 지리적으로 분산된 여러개의 서버

server

  • 비디오 파일을 여러 chunk로 쪼갠다.
  • 각각의 chunk들은 다양한 비율로 인코딩되어 있다(ex : 고화질, 중화질, 저화질)
  • 각각의 chunk들은 서로 다른 파일로 여러 CDN 노드들에 복제되어있다.
  • 서버는 클라이언트에게 각각의 chunk들의 URL을 제공한다.

client

  • 클라이언트는 주기적으로 서버와 클라이언트 사이 대역폭을 측정한다.
  • 클라이언트는 대역폭에 따라 동적으로 서버에게 chunk 파일을 요청한다.
    • 한 영화라 하더라도 갑자기 네트워크 상황에 따라 저화질에서 고화질로 변경될 수 있다.

ex) : Netflix

profile
Problem Solving과 기술적 의사결정을 중요시합니다.

0개의 댓글