Bosh sahifa Wiki Block-wise transfer

Block-wise transfer

Block-wise transfer — CoAPda katta request yoki response payloadini kichik bloklarga bo‘lib uzatish mexanizmidir. Cheklangan qurilma va tarmoqlarda bitta katta datagram IP fragmentationga, xotira bosimiga yoki yo‘qotilganda butun payloadni qayta yuborishga olib keladi. Block1 request tanasini, Block2 esa response tanasini qismlarga ajratadi.

Block option tuzilishi

Block option NUM, M va SZX qismlaridan iborat. NUM blok raqamini, M yana bloklar borligini, SZX esa blok hajmi darajasini bildiradi. Bloklar odatda 16 baytdan 1024 baytgacha bo‘lgan ikki darajali o‘lchamlardan foydalanadi. Aniq semantika CoAP block-wise specificationida belgilanadi.

Offset NUM va block size orqali hisoblanadi. Server yoki client keyingi javobda kichikroq block size taklif qilishi mumkin. Size o‘zgarsa raqam va offset mos qayta hisoblanadi; faqat NUMni bir xil qoldirish payload qismni o‘tkazib yuboradi.

Block1 request

Client katta POST yoki PUT payloadini Block1 qismlarida yuboradi. Server oraliq blokni qabul qilgach Continue response bilan keyingisini so‘rashi mumkin. Oxirgi blokda M biti o‘chadi va server to‘liq requestni qayta ishlaydi.

Server barcha blokni xotirada yig‘ishi yoki streaming tarzida saqlashi mumkin. Har holda resource limit, maksimal body va timeout belgilanadi. Bir nechta client yarim transfer boshlasa cheklangan qurilma bufferini tugatmasligi kerak.

Block2 response

Server katta representationning birinchi qismini Block2 option bilan qaytaradi. Client keyingi NUMni so‘rab qolgan bloklarni oladi. Har blok alohida CoAP exchange bo‘lishi mumkin, shuning uchun yo‘qolgan qismning o‘zi qayta uzatiladi.

Resource transfer oralig‘ida o‘zgarsa bloklar turli versiyadan yig‘ilib, buzilgan natija hosil qilishi mumkin. ETag bir representation versiyasini bog‘lashga yordam beradi. Client ETag o‘zgarsa eski bloklarni birlashtirmaydi.

Token va tartib

Token request va response correlationini saqlaydi. Block raqami payload joylashuvini bildiradi. Client bloklarni ketma-ket so‘rashi mumkin, ayrim kengaytirilgan rejimlar ko‘proq parallelism beradi. Oddiy implementation tartibsiz yoki takroriy blokni to‘g‘ri tanishi kerak.

Block-wise transfer transport congestion controlini bekor qilmaydi. Juda ko‘p parallel CON blok retransmission va ACK trafikini oshiradi. RTT, yo‘qotish va peer imkoniyatiga mos o‘lcham tanlanadi.

Proxy va xavfsizlik

Proxy blocklarni o‘zi yig‘ishi, qayta bo‘lishi yoki end-to-end optionni uzatishi mumkin. Cache key resource, content format, ETag va request optionlarini hisobga oladi. Block option hop-by-hop va end-to-end xatti-harakati spetsifikatsiyaga bog‘liq.

DTLS datagramlarni himoya qiladi, OSCORE esa CoAP message qatlamida end-to-end himoya berishi mumkin. Har block autentifikatsiyalanadi, lekin application to‘liq obyekt checksumini ham tekshirishi mumkin. Noto‘g‘ri NUM, ulkan e’lon qilingan size va tugamaydigan transfer resurs hujumiga aylanishi mumkin.

Qisman transfer holati

Transfer uzilsa client olingan bloklarni vaqtincha saqlashi mumkin, ammo resume capability peer va representation barqarorligiga bog‘liq. ETag bir xil bo‘lmasa eski bloklar tashlanadi. Server Block1 stateini timeoutdan keyin o‘chiradi; client juda kech davom ettirsa yangidan boshlashi mumkin.

Payloadni flashga yozadigan qurilma har blokda wear va power-loss atomikligini hisobga oladi. Oxirgi blok kelmasdan firmware faol deb belgilanmaydi. To‘liq checksum, signature va target version tekshirilgach activation bajariladi.

Rollback uchun oldingi image saqlanishi mumkin.

Bog‘liq tushunchalar

CoAP, Block1, Block2, IP fragmentation, ETag, Confirmable message, OSCORE