Application layer
- end system에서 실제로 서비스를 제공하거나 받기 위한 layer다.
- application architectures: Client-Server, P2P
Client-Server Architecture

Peer-To-Peer

- 항상 열려있는 Server가 없다.
- peer(end System)들간에 직접적으로 통신한다.
- Peer들은 다른 peer들에게 서비스를 요청하고 제공할 수 있다.
- self scalability: 새로운 peer는 서비스의 capacity를 가져온다.
- peer는 동적 IP주소를 가진다.
File distribution time

- Clinet-Server
server: N개의 파일 복사본을 순차적으로 업로드 해야한다. time = NF/Us
client: 파일 복사본을 다운로드 해야한다. time = F/dmin (dmin: min client download rate)

- P2P
Server: 최소 한 개의 파일 복사본을 업로드해야한다. time = F/Us
clinet: 파일 복사본을 다운로드 해야한다. time = F/dmin
clients: clients들의 집합은 NF bits를 다운로드 해야한다. NF/(Us+U1+U2...Un)

P2P file distribution: BitTorrent

-
파일을 256Kb의 chunks로 나누어 send/recive한다.
-
특정 파일의 분포에 참여하는 모든 Peer들을 torrent라한다.
-
Peer joining torrent
1. 일정 시간이 흐르면 다른 peer로부터 추적된다.
2. tracker는 peer들의 list를 가지고 peer들의 하위집합(이웃)에 연결한다.
-
다운로드 중에 Chunk를 다른 Peer에게 업로드 할 수 있다.
-
Peer는 chunks교환이 완료되면 Torrent에 나갈 수 도 있고 남을 수 도 있다.
-
churn: Peer가 Torrent에 나가고 들어오는 불안정성을 말한다. 그래서 Churn을 고려하여 시스템을 구현해야 한다.
- requsting chunks
1. peer끼리 서로 다른 chunks를 가지고 있다면
2. 주기적으로 peer list목록에 있는 peer에게 가지고 있지 않은 chunks를 요청한다.
- sending chunks:tit-for-tat
1. peer는 가장 많이 보내는 비율을 가진 4개의 peer들에게 chunks를 보낸다.
2. 10초 마다 가장 많이 보내는 비율을 가진 peer들을 갱신한다.
3. tit-for-tat은 자신에게 잘 공급해주는 peer에게 자신도 잘 보내주는 방식이다.
4. tit-for-tat 때문에 Top4 Peer 들에게만 Chunk가 공급 될 수 있다.
5. 그래서 30초마다 랜덤하게 4개의 peer를 고른다.
[참고] Computer Networking A Top-Down Approach EIGHTH EDITION/Kurose.Ross/Pearson