Кіріспе

Интернет релейлік чатта файлдарды беру және тікелей чат протоколы

Тікелей клиенттен клиентке (DCC) (алғашқыда Тікелей клиенттік қосылым) – бұл IRC-ге байланысты қосалқы протокол, ол IRC серверін қолдану арқылы өзара байланысуға мүмкіндік береді, файлдарды алмасу немесе релеленбеген чаттарды жүзеге асыру үшін қол алысу үшін. Бір рет орнатылғаннан кейін, әдеттегі DCC сессиясы IRC серверінен тәуелсіз жұмыс істейді. Бастапқыда ircII-мен бірге қолдану үшін жасалған, қазір көптеген IRC клиенттерімен қолдау көрсетіледі. Napster протоколы серверлеріндегі кейбір теңдестірілген клиенттерде DCC жіберу/алу мүмкіндігі бар, оның ішінде TekNap, SunshineUN және Lopster. DCC протоколының SDCC (Secure Direct Client to Client), сондай-ақ DCC SCHAT деп те аталатын нұсқасы шифрланған қосылымдарды қолдайды. DCC қолданылуына арналған RFC спецификациясы жоқ. DCC қосылымдарын екі түрлі жолмен бастауға болады: ең көп таралған жолы – DCC сессиясын бастау үшін CTCP пайдалану. CTCP бір пайдаланушыдан IRC желісі арқылы басқа пайдаланушыға жіберіледі. DCC сессиясын бастаудың тағы бір жолы – клиенттің тікелей DCC серверіне қосылуы. Бұл әдіс арқылы IRC желісі арқылы ешқандай трафик өтпейді (DCC қосылымын бастау үшін қатысушы тараптардың IRC желісіне қосылуы міндетті емес).

Тарих

ircII CTCP және DCC протоколдарын қолданушы алғашқы IRC клиенті болды. CTCP протоколын Майкл Сандроф 1990 жылы ircII 2.1 нұсқасы үшін жасады. DCC протоколын Трой Ролло 1991 жылы 2.1.2 нұсқасы үшін іске қосты, бірақ ол басқа IRC клиенттеріне көшіру үшін емес еді.

DCC CHAT

CHAT қызметі пайдаланушыларға DCC байланысы арқылы бір-бірімен сөйлесуге мүмкіндік береді. Трафик IRC желісі арқылы емес, тікелей пайдаланушылар арасында өтеді. Қалыпты түрде хабар жіберумен салыстырғанда, бұл IRC желісінің жүктемесін азайтады, су тасқынының бақыланбауына байланысты бір уақытта үлкен көлемде мәтін жіберуге мүмкіндік береді, сондай-ақ хабарламаны IRC серверлеріне ашпай байланысты қауіпсіз етеді (дегенмен, хабарлама әлі де қарапайым мәтін түрінде болады). DCC CHAT әдетте CTCP қол алысу арқылы басталады. Қосылыс орнатуды қалайтын пайдаланушы келесі CTCP-ні мақсатты пайдаланушыға DCC CHAT түрінде жібереді, онда және жіберушінің IP-адресі мен порт нөмірін білдіреді, олар бүтін сандар ретінде көрсетіледі. Стандартты DCC CHAT үшін . Қабылдаушы тарап берілген портқа және IP-адреске қосыла алады. Қосылыс орнатылғаннан кейін, DCC CHAT үшін қолданылатын протокол өте қарапайым: пайдаланушылар CRLF символымен аяқталатын хабарламаларды алмасады. ASCII 001 (бақылау коды, төменде белгіленген) және сөзімен басталып, басқа ASCII символымен аяқталатын хабарламалар эмоция ретінде қарастырылады: [^A]ACTION қош салады[^A].

DCC ақ тақтасы

Бұл DCC CHAT-қа қосымша, қарапайым сурет салу командаларын және мәтін жолдарын жіберуге мүмкіндік береді. DCC Whiteboard, DCC CHAT-қа ұқсас қол алысу арқылы басталады, протокол мынамен алмастырылады: DCC CHAT wboard. Қосылыс орнатылғаннан кейін екі клиент CRLF символымен аяқталатын хабарламаларды алмасады. ASCII символымен басталатын (және шартты түрде аяқталатын) хабарламалар арнайы командалар ретінде қарастырылады; команда эмоцияны көрсетеді, ал қалғандары пайдаланушының тақтасында сызықтар салуға немесе екі клиенттің мүмкіндіктерін келісуге мүмкіндік береді.

DCC ЖІНЕЙді

SEND қызметі пайдаланушыларға файлдарды бір-біріне жіберуге мүмкіндік береді. Қолдаушылықтың бастапқы талаптары алушыға файлдың жалпы көлемін білуге немесе беруді қайта бастауға мүмкіндік бермеді. Бұл клиенттерді қолдаушылыққа өз кеңейтімдерін енгізуге мәжбүр етті, олардың көптегені кеңінен қолдау тапты. Бастапқы қолдаушылық жіберушінің алушыға келесі CTCP-ны жіберуінен тұрады: DCC SEND. DCC CHAT сияқты, және жіберуші машинаның кіріс байланысын күтетін IP-адресі мен порты болып табылады. Кейбір клиенттер кеңістіктер бар файл атауларын қос тырнақшаға жабады. Файл мөлшерін соңғы аргумент ретінде қосу әдеттегі практика: DCC SEND .
Осы сәтте, бастапқы талаптар бойынша алушы берілген адреске және портқа қосылып, деректерді күтуі немесе сұрауды елемеуі мүмкін, бірақ DCC RESUME кеңейтімін қолдайтын клиенттер үшін үшінші мүмкіндік – жіберушіден CTCP жауабын жіберу арқылы файлдың бір бөлігін өткізіп жіберуді сұрау: DCC RESUME. Егер жіберуші клиент DCC RESUME-ны қолдайтын болса, ол DCC ACCEPT-пен жауап береді, ал алушы берілген адреске және портқа қосылып, бұрыннан бар файлға қосылатын деректерді тыңдай алады. Деректер клиентке блоктар түрінде жіберіледі, олардың әрқайсысын клиент 32-биттік желілік байт тәртібімен бүтін сан түрінде алынған байттардың жалпы санын жіберу арқылы растауы керек. Бұл қосылымдарды баяулатады және TCP арқасында артық. Алдын ала жіберу кеңейтімі бұл мәселені біршама жеңілдетеді, растауларды күтпейтін арқасында, бірақ алушы оларды алған әрбір блок үшін жіберуі керек болғандықтан, егер жіберуші оларды күтетін болса, толық шешілмейді. TDCC немесе турбо DCC деп аталатын тағы бір кеңейтім растауларды жояды, бірақ сәл өзгертілген қолдаушылықты қажет етеді және кеңінен қолдау таппайды. TDCC-нің ескі нұсқалары қолдаушылықтағы SEND сөзін TSEND-пен ауыстырды; кейінгі нұсқалар SEND сөзін пайдаланады, бірақ қолдаушылықтан кейін қосады, бұл TSEND нұсқасын басқа клиенттермен үйлесімді етеді (егер олар өзгертілген қолдаушылықты талдай алатын болса).

DCC SEND эксплойті

"DCC send exploit" екі түрлі қатеге сілтеме жасай алады: mIRC бағдарламасында 14 таңбадан ұзын файл атауларынан туындайтын буфер асып кету қатесі, сондай-ақ Netgear, D Link және Linksys компаниялары жасаған кейбір маршрутизаторлардағы кіріс деректерін тексеру қатесі, ол белгілі бір портты пайдалану арқылы іске қосылады. Атап айтқанда, маршрутизатордағы қате, егер " ' тіркесі кем дегенде 6 таңбадан тұратын және арасында бос орын немесе жаңа жол жоқ сөздермен кез келген жерде 6667-порттағы TCP ағынында пайда болса, іске қосылуы мүмкін – бұл тек нақты DCC SEND сұранысы жасалған кезде ғана емес. 2000-шы жылдары бірнеше қатені бір тізбеге біріктіруге болады, және егер мұндай тізбе қоғамдық арнаға жарияланса, ол көптеген пайдаланушылардың байланысын үзуге себеп болуы мүмкін (IRC клиенттерін немесе маршрутизаторларды құлату арқылы, немесе антивирустық бағдарламалық қамтамасыз етудегі тым қатаң әдепкі параметрлерді іске қосу арқылы).

DCC XMIT

XMIT қызметі – файлдарды қайта жүктеуге мүмкіндік беретін және ACK-тан туындайтын артық трафикті азайтатын DCC SEND-тің өңделген нұсқасы. XMIT кеңінен қолдау таба қоймады. XMIT қолдаушылығы SEND қолдаушылығынан біршама өзгеше. Жіберуші CTCP арқылы файлды алушыға ұсынады: DCC XMIT [ [ [ ]]] Квадратты жақшалар осы жерде міндетті емес бөліктерді көрсетеді. Бұл – деректерді жіберу үшін қолданылатын протокол; қазіргі уақытта тек осы ғана анықталған. Стандартты DCC SEND-тен айырмашылығы, ол IPv4 үшін стандартты нүктелі нотацияда, ал IPv6 үшін он алтылық немесе аралас нотацияда да болуы мүмкін. Алдыңғы параметрді бос қалдырып, кейінірек біреуін беру үшін, оны былай көрсетуге болады: Егер алушы қолданылатын протоколды қолдамаса, ол келесі пішіндегі CTCP жауабын жібереді: ERRMSG DCC CHAT қолжетімсіз. CHAT кеңейтілген DCC CHAT жіберген қате хабарламаларымен үйлесімділікті сақтау үшін қолданылады. Егер алушы деректерді жіберуден бас тартса, ол келесі CTCP жауабын жібереді: ERRMSG DCC CHAT бас тартты. Басқа қателер де осылай хабарланады. Егер алушы файлды қабылдауға дайын және қабілетті болса, ол берілген мекенжай мен портқа қосылады. Содан кейін не болатыны қолданылған протоколға байланысты. протоколының жағдайында, XMIT сервері қосылымды алғаннан кейін, файлдың өңделу уақытын көрсететін 32 биттік уақыт t-ны желілік байт ретімен жібереді. Клиент, жергілікті файлдың өңделу уақытына сүйене отырып, сервердің файлды жібергенде іздеуі керек ұзақтықты көрсететін тағы бір желілік байт ретімен мәнді жібереді. Егер бүкіл файл қажет болса, бұл мән нөлге тең болуы керек, ал клиент бұрынғы жүктеуді қайта бастағысы келсе – жергілікті файлдың көлеміне тең болуы керек. SEND-тен жылдам болғанымен, XMIT-тің бір шектеуі бар: файлдың көлемін анықтау мүмкін емес, егер оның көлемі CTCP келіссөздерінде көрсетілмесе немесе бұрыннан белгілі болмаса. Сонымен қатар, 32 биттік офсет болғандықтан, екі гигабайттан асатын файлды қайта жүктеу мүмкін емес.

Пассивті DCC

Қалыпты DCC қосылысында бастамашы сервер рөлін атқарады, ал мақсат – клиент рөлін атқарады. Көп тараған өртке қарсы қабырғалардың және NAT салдарынан аяқтан аяққа байланыстың ашықтығының төмендеуіне байланысты бастамашы сервер рөлін атқара алмайды. Мақсатқа сервер рөлін атқаруын сұраудың түрлі тәсілдері жасалған:

DCC сервері

Бұл кеңейтуді әдеттегі DCC SEND және CHAT-ке IRC клиенті mIRC енгізді. DCC Server қолдауы орташа деңгейде, бірақ барлық клиенттерде стандартты емес (Интернет релейлік чат клиенттерін салыстыруға қараңыз). Ол IRC серверін қажет етпей, IP-адресі арқылы DCC қосылысын бастауға мүмкіндік береді. Бұл қабылдаушы клиенттің сервер рөлінде (сондықтан осылай аталады) жұмыс істеуімен жүзеге асырылады, ол жіберушіден қол алысуды (әдетте 59 портта) күтеді. CHAT үшін бастаушы 1000 жібереді, ал адресат 1000 деп жауап береді, содан кейін стандартты DCC CHAT протоколы бойынша әрекеттер жалғасады. SEND үшін бастаушы 1200 жібереді, ал адресат 1210 деп жауап береді, мұнда файлдан деректерді қайдан бастау керектігін көрсететін офсет болады. Содан кейін деректерді беру әдеттегі DCC SEND сияқты жүзеге асырылады. DCC Server сонымен қатар mIRC стиліндегі файл серверлерін және DCC GET-ті де қолдайды.

РМКК

DCC Сервері қолданылатын портты нақты көрсетуге мүмкіндік бермейді, сондықтан оны қолмен келісу керек, бірақ бұл әрқашан мүмкін емес, себебі тараптардың бірі адам болмауы мүмкін. RDCC – DCC Сервері үшін қол алысу механизмі болып табылады, ол порттан өзге сервердің IP-адресін де ұсынады, оны клиент хост маскалау салдарынан өздігінен таба алмайтын жағдайлар болуы мүмкін. Ол кеңінен қолдау таба қоймаған. Бастаушы, мақсаттың қандай портты тыңдап отырғанын CTCP сұранысы арқылы сұрайды, яғни RDCC , мұнда – чат үшін, – жіберу үшін, ал – файл сервері үшін. Мақсат CTCP арқылы RDCC 0 деп жауап қайтарады, мұнда мен мағыналары қалыпты DCC SEND және CHAT сияқты болып табылады. Осыдан кейін бастаушы және порттарына қосылып, DCC Сервері қол алысады.

DCC RSEND

Бұл KVIrc клиентінің DCC REVERSE-ке баламасы. Жіберуші файлды CTCP: DCC RSEND командасы арқылы ұсынады. Қабылдаушы CTCP жауабымен, DCC RECV командасын қайтара алады, содан кейін жіберуші қабылдаушыға қосылып, әдеттегі DCC SEND сияқты жібереді.

Файл серверлері (FSERV)

DCC fserve немесе файл сервері пайдаланушыға DCC серверінде сақталған файлдарды көруге, оқуға және жүктеуге мүмкіндік береді. Әдетте, бұл DCC CHAT сессиясы (пайдаланушыға командалық қабылдағыш ұсынады) немесе файлды сұрау үшін арнайы CTCP командалары арқылы іске асырылады. Файлдар DCC SEND немесе DCC XMIT арқылы жіберіледі. DCC файл серверлерінің көптеген нұсқалары бар, соның ішінде танымал mIRC клиентіндегі FSERV командасы да бар.