Application Layer
- 인터넷 프로토콜 스택에서 가장 상위 레이어
- End systems들에게 여러가지 서비스를 제공하거나 받는 부분을 책임.
- 보통 애플리케이션과 이를 지원하는 프로토콜까지 application layer에 속함.
- 대부분 client-server 구조.
- 반례로 peer-peer(P2P)가 있는데 요새는 많이 안씀.
Web
HTTP
- Web의 application layer protocol.
- client-server 구조.
- TCP 사용.
- stateless : server는 과거 client 정보들을 기억하지 않음.
- 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 방식을 따름
- HTTP 2.0은 Hol blocking을 완화시켜줌
HTTP 3.0
쿠키
-
HTTP는 기본적으로 statelss, state를 유지하고자 할때 쿠키 사용
-
주로 세션 관리, 개인화, 트래킹 등에서 사용됨
-
쿠키는 key-value 형태
-
쿠키 흐름
- 클라이언트가 서버에 요청하면 서버는 응답할때 쿠키에 저장하고자 하는 정보를 Header의 Set-Cookie로 전달
- 클라이언트는 쿠키 값을 브라우저에 저장
- 클라이언트는 서버로 전송하는 요청에 현재 브라우저에 저장된 쿠키를 Header의 Cookie로 전달
- 서버는 쿠키값을 토대로 클라이언트 식별
-
서드 파티 쿠키 : 사용자가 방문한 웹사이트가 아닌, 다른 웹사이트에서 발행한 쿠키 파일
- 유저의 브라우저 히스토리를 추적할 수 있어서 프라이버시 침해 논란이 있음
- 점점 서드 파티 쿠키를 막고 있음.
캐시
WEB 캐시
- origin 서버의 개입 없이 클라이언트의 요구를 충족시킬 수 있음.
- 캐시에 object가 있으면 캐시에서 클라이언트로 rsponse 응답
- 케시에 object가 없으면 서버에 요청
- 서버, 클라이언트 역할 모두 가능하므로 proxy server라고도 불림
- 캐시를 통해 클라이언트의 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