Mijozdan mijozga protokoli - Client-to-client protocol - Wikipedia

Mijozdan mijozga protokoli (CTCP) o'rtasidagi aloqaning maxsus turi Internet-estafeta suhbati (ARM) mijozlari.

CTCP - bu bugungi kunda qo'llanilayotgan eng yirik ARM mijozlari tomonidan qo'llaniladigan keng tarqalgan protokol.[iqtibos kerak ] CTCP asl IRC protokolini foydalanuvchilarga boshqa mijozlar yoki kanallarni so'roq qilishlariga imkon berish orqali kengaytiradi, bu esa kanaldagi barcha mijozlarning ma'lum ma'lumot uchun CTCP-ga javob berishiga olib keladi. Bundan tashqari, CTCP xom IRC protokoli havola orqali yuborilishiga yo'l qo'ymaydigan xabarlarni kodlash uchun ishlatilishi mumkin, masalan yangi qatorlar yoki bayt 0 qiymati (NULL). CTCP mijozlar o'rtasida to'g'ridan-to'g'ri aloqa o'rnatmaydi; ammo, odatda muzokara qilish uchun ishlatiladi DCC ulanishlar.

CTCP foydalanuvchilarga masofaviy mijozdan foydalanayotgan mijoz versiyasi (orqali) orqali so'rov o'tkazishga imkon beradi CTCP versiyasi) yoki vaqt (orqali CTCP TIME), boshqa narsalar qatorida. Bundan tashqari, / me buyrug'ini amalga oshirish uchun ishlatiladi CTCP AKSIYASI).

Tarix

ircII CTCP va DCC protokollarini amalga oshirgan birinchi ARM mijozi bo'ldi.[1] CTCP protokoli Maykl Sandrof tomonidan 1990 yilda ircII 2.1 versiyasi uchun amalga oshirildi,[2] DCC protokoli Troy Rollo tomonidan 1991 yilda 2.1.2 versiyasida amalga oshirilgan bo'lsa.[3]

Tuzilishi

CTCP xabari a sifatida amalga oshiriladi PRIVMSG yoki DIQQAT bu erda xabarning birinchi va oxirgi belgilari joylashgan ASCII 0x01 qiymati. Bundan tashqari, IRC protokoliga ruxsat berilmagan belgilar qochib ketadi. A DIQQAT standart javob bermasligi kerakligi sababli, CTCP xabarlari quyidagicha yuboriladi PRIVMSG va javob a bilan amalga oshiriladi DIQQAT o'rniga a PRIVMSG.

Ko'pgina mijozlar uchun CTCP so'rovi quyidagicha boshlanadi:

CTCP   

Qaerda <target> maqsad taxallus yoki kanal, <command> bu CTCP buyrug'i (masalan, VERSION) va <arguments> ga yuborilishi kerak bo'lgan qo'shimcha ma'lumotlar <target>.

Umumiy CTCP buyruqlari

CTCP buyruqlari va javoblari mijozga xosdir; kabi, IRC mijoziga qarab, quyidagi CTCP buyruqlarining ba'zilari javobni qo'zg'atmasligi mumkin yoki bu erda ko'rsatilganidan farqli ravishda formatlanadi.

VERSION

A CTCP versiyasi so'rov maqsad foydalanayotgan IRC mijozining nomi va versiyasini qaytaradi, va ba'zi hollarda operatsion tizim, soat tezligi, CPU ishlab chiqaruvchisi va CPU arxitekturasi /ko'rsatmalar to'plami.

Uchun javob namunasi CTCP versiyasi dan foydalanadigan maqsadga so'rov HexChat mijoz (a vilka XChat) quyidagicha:

VERSION HexChat 2.9.1 [x86] / Windows 8 [1.46GHz]

TIME

A CTCP TIME so'rov qaytib keladi mahalliy vaqt maqsad kompyuter. ARM mijoziga qarab, javob quyidagidan iborat bo'lishi mumkin sana, vaqt (yoki ichida 12 soatlik format yoki 24 soatlik format ), the yil (masalan, 2012) va ba'zan vaqt zonasi (masalan, est ).

Uchun javob namunasi CTCP TIME dan foydalanadigan maqsadga so'rov ChatZilla mijoz:

TIME Fri 23 Noyabr 2012 19:26:42 EST

PING

A CTCP PING so'rov belgilaydi ping stavkasi to'g'ridan-to'g'ri ikkita mijoz o'rtasida mavjud (ya'ni serverni diskontlash). The CTCP PING buyruq (tez-tez) yuborish orqali ishlaydi tamsayı dalil (a vaqt tamg'asi ) maqsadli mijozga, maqsadli mijoz, aynan shu raqamli parametrni etkazib javob beradi. The farq asl vaqt tamg'asi va joriy vaqt tamg'asi o'rtasida hisoblanadi, natijada uni boshlagan foydalanuvchiga ko'rsatiladi CTCP PING. Ko'pincha, foydalaniladigan vaqt tamg'asi millisekundlar bilan foydalanuvchilarning ko'pchiligi tufayli foydalaniladi keng polosali Internetga ulanishlar 1 soniya ostida pingga ega.

Namuna CTCP PING nishonga so'rov <nickname> dan XChat mijoz:

CTCP PING 23152511

Xuddi shunday, farqdan hosil bo'lgan namunaviy chiqish (yuqoriga qarang):

 dan ping javobi: 0,53 soniya

DCC CHAT

CHAT xizmati foydalanuvchilarga DCC ulanishi orqali bir-birlari bilan suhbatlashishga imkon beradi. Trafik IRC tarmog'i orqali emas, balki to'g'ridan-to'g'ri foydalanuvchilar o'rtasida bo'ladi. Odatda xabarlarni jo'natish bilan taqqoslaganda, bu IRC tarmog'ining yuklanishini kamaytiradi, toshqinlarni boshqarish vositasi yo'qligi sababli bir vaqtning o'zida katta miqdordagi matnlarni yuborishga imkon beradi va xabarni IRC serverlariga etkazmaslik orqali aloqani yanada xavfsiz qiladi (ammo xabar hali ham Oddiy matn ).

DCC CHAT odatda a yordamida boshlanadi CTCP qo'l siqish. Ulanishni o'rnatmoqchi bo'lgan foydalanuvchi maqsadga quyidagi CTCP-ni yuboradi:

DCC CHAT

va jo'natuvchiga tegishli bo'lib, ular butun son sifatida ifodalanadi. - bu standart DCC CHAT uchun "suhbat". Keyin qabul qiluvchi tomon berilgan port va manzilga ulanishi mumkin.

Ulanish o'rnatilgandan so'ng, DCC CHAT uchun ishlatiladigan protokol juda oddiy: foydalanuvchilar almashishadi CRLF - tugatilgan xabarlar. Dan boshlanadigan xabarlar ASCII 001 (boshqaruv-A, quyida ko'rsatilgan ^ A) va "ACTION" so'zi va boshqa ASCII 001 tomonidan bekor qilingan, emotsiyalar sifatida talqin etiladi:

^ AACTION vidolashmoqda^ A

DCC Whiteboard

Bu oddiy chizilgan buyruqlar va matn satrlarini yuborish imkonini beradigan DCC CHAT kengaytmasi. DCC Whiteboard DCC CHAT-ga o'xshash qo'l siqish bilan boshlanadi va "chat" protokoli "wboard" bilan almashtiriladi:

DCC CHAT taxtasi

Aloqa o'rnatilgandan so'ng, ikkita mijoz almashishadi CRLF - tugatilgan xabarlar. ASCII 001 bilan boshlanadigan (va ixtiyoriy ravishda tugaydigan) xabarlar maxsus buyruqlar sifatida talqin etiladi; buyrug'i ACTION emote-ni ifodalaydi, boshqalari esa foydalanuvchi doskasining yuzasida chiziqlar paydo bo'lishiga olib keladi yoki ikkita mijozga bir qator funktsiyalar bo'yicha muzokaralar olib borishga imkon beradi.

DCC SEND

YUBORISH xizmati foydalanuvchilarga fayllarni bir-biriga yuborish imkoniyatini beradi. Handshake uchun asl spetsifikatsiya qabul qiluvchiga faylning umumiy hajmini bilishga va uzatishni davom ettirishga imkon bermadi. Bu mijozlarni qo'l uzatishda o'zlarining kengaytmalarini tanishtirishga majbur qildi, ularning aksariyati keng qo'llab-quvvatlandi.

Dastlabki qo'l siqish jo'natuvchining qabul qiluvchiga quyidagi CTCP yuborishini o'z ichiga olgan:

DCC SEND

DCC CHAT-da bo'lgani kabi, va - bu yuboruvchi mashina kiruvchi ulanishni tinglaydigan ip-manzil va port. Ba'zi mijozlar fayl nomlarini bo'sh joy bilan qo'shib qo'yishadi. Fayl hajmini so'nggi argument sifatida qo'shish odatiy holdir:

DCC SEND

Shu nuqtada, asl spetsifikatsiya qabul qiluvchiga berilgan manzilga va portga ulanib, ma'lumotlarni kutib turishi yoki so'rovni e'tiborsiz qoldirishi kerak edi, ammo DCC RESUME kengaytmasini qo'llab-quvvatlovchi mijozlar uchun uchinchi alternativ - jo'natuvchidan ushbu qismning bir qismini o'tkazib yuborishini so'rash. CTCP javobini yuborish orqali fayl:

DCC RESUME

Agar yuboruvchi mijoz DCC RESUME-ni qo'llab-quvvatlasa, u quyidagilarga javob beradi.

DCC QABUL QILADI

va qabul qilgich berilgan manzilga va portga ulanishi va allaqachon mavjud bo'lgan faylga qo'shilishi uchun ma'lumotlarni tinglashi mumkin.

Ma'lumotlar mijozga bloklarda yuboriladi, ularning har biri mijoz tomonidan qabul qilingan baytlarning umumiy sonini yuborish orqali tan olishi kerak 32-bit tarmoq baytlari tartibi tamsayı. Bu ulanishlarni sekinlashtiradi va shu sababli ortiqcha bo'ladi TCP. Yuborib yuborish kengaytmasi ushbu muammoni tasdiqlashlarni kutmaslik bilan biroz kamaytiradi, ammo qabul qiluvchi ularni har bir blok uchun yuborishi kerak bo'lganligi sababli, agar jo'natuvchi kutgan bo'lsa, u to'liq hal qilinmaydi.

Boshqa kengaytma, TDCC yoki turbo DCC, tasdiqlarni olib tashlaydi, ammo biroz o'zgartirilgan qo'l siqishni talab qiladi va keng qo'llab-quvvatlanmaydi. TDCC ning eski versiyalari qo'l siqishidagi SEND so'zini TSEND bilan almashtirgan; keyingi versiyalarda SEND so'zi ishlatiladi, ammo qo'l uzatgandan so'ng "T" qo'shiladi, bu TSEND versiyasi boshqa mijozlar bilan mos keladi (agar ular o'zgartirilgan qo'l siqishni ajratib olishlari mumkin bo'lsa).

DCC SEND ekspluatatsiyasi

DCC send ekspluatatsiyasi ikkita xatoga, bir variantga murojaat qilishi mumkin buferni to'ldirish xato mIRC 14 belgidan uzunroq fayl nomlari tomonidan ishga tushiriladi[4] va an kirishni tekshirish xatosi tomonidan ishlab chiqarilgan ba'zi routerlarda Netgear, D-havola va Linksys, portdan foydalanish natijasida yuzaga keladi 0.[5][6] Router ekspluatatsiyasi, xususan, "DCC SEND'dan keyin kamida 6 ta belgi bo'sh joysiz yoki yangi satrlar mavjud emas TCP to'g'ridan-to'g'ri DCC SEND so'rovi qilinganida emas, balki 6667 portida oqim.

DCC XMIT

XMIT xizmati DCC SEND-ning o'zgartirilgan versiyasidir, bu fayllarni qayta tiklashga imkon beradi va ACK uzoq vaqtdan beri chiqadigan trafikni kamaytiradi. XMIT keng qo'llab-quvvatlanmaydi.

XMIT qo'l siqish SEND qo'l siqishidan biroz farq qiladi. Yuboruvchi a yuboradi CTCP qabul qiluvchiga faylni taklif qilish:

DCC XMIT [ [ []]]

Kvadrat qavslar ixtiyoriy qismlarni o'z ichiga oladi. bu protokol pul o'tkazish uchun foydalanish; hozirda faqat "aniq" ta'rif berilgan. Standart DCC SEND-dan farqli o'laroq, IPv4 uchun standart nuqta yozuvining qo'shimcha shaklida yoki IPv6 uchun o'n oltinchi yoki aralash yozuvning shaklida bo'lishi mumkin. Dastlabki parametrni bo'sh qoldirish uchun, lekin keyinroq berishni davom ettirish uchun avvalgisini "-" deb belgilash mumkin. Agar qabul qilgich ishlatilgan protokolni bajarmasa, u quyidagi formatdagi CTCP javobini qaytarib yuboradi:

ERRMSG DCC CHAT mavjud emas

CHAT bu erda kengaytirilgan DCC CHAT tomonidan yuborilgan xato xabarlari bilan muvofiqlikni ta'minlash uchun ishlatiladi. Agar qabul qiluvchi o'tkazishni rad etsa, u quyidagi CTCP javobini yuboradi:

ERRMSG DCC CHAT rad etildi

Boshqa xatolar ham xuddi shu tarzda xabar qilinadi. Agar qabul qiluvchi faylni qabul qilishga tayyor va qodir bo'lsa, u berilgan manzil va portga ulanadi. Keyin nima bo'lishi ishlatilgan protokolga bog'liq.

"Tozalash" protokoli bo'lsa, XMIT-server ulanish olgandan so'ng 32-bit yuboradi vaqt t yilda tarmoq baytlari tartibi, faylni o'zgartirish vaqtini ifodalaydi. Ehtimol, mahalliy faylni o'zgartirish vaqtiga asoslanib, mijoz keyinchalik boshqa tarmoq bayt buyurtmasini yuboradi uzoq, faylni yuborishda server qidirishi kerak bo'lgan ofset. Agar butun fayl kerak bo'lsa, uni nolga, yoki agar mijoz avvalgi yuklab olishni davom ettirmoqchi bo'lsa, mahalliy fayl hajmiga o'rnatilishi kerak.

SEND-dan tezroq bo'lsa-da, XMIT bir xil cheklovlardan birini bajaradi, chunki uning hajmi ushbu faylda ko'rsatilmagan ekan, faylning kattaligini aniqlab bo'lmaydi. CTCP muzokara yoki oldindan ma'lum. Bundan tashqari, 32-bitli ofset tufayli siz faylni ikki gigabayt belgisidan davom ettira olmaysiz.

Passiv DCC

Oddiy DCC ulanishida tashabbuskor sifatida ishlaydi server va maqsad mijoz. Keng tarqalganligi sababli xavfsizlik devori va shaffoflikning uchidan uchigacha pasayishi NAT, tashabbuskor server sifatida ishlay olmasligi mumkin. Maqsaddan server sifatida ishlashni so'rashning turli usullari ishlab chiqilgan:

DCC serveri

Oddiy DCC SEND va CHAT kengaytmasi IRC mijozi tomonidan kiritilgan mIRC. DCC Server o'rtacha qo'llab-quvvatlaydi, ammo barcha mijozlarda standart emas (qarang Internet Relay Chat mijozlarini taqqoslash ).

Bu IRC serveriga ehtiyoj sezmasdan IP-manzil bo'yicha DCC ulanishini boshlashga imkon beradi. Buni qabul qiluvchi mijoz jo'natuvchidan qo'l siqish uchun tinglash (odatda 59-portda) server sifatida ishlaydi (shuning uchun uning nomi).

CHAT uchun tashabbuskor quyidagilarni yuboradi.

1000

Maqsad quyidagicha javob beradi:

1000

qolgan qismi esa DCC CHAT standart protokoliga muvofiq amalga oshiriladi.

YUBORISH uchun tashabbuskor quyidagilarni yuboradi:

1200

Maqsad quyidagilarga javob beradi:

1210

bu erda - bu boshlash kerak bo'lgan fayldagi ofset. Bu erdan pul o'tkazmasi odatdagi DCC SEND sifatida ishlaydi.

DCC Server mIRC uslubidagi fayl serverlarini va DCC GET-ni qo'llab-quvvatlaydi.

RDCC

DCC Server portni ishlatish uchun hech qanday ma'lumot bermaydi, shuning uchun buni qo'l bilan kelishish kerak, bu har doim ham mumkin emas, chunki tomonlardan biri odam bo'lmasligi mumkin. RDCC - bu DCC Server uchun qo'l siqish mexanizmi bo'lib, u portga qo'shimcha ravishda serverning IP-manzilini ham taqdim etadi, chunki mijoz xost maskalanishi sababli boshqacha topa olmasligi mumkin. Bu keng qo'llab-quvvatlanmaydi.

Tashabbuskor CTCP so'rovini yuborish orqali maqsad tinglayotgan portdan so'raydi:

RDCC

bu erda chat uchun 'c', yuborish uchun 's' va fayl serveri uchun 'f'.

Maqsad CTCP quyidagicha javob berishi mumkin:

RDCC 0

bu erda va oddiy DCC SEND va CHAT bilan bir xil ma'noga ega. Shundan so'ng tashabbuskor ip va portga ulanadi va DCC Server bilan qo'l siqish kuzatiladi.

DCC REVERSE

Qo'l siqish to'g'ridan-to'g'ri IP-ulanish orqali olib boriladigan DCC Serverdan farqli o'laroq, DCC REVERSE DCC SEND tomonidan ishlatiladigan oddiy CTCP qo'l siqishiga ega. Bu keng qo'llanilmagan. Yuboruvchi qabul qiluvchiga CTCP xabarini yuborish orqali faylni taqdim etadi:

DCC REVERSE

- bu 1 dan 50 gacha bo'lgan uzunlikdagi satr ASCII 33 dan 126 gacha bo'lgan belgilar va uzatish uchun identifikator vazifasini bajaradi.

Agar qabul qiluvchi qabul qilsa, u CTCP javobini yuboradi:

DCC REVERSE

Bu erda - jo'natishni boshlaydigan fayldagi pozitsiya, bu IP-manzil standart qabul qiluvchining nuqta belgisi uchun IPv4, yoki o'n oltinchi uchun yozuv IPv6. Keyin jo'natuvchi qabul qilgich tomonidan ko'rsatilgan ip-manzil va portga ulanadi va odatdagi DCC SEND yuboriladi. Yuboruvchi ham, qabul qiluvchi ham CTCP javobini yuborish orqali qo'l uzatishni bekor qilishi mumkin:

DCC REJECT REVERSE

DCC RSEND

Bu DCVI REVERSE-ga KVIrc mijozining alternativasi. Yuboruvchi CTCP-ni yuborish orqali faylni taklif qiladi:

DCC RSEND

Keyin qabul qiluvchi CTCP tomonidan quyidagi javob bilan qabul qilishi mumkin:

DCC RECV

va jo'natuvchi qabul qiluvchiga ulanadi va odatdagi DCC SEND paytida bo'lgani kabi jo'natadi.

Orqaga / xavfsizlik devori DCC

Ushbu passiv DCC mexanizmi hech bo'lmaganda qo'llab-quvvatlanadi mIRC, Vizual ARM, XChat, KVIrc, DMDirc, Klient, Suhbat va PhibianIRC. Yuboruvchi CTCP xabarini yuborish orqali faylni taklif qiladi:

DCC SEND 0

bu IP-manzil bitta bayt sifatida ko'rsatilgan tarmoq bayt tartibida yuboruvchining (standart DCC da bo'lgani kabi). Buning teskari DCC so'rovi ekanligiga ishora qiluvchi yaroqli port o'rniga 0 raqami yuboriladi. - bu noyob butun son; agar TSEND ishlatilayotgan bo'lsa (uni qo'llab-quvvatlovchi mijoz tomonidan), "T" harfi belgiga qo'shilib, qabul qiluvchiga bildirishnoma yuborishning hojati yo'qligini bildiradi.

Qabul qilgich faylni tinglash uyasini ochib, CTCP xabariga javoban qabul qilishi mumkin:

DCC SEND

Bu asl teskari DCC xabariga o'xshaydi, faqat va qabul qilgich tinglayotgan uyani aniqlashdan tashqari. asl so'rovda bo'lgani kabi, jo'natuvchiga qaysi so'rov qabul qilinayotganligini bildiradi. (Ushbu xabar odatdagi DCC yuborish so'rovi bilan bir xil formatga amal qilganligi sababli, DCC so'rovlarini filtrlaydigan ba'zi serverlar yuboruvchidan qabul qiluvchini "DCC ruxsat berish" ro'yxatiga qo'shishini talab qilishi mumkin.)

Keyin jo'natuvchi qabul qiluvchining rozetkasiga ulanadi, fayl tarkibini yuboradi va fayl tugagandan so'ng qabul qiluvchining rozetkani yopishini kutadi.

YUBORISH protokoliga RESUME kengaytmasi ishlatilganda, buyruqlar ketma-ketligi (">>" boshlang'ich tomonida chiquvchi xabarni va tengdoshining "<<" javobini ko'rsatgan holda) bo'ladi:

>> DCC SEND 0
<< DCC RESUME <filename> 0 <position> <token>
>> DCC QABUL QILADI 0
<< DCC SEND <filename> <peer-ip> <port> <filesize> <token>

Shundan so'ng protokol odatdagidek davom etadi (ya'ni jo'natuvchi qabul qiluvchining rozetkasiga ulanadi).

Fayl serverlari (FSERVs)

DCC xizmat qilishyoki fayl serveri foydalanuvchiga DCC serverida joylashgan fayllarni ko'rib chiqish, o'qish va yuklab olish imkonini beradi.

Odatda, bu DCC CHAT sessiyasi (foydalanuvchiga buyruq irodasini taqdim etadigan) yoki maxsus bilan amalga oshiriladi CTCP faylni so'rash uchun buyruqlar. Fayllar DCC SEND yoki DCC XMIT orqali yuboriladi. DCC fayl serverlarining ko'plab dasturlari mavjud, ular orasida mashhur bo'lgan FSERV buyrug'i mavjud mIRC mijoz.

Shuningdek qarang

Adabiyotlar

  1. ^ Pikkard, Pol; Brayan Baskin; Jorj Spillman; Markus Saks (2005 yil 1-may). "ARM tarmoqlari va xavfsizligi". Korxona uchun IM va P2P dasturlarini xavfsizligini ta'minlash (1-nashr). Sinxronizatsiya. p. 386. ISBN  1-59749-017-2. Dastlab IRCII dasturiy ta'minot to'plami mualliflari IRC orqali fayllarni uzatishni boshladilar.
  2. ^ "NOTES" va "source / ctcp.c" fayllariga qarang ircii-2.1.4e.tar.gz[doimiy o'lik havola ]
  3. ^ 'UPDATES' va 'source / dcc.c' fayllariga qarang ircii-2.1.4e.tar.gz[doimiy o'lik havola ]
  4. ^ "SecurityFocus ekspluatatsiya ma'lumotlari".
  5. ^ "'Netgear routerlarida DCC Send "zaifligi".
  6. ^ "'DCC Send "Linksys routerlaridagi zaiflik".

Tashqi havolalar