Տեղեկացնում ենք ձեզ, որ սույն թվականի ապրիլի 22-ին՝ ժամը 13:15-ից ԵՊՀ գլխավոր մասնաշենքին հարակից տարածքում տեղի կունենա ՀՀ պետական բուհերի ուսանողների պարտադիր զինվորական ծառայության տարկետման իրավունքով մագիստրական և ասպիրանտական տեղերի զգալի չափով նվազեցման դեմ բողոքի ցույց և ՀՀ վարչապետին ուղղվելիք դիմումին միանալու ստորագրահավաք: Ապրիլի 22-ին՝ ժամը 13:15 ՀԱՄԱԽՄԲՎԵՆՔ ՀԱՆՈՒՆ ԱՆԸՆԴՀԱՏ և ԱՄԲՈՂՋԱԿԱՆ ՈւՍՈԻՑՄԱՆ, ՈՐՆ ԱՆՀՐԱԺԵՇՏ Է ԵՐԿՐԻ ԳԻՏԱԿԱՆ, ՏՆՏԵՍԱԿԱՆ, ՄՇԱԿՈՒԹԱՅԻՆ ԶԱՐԳԱՑՄԱՆԸ: Ցույցը արտոնված է Երևանի քաղաքապետարանի կողմից:
Archive for April, 2010
իսկ մեր ծրագրավորման գիտելիքները անցյալում ընդհանրապես պետք չէին գա ![]()
Ի՞նչ դժվարություններ ու խնդիրներ են առաջանում BitTorrent համակարգով ֆայլերի փոխանակման ժամանակ, ի՞նչ լուծումներ կան…
Սկիզբը` Torrents: Մաս 1
Նոր peer-ների հայտնաբերումը
BitTorrent համակարգի առաջին վերսիաներում peer-ները միմյանց կարող էին գտնել միայն որոշակի tracker-ի միջոցով: Client-ը tracker-ին ուղարկում է տոռենտի hash-ը, իսկ tracker-ը վերադարձնում է այդ տոռենտի փոխանակությանը մասնակցող peer-ների IP-ների ցուցակը (այդ peer-ների խումբը անվանում են swarm): Սակայն հաճախ միայն մի tracker-ի գոյությունը բավարար չէ BitTorrent-ի անխափան աշխատանքի համար: Նախ, tracker-ը կարող է ժամանակավորապես շարքից դուրս գալ, ինչ-որ պատճառով անհասանելի դառնալ, կամ ընդհանրապես վերանալ (օրինակ` դատարանի որոշման արդյունքում): Մյուս կողմից, նույն ֆայլերի (նույն hash-ով տոռենտի) փոխանակություն կարող է տեղի ունենալ նաև այլ tracker-ների միջոցով: Ինչո՞ւ չկապվել նաև այդ peer-ների հետ…
Ժամանակակից բոլոր տարածված BitTorrent client-ները սատարում են մի շարք տեխնոլոգիաներ, որոնք թույլ են տալիս գտնել և ֆայլերի փոխանակման մեջ ներգրավել ավելի ու ավելի շատ peer-ներ:
Multi-tracker. .torrent ֆայլում գրվում է ոչ թե մեկ, այլ մի քանի tracker-ների հասցեներ: Client-ը peer-ների IP-ներ ստանում է մի քանի անկախ աղբյուրներից, և դրանցից մեկի խափանումը չի կանգնեցնում ֆայլերի փոխանակությունը:
Peer Exchange. Client-ը peer-ների IP-ներ ստանում է ոչ միայն tracker-ներից, այլև այլ peer-ներից: Եթե մի peer-ը «գիտի» ինչ-որ IP, որ tracker-ում գրանցված չէ, ապա այն այդ մասին «տեղեկացնում է» փոխանակմանը մասնակցող մյուս peer-ներին:
Local Peer Discovery. Client-ը փորձում է գտնել իրեն մոտ IP-ներով peer-ներ` նույն ինտերնետ պրովայդերի (ISP) բաժանորդներ: Սրա հիմնական առավելությունն այն է, որ միևնույն ISP-ի բաժանորդների միջև կապը կարող է ավելի արագ լինել:
DHT. Ներկայիս BitTorrent client-ները հնարավորություն են տալիս peer-ներ գտնել բացարձակապես առանց tracker-ների մասնակցության: Դա կատարվում է այսպես կոչված Distributed Hash Table-ի (DHT) միջոցով: Յուրաքանչյուր client կատարում է tracker-ի դեր և իրեն դիմող peer-ներին օգնում է գտնել նոր peer-ներ:
DHT-ի աշխատանքը կարելի է մոտավորապես պատկերացնել այսպես. client-ները կապ հաստատելուց միմյանց տեղեկացնում են, արդյոք իրենք սատարում են DHT, թե ոչ: DHT սատարող client-ները ստեղծում են հատուկ «ցանց», որի գագաթները (node-երը) բնորոշվում են որոշակի թվով (ID-ով): Որպես ID վերցվում է հենց համապատասխան տոռենտի hash-ը: Նոր peer-ներ գտնելու համար client-ը դիմում է իր շրջապատի այն node-երին, որոնց ID-ները «ամենամոտն» են փնտրվող hash-ին: Նրանք որպես պատասխան ուղարկում են իրենց «հարևաններից» այն node-երի տվյալները, որոնց ID-ները ամենամոտն են: Հաջորդ քայլում client-ը դիմում է այդ նոր node-երին և նրանցից ստանում է նոր node-երի ցուցակներ: Ամեն քայլում գտնված node-երի ID-ները ավելի ու ավելի մոտ են լինում փնտրվող hash-ին: Այս պրոցեսը շարունակվում է մինչև ճշգրիտ նույն hash-ը ունեցող node-ի գտնվելը:
Leecher-ների խնդիրը
Օգտագործողները շատ հաճախ տոռենտը ամբողջությամբ քաշելուց հետո կանգնեցնում են upload-ը, կամ ընդհանրապես տեղափոխում են բեռնված ֆայլերը: Դա հանգեցնում է նրան, որ swarm-ում պակասում են seeder-ները, և մեծ թիվ կազմող leecher-ները չեն կարողանում ստանալ տոռենտի իրենց անհրաժեշտ կտորները: Արդյունքում նվազում է տվյալների փոխանակման արագությունը և ընդհանրապես BitTorrent-ի արդյունավետությունը:
Այս խնդիրը լուծելու համար շատ tracker-ներ փորձում են ստիպել օգտագործողներին երկար ժամանակ մնալ swarm-ում և բեռնած ինֆոմացիան ուղարկել այլ peer-ների: Նախ, tracker-ը .torrent ֆայլը տրամադրում է միայն գրանցված այցելուներին: Յուրաքանչյուր այցելուի համար հաշվարկվում է նրա կատարած download-ի և upload-ի հարաբերությունը (upload ratio): Ըստ այդ ratio-ի հաշվարկվում է ռեյտինգ, և այն օգտագործողներին, որոնց ռեյտինգը ինչ-որ սահմանված թվից փոքր է լինում, որոշակի ժամանակ հետո արգելվում է նոր .torrent-ներ բեռնել:
Իրականում tracker-ը հաշվում է միայն իր մոտ գրանցված peer-ների միջև (իր swarm-ի շրջանակներում) կատարվող տվյալների փոխանակությունը (traffic-ը): Եթե օգտագործողը ինչ-որ կտորներ քաշել կամ ուղարկել է մի peer-ի, որը tracker-ում գրանցված չէ (օրինակ` DHT-ի միջոցով գտնված peer-ի), ապա այդ տրաֆիկը tracker-ը չի հաշվում: Դա է հիմնական պատճառը, որ tracker-ի ցույց տված download/upload-ի ծավալները երբեմն չեն համընկնում client-ի ցույց տված թվերի հետ:
Այս սկզբունքով աշխատող tracker-ները սովորաբար ապահովում են մեծ արագություններ բոլոր տոռենտների համար: Հատկապես էական է տարբերությունը փոքր պահանջարկ ունեցող տոռենտների համար (օգտագործողները աշխատում են «պահել» այն տոռենտները, որոնց seeder-ները քիչ են, քանի որ նոր leecher-ի հայտնվելու դեպքում վերջինին ավելի շատ տվյալներ փոխանցելու հնարավորություն կլինի` seeder-ների միջև «մրցակցություն» քիչ կլինի): Սակայն այս դեպքում էլ տուժում են այն օգտագործողները, որոնց upload-ի արագությունը շատ փոքր է download-ի արագությունից:
Քանի որ tracker-ը իրականում չի մասնակցում տվյալների փոխանակմանը, այն չունի անմիջական հնարավորություն իմանալու, թե peer-ները միմյանց ինչքան տվյալներ են փոխանցում: Ուստի tracker-ը ստիպված է «հավատալ» client-ի կողմից իրեն ուղարկված վիճակագրությանը: Սա նշանակում է, որ tracker-ին կարելի է «խաբել»` նրան «զեկուցել» upload-ի ավելի մեծ ծավալներ, քան իրականում եղել է: Հենց դա են կատարում իրենց «leecher-ների փրկիչ» անվանող ծրագրերը, ինչպես օրինակ` GreedyTorrent-ը:
Օրինական հարցերը
BitTorrent համակարգով աշխարհում փոխանցվում է ահռելի չափերի ինֆորմացիա: Ըստ որոշ գնահատականների, ինտերնետով տվյալների փոխանցման կեսից մի փոքր ավելին բաժին է ընկնում BitTorrent-ին: Բնականաբար, այդ ծավալների զգալի մասը կազմում են ոչ օրինական փոխանակությունները: Տոռենտների տեսքով փոխանցվում են թանկարժեք համակարգչային ծրագրեր, երաժշտական ալբոմներ, ֆիլմեր և այլն և այլն: Այդ պատճառով խոշոր կինոստուդիաները, ծրագրավորման ընկերությունները մշտական պայքարի մեջ են tracker-ների հետ:
Շվեդիայի ոստիկանությունը վերջին տարիներին մի քանի անգամ անջատել է աշխարհի թերևս ամենամեծ tracker-ի` The Pirate Bay-ի սերվերները: Սակայն The Pirate Bay-ը առայժմ շարունակում է աշխատել: Բայց մեծ թվով tracker-ներ դատարանների որոշումներով փակվել են: Օրինակ, 2009-ի նոյեմբերին, Հոլանդիայի դատարանի պահանջով, mininova.org կայքը դադարեցրեց ապօրինի տոռենտների սպասարկումը: Բոլորովին վերջերս Ռուսաստանի ինտերնետային միությունը դատախազության պահանջով փակեց ԱՊՀ տարածքում մեծ հեղինակություն վայելող torrents.ru դոմենը, սակայն վերջինիս tracker-ը շարունակում է նույնությամբ գործել rutracker.org հասցեում:
Ամեն դեպքում BitTorrent համակարգը մնում է ինտերնետում ֆայլերի փոխանցման հզորագույն գործիք, և դրա արդյունավետ օգտագործումը շատ օգտակար է բոլորի համար:
P.S. BitTorrent-ով տվյալների փոխանցման հետաքրքիր վիզուալ նկարագրություն կարելի է տեսնել http://mg8.org/processing/bt.html հասցեում:
Ի՞նչ է տոռենտը, ինչպե՞ս է այն աշխատում և ի՞նչ առավելություններ ունի… փորձենք պատասխանել այս հարցերին
Ֆայլերի փոխանակությունը ինտերնետում
World Wide Web-ը ինֆորմացիայի փոխանակման հիանալի համակարգ է: Ֆայլերը տեղադրվում են որևէ կայքում` սերվերում, մարդիկ էլ կարողանում են բեռնել այդ ֆայլերը սերվերից: Այս պարզ սկզբունքը շատ լավ աշխատում է փոքր ծավալի (տեքստային) ինֆորմացիայի դեպքում: Սակայն մեծ ծավալի ինֆորմացիայի փոխանակման ժամանակ պարզ է դառնում, որ այս «կենտրոնացված»` մեկ սերվերից կախված սկզբունքը արդյունավետ չէ: Օրինակ` այն պատճառով, որ եթե մեկ միլիոն մարդ ուզենա բեռնի միևնույն մեծ ֆայլը, սերվերը ստիպված պետք է մեկ միլիոն անգամ ուղարկի նույն ֆայլը, ինչը կազմակերպելը բավական բարդ է և թանկ: Մյուս կողմից բոլորովին անտեսվում է այն փաստը, որ այդ մեկ միլիոնը կարող են միմյանց մեջ փոխանակել այդ ֆայլի, թեկուզ, ինչ-որ կտորներ:
Վերջին տարիներին ստեղծվել են մի շարք “ապակենտրոնացված” համակարգեր, որոնք ավելի արդյունավետ են կազմակերպում ֆայլերի փոխանակությունը. դրանցից ամենատարածվածը BitTorrent կոչվող համակարգն է:
BitTorrent համակարգը
BitTorrent համակարգում ֆայլերի փոխանցմանը մասնակցում են բոլոր այն համակարգիչները, որոնք ունեն փոխանակվող ֆայլը կամ նրա մի մասը: Այդ համակարգիչները կոչվում են peer (ոչ մի տերմին չեմ թարգմանելու): Այն peer-ները, որոնք ունեն ֆայլը ամբողջությամբ, կոչվում են seeder, մյուսները` leecher:
Peer-ների մասին ինֆորմացիան պահվում է հատուկ տիպի սերվերներում, որոնք կոչվում են tracker: Tracker-ը ինչ-որ իմաստով կոորդինացնում է ֆայլի փոխանակությունը, սակայն այն չունի այդ ֆայլը և փոխանակմանը չի մասնակցում: BitTorrent համակարգով ֆայլերի փոխանակմանը մասնակցելու համար պետք է ունենալ հատուկ ծրագիր` Bittorent client:
Գոյություն ունեն բազմաթիվ BitTorrent client-ներ` բոլոր օպերացիոն համակարգերի համար: Դրանք տարբերվում են հարմարավետությամբ, user-interface-ով և որոշակի լրացուցիչ հնարավորություններով: Առաջին client-ը ստեղծել են BitTorrent համակարգի հեղինակները և անվանել նորից BitTorrent: Սակայն այժմ ավելի լայն տարածում ունեն µTorrent-ը և Vuze-ը:
Տվյալների փոխանակման պրոցեսը
Առաջին peer-ը, ով տարածում է ֆայլը (կամ ֆայլերի խումբը), ստեղծում է հատուկ .torrent ֆորմատի ֆայլ, որին անվանում են հենց torrent: Այդ ֆայլում գրվում է ինֆորմացիա փոխանակվող ֆայլերի, ինչպես նաև tracker-ի մասին: Ֆայլերը քաշելու համար օգտագործողը պետք է ունենա այդ .torrent ֆայլը, որը հիմնականում տեղադրվում է ինչ-որ կայքում: Գոյություն ունեն հարյուրավոր կայքեր, որոնք նախատեսված են այդ .torrent-ները գտնելու և բեռնելու համար: Բոլոր tracker-ները ունեն իրենց կից այդպիսի կայքեր (ինչպես օրինակ հանրահայտ thepiratebay.org, rutracker.org): Սակայն կան նաև կայքեր, որոնք չունեն իրենց tracker-ը և պահում են տարբեր tracker-ներին պատկանող .torrent-ներ (օրինակ` torrentz.com, isohunt.com):
Ի՞նչ է գրված .torrent ֆայլում
BitTorrent համակարգում ֆայլերը փոխանակվում են կտորներով (piece): Ֆայլերը բաժանվում են ֆիքսված չափսի piece-երի, որոնք կարող են լինել 32KB-ից մինչև 4MB (ընդ որում` մի piece-ում կարող են լինել միանգամից մի քանի ֆայլերի մասնիկներ): Յուրաքանչյուր piece-ի համար հաշվարկվում է նրա այսպես կոչված hash-ը: Hash-ը դա տվյալ կտորին համապատասխանող հատուկ թիվ է: Այն հաշվարկվում է այնպիսի ալգորիթմով, որ գործնականում անհնար լինի գտնել տարբեր բովանդակությամբ այնպիսի 2 կտորներ, որոնց նույն թիվը համապատասխանի: Դա հնարավորություն է տալիս գտնել տվյալների փոխանակման ժամանակ առաջացած սխալները, և սխալ բովանդակություն ունեցող կտորները չխառնել մյուս կտորներին:
.torrent ֆայլում, բացի tracker-ների մասին ինֆորմացիայից, պահվում են փոխանակվող ֆայլերի բոլոր կտորներին համապատասխանող այդ թվերը` hash-երը: Եթե բեռնված կտորի համար հաշվված hash-ը չի համապատասխանում .torrent ֆայլում գրված hash-ին, ապա այդ կտորը չեղյալ է համարվում (այս երևույթը կոչվում է hashfail):
Որքան մեծ լինեն piece-երի չափսերը, այնքան (տեսականորեն) մեծ կլինի տարբեր բովանդակությամբ կտորների hash-երի համընկնման, ուստի նաև` սխալվելու հավանակությունը: Բայց շատ մեծ ծավալի ֆայլերի և փոքր piece-երի դեպքում մեծ կլինի piece-երի քանակը, և .torrent ֆայլը կդառնա չափազանց մեծ:
Օգտագործողը քաշում է համապատասխան .torrent ֆայլը, բացում է այն իր ունեցած client ծրագրով և սկսվում է փոխանակությունը: Ծրագիրը կապվում է tracker-ի հետ, ստանում է peer-ների մասին ինֆորմացիա (նրանց IP հասցեները) և փորձում է կապվել նրանց հետ: Յուրաքանչյուր peer-ին ուղարկվում է հարցում` որոշակի կտոր ստանալու համար: Ամեն մի կտորի բեռնվելուց հետո այն ստուգվում է, և եթե ամեն ինչ ճիշտ է, կցվում է ընդհանուր բեռնվող ֆայլին: Որոշակի քանակությամբ կտորներ ունենալու դեպքում օգտագործողն ինքն արդեն կարող է այդ կտորները ուղարկել այլ peer-ների:
Այս սկզբունքով աշխատանքը հնարավորություն է տալիս ֆայլերը քաշել չափազանց մեծ արագությամբ և կախված չլինել մեկ համակարգչից (սերվերից): Սա նաև թույլ չի տալիս, որ համակարգիչներից մեկը գերծանրաբեռնվի` տրաֆիկը շատ ավելի հավասարաչափ է բաշխվում բոլոր peer-ների միջև:
Իրականում, շատ բան կախված է peer-ների ընտրության սկզբունքից: Ի՞նչ հերթականությամբ և ո՞ր peer-ներից քաշել կտորները, ո՞ր peer-ներին ուղարկել ունեցած կտորները: Հաճախ կիրառվում է «արդար առևտրի» սկզբունքը. client-ը ուղարկում է այն peer-ներին, որոնցից ստացել է այլ կտորներ: Սակայն այս դեպքում տուժում են այն client-ները, որոնք դեռ ոչինչ չունեն և չեն կարող որևէ կտոր ուղարկել: Այդ պատճառով անհրաժեշտ է, որ ինչ-որ կտորներ ուղարկվեն բոլորովին պատահական peer-ների:
Կտորների քաշելու հերթականությունը հիմնականում որոշվում է ըստ այդ կտորն ունեցող peer-ների քանակի. սկզբում բեռնվում են ավելի քիչ հանդիպող կտորները: Շատ client-ներ հնարավորություն են տալիս օգտագործողին ազդել ֆայլերի բեռնման հերթականության վրա: Կարելի է բարձրացնել ինչ-որ ֆայլերի արտոնության մակարդակը (priority) և դրանք (հնարավորության դեպքում) ավելի շուտ կբեռնվեն:
Բոլորս էլ գիտենք ուսանողական գիտական ընկերության մասին (ՈՒԳԸ): Ի տարբերություն ուսխորհուրդի, որը կազմակերպում է ուսանողների ազատ ժամանցն ու հանգիստը, ՈՒԳԸ-ն կազմակերպում է ավելի գիտական և ճանաչողական միջոցառումներ (օրինակ. icon-ի տնօրենի այցը կիրառական, CQG ֆիրմայում պրակտիկայի անցման քննարկում CQG տնօրեն` Արսեն Աբրահամյանի հետ): Ուզում եմ պատմել ՈՒԳԸ կայքի մասին` www.sssysu.am, ավելի ճիշտ “իրադարձություններ” կոչվող բաժնի մասին, որը տեսնելու համար կարող եք սեղմել այստեղ:
Ֆակուլտետային ՈՒԳԸ-ների կողմից ամեն օր կազմակերպվում են բազում հետաքրքիր միջոցառումներ և հանդիպումներ, որոնց բոլորի մասին գրվում է այդ բաժնում: Այս կայքի միջոցով դուք նախապես կարող եք իմանալ համալսարանում տեղի ունեցող միջոցառումների մասին և մասնակցել դրանց: Անձամբ ես 2-3 օրը մեկ նայում եմ թե ինչ միջոցառումներ են լինելու շաբաթվա ընթացքում և պատրաստվում դրանց: Ուսխորհուրդի կայքը:
