ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 컴퓨터 네트워크 4주차: p2p, BitTorrent, DHT
    교내 강의/컴퓨터 네트워크 2024. 3. 27. 16:11

    서버-클라이언트의 구조의 경우:

        서버 입장에서 n개의 클라이언트들에게 파일을 업로드 할 때의 속도:

            nF/u(파일의 크기/업로드 속도)

        클라이언트 입장에서 하나의 파일 다운 속도:

            F/d(파일의 크기/minimum download rate

        둘 중 더 큰 값이 최종적으로 서버->n개의 클라이언트에게 파일을 보내고 다운받는 속도가 된다.

    P2P 구조의 경우:    

        서버 역할 peer의 업로드: F/u

        클라이언트 역할 peer의 다운로드 F/d

        n개의 클라이언트가 받는 총 용량 nF에서 이때의 max upload rate: u + ∑u

        위 세개의 속도 중 제일 큰 값이 최종적으로 서버->n개의 클라이언트에게 파일을 보내고 다운받는 속도가 된다.

    두 구조의 minimum distribution time 그래프

    server-client는 서버가 파일을 하나씩 다 올려야하고,

    P2P에서는 각 peers들이 1개 이상씩 올려서 N개를 맞춤

    결론: P2P의 file distribution time이 더 짧다.


    Bit Torrent!

    DHT(Distributed Hash Table):

    P2P에서 내가 원하는 파일을 어떤 peer가 가지고 있는지 중앙서버 없이 알아내기 위해 DHT가 생겨남.

     

    DHT의 구현: 참고
        1. 각 호스트의 IP 주소를 각각 해시 함수에 집어넣어서 나온 인덱스를 기록한다.
        2. 각 호스트가 가지고 있는 파일들을 각각 해시 함수에 집어넣어서 나온 인덱스를 기록한다.
        3. 어떤 호스트가 어던 파일을 찾고자 할 때 인덱스를 꼬리물기 하면서 탐색한다.

        결론: 원하는 파일을 키로 넣으면 파일의 주소를 반환 해주는 해쉬 함수로 ip주소를 얻을 수 있음

    BitTorrent: 

        하나의 peer가 다른 peer에게서 파일을 다운받아서 소유할 경우, 소유한 peer도 server역할을 할 수 있게 됨.

        Torrent:

            group of peers exchanging chunks of a file

        Tracker:
            1. 토렌트에 참여하고 있는 피어들의 리스트 보유,
            2. 새로운 peer가 네트워크에 참여서 리스트를 새 사용자에게 전달, 

            3. 사용자는 그 리스트 상에 있는 피어들에게 본인들이 가지고 있는 파일 청크 리스트를 요청 가능.
        Rarest First:

            어떤 청크를 요청할지 결정할 때 가장 적은 복사본을 가진 청크를 찾아서 먼저 요청하는 기술

            이 방법을 통해, 가장 적은 복사본을 가진 청크가 더 빠르게 재분배되며, 

            토런트 내 각 청크의 복사본 수를 균등하게 유지하는 것을 목표로 한다.

        Tit-For-Tat:

            사용자는 현재 나에게 가장 많은 chunk를 보내주고 있는 4명의 피어 사용자에게 우선적으로 chunk를 보낸다.

            10초마다 가장 많은 chunk를 보내고 있는 피어를 재평가하여 매번 갱신한다.

            우선적으로 선택되지 못한 peer에게는 전송을 보류하고 이를 choked 된 상태라고 정의한다.
            매 30초마다 앨리스는 무작위로 하나의 피어를 선택하고 chunk를 보내준다.

            이 피어는 optimistically unchoked 되었다고 한다.


    1. Video Streaming Service

    MPEG:

        프레임이 바뀔 때 변화가 있는 부분에 대한 정보(이질성)만 기록하여 용량을 줄임 

    Bit rate:

        단위 시간당 처리해야 하는 비트 수, 용량과 화질에 비례하게 영향을 줌.

    인코딩:

        비트를 처리하는 행위

        CBR(Constant Bit Rate):

            encoding rate가 일정, 보낼 비트가 많으면 부족할 수 있고, 적으면 낭비 될 수 있음.

        VBR(Variable Bit Rate):

            변화량에 따른 보낼 비트량을 감지하여 보내는 양을 변화시키는 방법

            용량을 효율적으로 사용할 수 있지만 높은 비트레이트가 요구될 때는 순간적으로 서버에 과부하를 줄 수 있음.

     

    When to start Streaming?:

    데이터의 전송 중에도 재생은 가능.
    but 대역폭은 지속적으로 변하기 때문에 전송 속도가 느려질 수 있다.
    재생 속도가 데이터의 수신속도를 능가할 경우 버퍼링 발생 가능.

    빨리감기, 되감기 등 조작 시 비디오 패킷이 사라지거나 재전송될 수 있음.
    버퍼에 일정량 쌓아뒀다가 한번에 송출하는 방법이 해결책으로 제시될 수 있음.  

     

    DASH (Dynamic Adaptive Streaming over HTTP):

    클라이언트의 네트워크 상태에 따라 적절한 비디오 화질을 선택하여 서비스를 받을 수 있는 기술(Like Youtube).

    DASH 서버:

        비디오 컨텐츠를 각기 다른 Bit rate를 갖는 여러 가지 버전으로 인코딩한 후, 비디오 데이터를 작은 Chunk 단위로 나눔.

    클라이언트:

        주기적으로 자신의 네트워크 대역폭을 설정하여 현재 대역폭으로 유지 가능한 bit rate를 적절하게 선택,

        동영상의 화질을 알맞게 선택할 수 있음. 시간이 흐르면서 대역폭이 변함에 따라 bit rate도 변경할 수 있음.

     

    CDN (Content Distribution Network):

    데이터 사용량이 많은 애플리케이션의 웹 페이지 로드 속도를 높이는 상호 연결된 서버 네트워크.

     

    웹 방문 시 서버에서 사용자까지 멀리 떨어져 있는 경우 대용량 파일을 로드하는 데 시간이 오래 걸린다. 

    따라서 웹 사이트 콘텐츠는 지리적으로 사용자와 가까운 CDN 서버에 저장되며 컴퓨터에 훨씬 빨리 도달하게 할 수 있다.
    (캐시 같은 개념?)
    마찬가지로 전국에 여러 개의 서버를 설치해 두면 사용자는 가까운 서버를 통해 컨텐츠에 빠르게 접속할 수 있게 된다.

Designed by Tistory.