Кіріспе
Интернет релейлік чатта файлдарды беру және тікелей чат протоколы
Тікелей клиенттен клиентке (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 желісіне қосылуы міндетті емес).
The most common way is to use CTCP to initiate a DCC session. The CTCP is sent from one user, over the IRC network, to another user. Another way to initiate a DCC session is for the client to connect directly to the DCC server. Using this method, no traffic will go across the IRC network (the parties involved do not need to be connected to an IRC network in order to initiate the DCC connection).
Тарих
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 CHAT wboard
Once the connection is established, the two clients exchange CRLF terminated messages. Messages that begin (and optionally end) with ASCII are interpreted as special commands; the command represents an emote, while others cause lines to be drawn on the user's whiteboard surface, or allow the two clients to negotiate a set of features.
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 нұсқасын басқа клиенттермен үйлесімді етеді (егер олар өзгертілген қолдаушылықты талдай алатын болса).
As with DCC CHAT, and are the IP address and port where the sending machine will be listening for an incoming connection. Some clients enclose filenames with spaces in double quotes. It is common practice to add the file size as a last argument: DCC SEND
At this point, the original specification had the receiver either connect to the given address and port and wait for data, or ignore the request, but for clients supporting the DCC RESUME extension, a third alternative is to ask the sender to skip part of the file by sending the CTCP reply: DCC RESUME
If the sending client supports DCC RESUME, it will reply with, DCC ACCEPT , and the receiver can connect to the given address and port and listen for data to append to an already existing file. Data is sent to the client in blocks, each of which the client must acknowledge by sending the total number of bytes received in the form of a 32 bit network byte order integer. This slows down connections and is redundant because of TCP. The send ahead extension relieves this problem somewhat by not waiting for the acknowledgements, but since the receiver still has to send them for every block it receives, in case the sender expects them, it is not solved completely. Another extension, TDCC, or turbo DCC, removes the acknowledgements, but requires a slightly modified handshake and is not widely supported. Older versions of TDCC replaced the word SEND in the handshake with TSEND; later versions use the word SEND but append a after the handshake, making this version of TSEND compatible with other clients (as long as they can parse the modified handshake).
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 биттік офсет болғандықтан, екі гигабайттан асатын файлды қайта жүктеу мүмкін емес.
Square brackets here enclose optional parts. is the protocol to use for the transfer; only is defined presently. Unlike standard DCC SEND, can be in the additional forms of standard dotted notation for IPv4, or either hexadecimal or mixed notation for IPv6. To leave an early parameter empty, but still supply a later one, the earlier one can be specified as If the receiver does not implement the protocol used, it will send back a CTCP reply of the format: ERRMSG DCC CHAT unavailable. CHAT is used here to maintain compatibility with the error messages sent by the extended DCC CHAT. If the receiver declines the transfer, it sends the following CTCP reply: ERRMSG DCC CHAT declined. Other errors are reported in the same fashion. If the receiver is willing and capable of receiving the file, it will connect to the given address and port. What happens then depends on the protocol used. In the case of the protocol, the XMIT server will, upon receiving a connection, send a 32 bit time t in network byte order, representing the file's modification time. Presumably based on the modification time of the local file, the client will then send another network byte order long, an offset which the server should seek to when sending the file. This should be set to zero if the whole file is wanted, or the size of the local file if the client wishes to resume a previous download. While faster than SEND, XMIT carries one of the same limitations in that it is impossible to tell how big the file is, unless its size is specified in the CTCP negotiation or known beforehand. Furthermore, it is not possible to resume a file past the two gigabyte mark due to the 32 bit offset.
Пассивті 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 командасы да бар.