Може би не съм обяснил достатъчно ясно механизма, по който eDonkey разпределя информацията между потребителите.
eDonkey предава между потребителите две съвсем отделни неща:
1. списък с eDonkey сървъри
2. списък с eDonkey клиенти, които имат същия файл, който ти в момента сваляш от мен
Да предполпжим, че ти (fori) имаш файлът movie.avi, а юзер kartoff го сваля от теб. В някакъв момент и аз решавам да свалям същия файл. Сървърът ми дава твойто IP, аз се връзвам към теб, а ти ми казваш нещо в този смисъл: "виж кво, аз този файл го имам целия, но знам, че и kartoff го има, защото го тегли от мен. Я го питай кои части от файла вече е изтеглил, за да си ги вземеш от него, пък аз да ти дам следващите". До тук - добре. Аз се връзвам към kartoff, който ми казва: "ами виж, аз имам първите 20MB, но знам, че pencho също има някаква част от файла, защото в момента тегля от него последните 50MB". Аз започвам да тегля първите 20MB от kartoff, следващите 20 от теб, и се каня да питам pencho какви части oт файла има при него. До тук - добре. Обаче междувременно Пенчо (а не pencho) си е казал "бамааму, много малко усери има, я да се вържа в goliam.edonkey.server.com". До тук е още по-добре. Ама сега аз като се свържа с pencho, той ми казва, че има тази и тази част, но освен него части от този файл имат smith, hans и toshiromifune, защото той/те сваля/т от тях/него.
И ето тук идва проблемът: няма кой да ме спре да си сваля някои части от файла от toshiromifune, който вероятно се намира някъде в Япония. Ако внимателно разгледаш горния диалог ще видиш, че аз съм се свързвал със сървъра един единствен път и той повече не ми е трябвал. Т.е. дори да ми спреш връзката към всякакви други сървъри, аз пак ще стигна до toshiromifune просто защото pencho в някакъв момент се е вързал към чужд сървър. Следователно трябва всички потребители в мрежата да ползват задължително пачната версия, а сървърите много добре да я разпознават и да отрязват моментално всички други програми. А най-добре и самата програма да отказва да се връзва с други програми. Но това ще доведе до една силно затворена мрежа, която няма да има шанс да се разрастне.
Другият вариант е да се пачне програмата така, че да не се връзва по никакъв начин с IP-та извън определен списък, който да се тегли от даден web адрес. Така дори да разбере за чуждестранен сървър или клиент, програмата няма да може да се свърже с него. Това е по-доброто решение, отколкото да се спазва пълна карантина върху сървъра. Т.е. карантината да се изнесе при клиента, а не при сървъра. Но отново идеята да се използва само една програма, която да се патчва при всяка нова версия, някак не ми допада.
Впрочем, създателите на eDonkey предвиждат сървърите въобще да изчезнат, а в кода на програмата ще са въведени достатъчно голям брой статични IP адреси на клиенти, които са онлайн достатъчно често. Този клон на програмата се казва overnet. Ако ще се пачва нещо, по-добре да се пачне тя и да няма сървъри.
Но според мен Direct Connect (DC++) ще е това, което ще се наложи - стандартен протокол, Open source решения за всякакви платформи, клиентът не излиза извън сървъра без изрично желание (ако иска може да се върже към два сървъра едновременно, без това да води до "заразяване" на единия с IP-тата от другия), виждат се логнатите клиенти и т.н.
Митко
|