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에 등록하여 피어 목록을 가져온다.
- 이후 피어 하위 집합("이웃")에 연결한다.
- 다운로드하는 동안, 피어는 청크를 다른 피어에 업로드한다.
- 피어는 청크를 교환하는 피어를 변경할 수 있다.
- churn: 피어가 왔다가 사라질 수 있다.
- 피어가 전체 파일을 갖게 되면 (이기적으로) 나가거나 (이타적으로) 토렌트에 남을 수 있다.
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는 클라이언트와 서버 간에 안정적이고 순차적인 바이트 스트림 전송("파이프")을 제공.