CS/컴퓨터 네트워크

Chap 2: Application Layer (2)

GaeunLee 2023. 3. 9. 16:45

5. Peer-to-Peer File Distribution

1) P2P 구조

  • 상시 가동 서버가 없다. (always-on server)
  • 임의의 end system이 직접 통신한다.
  • 피어는 다른 피어에게 서비스를 요청하고 다른 피어에게 서비스를 제공한다.
    • 자체 확장성(self scalability)
    • 새로운 피어가 새로운 서비스 용량과 새로운 서비스 수요를 가져옴
  • 피어가 간헐적으로 연결되어 IP 주소가 바뀐다.
  • ex) P2P 파일 공유(BitTorrent), 스트리밍(KanKan)

 

2) File distribution

client-server model

  • 서버 전송: N개의 파일 사본을 순차적으로 전송(업로드)해야 한다.
    • 1부 전송 시간: F/us
    • N 사본을 보내는 시간: NF/us

 

  • 클라이언트: 각 클라이언트는 파일 사본을 다운로드해야 한다.
    • dmin = 최소 클라이언트 다운로드 속도
    • 최소 클라이언트 다운로드 시간: F/dmin

 

P2P model

파일 배포 시간: P2P

  • 서버 전송: 최소한 하나의 사본을 업로드해야 한다.
    • 1부 전송 시간: F/us

 

  • 클라이언트: 각 클라이언트는 파일 사본을 다운로드해야 한다.
    • 최소 클라이언트 다운로드 시간: F/dmin

 

  • 클라이언트들: 집합체가 NF 비트를 다운로드해야 한다.
    • 최대 업로드 속도(최대 다운로드 속도 제한)는
    • us + Σui

 

Client-server VS P2P

 

3) BitTorrent

  • 파일은 256KB의 청크들로 나뉜다.
  • 토렌트안의 피어들이 파일 청크를 송수신한다.

Tracker: 토렌트에 참여하는 피어를 추적한다.

Torrent: 파일 청크를 교환하는 피어 그룹

 

peer joining torrent:

  • 청크가 없지만 시간이 지나면서 다른 피어에서 누적한다.
  • tracker에 등록하여 피어 목록을 가져온다.
  • 이후 피어 하위 집합("이웃")에 연결한다.

 

  1. 다운로드하는 동안, 피어는 청크를 다른 피어에 업로드한다.
  2. 피어는 청크를 교환하는 피어를 변경할 수 있다.
  3. churn: 피어가 왔다가 사라질 수 있다.
  4. 피어가 전체 파일을 갖게 되면 (이기적으로) 나가거나 (이타적으로) 토렌트에 남을 수 있다.

 

Requesting chunks:

  • 주어진 시간에 서로 다른 동료들은 서로 다른 파일 청크의 하위 집합을 가지고 있다.
  • 주기적으로 각 피어에게 그들이 가지고 있는 청크 목록을 요청한다.
  • 피어에게 누락된 청크를 요청한다. (가장 희귀한 것부터!)

 

  •  

6. Video Streaming and Content Distribution Networks

1) Internet Video

  • 스트림 비디오 트래픽: 인터넷 대역폭의 주요 소비자 (Netflix, YouTube, Amazon Prime: 가정용 ISP traffic의 80%)
  • 비디오: 일정한 비율로 표시되는 일련의 이미지 (ex. 24 images / sec)
  • 디지털 이미지: 픽셀 배열 - 비트로 표현되는 각 픽셀
  • 코딩: 이미지를 인코딩하는 데 사용되는 # 비트를 줄이기 위해 이미지 내부 및 이미지 간에 중복성을 사용.
  • CBR(constant bit rate 고정 비트 전송률): 비디오 인코딩 속도 고정
  • VBR(variable bit rate 가변 비트 전송률): 공간적, 시간적 코딩의 양이 변화함에 따라 비디오 인코딩 속도가 변경된다.

 

2) HTTP Streaming and DASH

DASH: HTTP를 통한 동적 적응형 스트리밍

 

서버:

  • 비디오 파일을 여러 청크로 나눈다.
  • 저장되는 각 청크는 서로 다른 속도로 인코딩
  • 매니페스트 파일: 다양한 청크에 대한 URL을 제공

 

클라이언트:

  • 주기적으로 서버-클라이언트 대역폭 측정
  • 컨설팅 매니페스트, 한 번에 하나의 청크 요청
  • 주어진 현재 대역폭에서 지속 가능한 최대 코딩 속도 선택
  • 서로 다른 시점에서 서로 다른 코딩 속도를 선택할 수 있다.(시간에 사용 가능한 대역폭에 따라 다름)
스트리밍 비디오 = 인코딩 + DASH + 재생 버퍼링

 

3) Content Distribution Networks (CDN)

콘텐츠 배포 네트워크(CDN)

 

수십만 명의 동시 사용자에게 콘텐츠를 스트리밍하는 방법은?

  • 옵션 1: 단일 대형 "메가 서버"
    • 단일 장애 지점이 생길 수 있음(네트워크 정체 지점)
    • 멀리 있는 클라이언트까지의 경로가 길다.

 

  • 옵션 2: 지리적으로 분산된 여러 사이트(CDN)에서 비디오의 여러 사본 저장/제공
    • enter deep: CDN 서버를 많은 액세스 네트워크에 깊숙이 넣는다
    • 사용자에게 가까이
    • 집으로 가져오기: 액세스 네트워크 근처(내부는 아님) POP에 있는 더 작은 수(10개)의 더 큰 클러스터 • 라임라이트에서 사용

 

  • CDN: CDN 노드에 콘텐츠 사본 저장  (ex. Netflix)
    • 가입자는 CDN에서 콘텐츠를 요청한다.
    • 가까운 복사본으로 이동, 콘텐츠 검색하며, 네트워크 경로가 혼잡한 경우 다른 복사본을 선택할 수 있다.

 

7. Socket Programming: Creating Network Applications

1) Socket Programming with UDP

신뢰할 수 없는 데이터그램

UDP: 클라이언트와 서버 사이에 "연결"이 없다.

 

  • 데이터를 보내기 전에 핸드셰이킹 없다.
  • 보낸 사람은 IP 목적지 주소와 포트 번호를 각 패킷에 명시적으로 첨부
  • 수신자는 수신된 패킷 UDP에서 발신자 IP 주소 및 포트 번호를 추출한다.
  • 전송된 데이터가 손실되거나 잘못된 순서로 수신될 수 있음
  • UDP는 클라이언트와 서버 간에 신뢰할 수 없는 바이트 그룹("데이터그램") 전송을 제공

 

2) Socket Programming with TCP

신뢰할 수 있는 바이트 스트림 지향

TCP: 클라이언트는 서버에 접속해야 한다.

 

  • 서버 프로세스가 먼저 실행 중이어야 한다.
  • 서버는 클라이언트의 접속을 환영하는 소켓(도어)을 생성
  • 클라이언트는 (TCP 소켓 생성, 서버 프로세스의 IP 주소, 포트 번호 지정)을 통해 서버에 접속한다.
  • 클라이언트가 소켓을 생성하는 경우: 클라이언트 TCP는 서버 TCP와 연결을 맺음
  • 클라이언트가 접속하면 서버 TCP는 서버 프로세스가 특정 클라이언트와 통신할 수 있도록 새 소켓을 생성
  • 서버가 여러 클라이언트와 대화할 수 있다.

응용 관점 TCP는 클라이언트와 서버 간에 안정적이고 순차적인 바이트 스트림 전송("파이프")을 제공.