جریان‌ها

جریان‌ها در QUIC یک جریان-بایتِ سبکِ انتزاعی و متوالی را ارائه می‌کنند.

دو نوع ساده از جریان‌ها در QUIC وجود دارند:

  • جریان‌های یک طرفه که داده‌ها را در یک جهت حمل می‌کنند: از آغازکننده جریان به سمت همتای خود.

  • جریان‌های دو طرفه که به داده‌ها اجازه می‌دهند تا در هر دو جهت ارسال شوند.

هر دو نوع جریان‌ها می‌توانند توسط هرکدام از پایانه‌ها ساخته شوند، می‌توانند همزمان داده‌ها را متناوب با جریان‌های دیگر ارسال نماید، و همچنین می‌توانند لغو شوند.

برای ارسال داده‌ها بر روی یک اتصال QUIC، یک یا تعداد بیشتری جریان استفاده می‌شود.

نظارت جریان

جریان‌ها بطور انفرادی نظارت می‌شوند، بدین شکل که به یک پایانه اجازه‌ی محدود کردن و مدیریت تخصیص حافظه و اعمال دوباره‌ی فشار داده می‌شود. ساخت جریان‌ها نیز با اعلام حداکثر شناسه جریانِ مورد نظر برای پذیرش در یک زمان معین توسط هر همتا‌ نیز نظارت شده است.

معرف‌های جریان

جریان‌ها توسط یک عدد صحیح بدون علامت ۶۴ بیتی، به عنوان شناسه جریان، شناسایی می‌شوند. آخرین دو بیتِ شناسه جریان برای شناسایی نوع جریان (یک طرفه یا دو طرفه) و آغازکننده‌ی جریان استفاده می‌شوند.

اولین بیت از سمت راست (0x1) از شناسه جریان آغازکننده‌ی جریان را شناسایی می‌کند. کارخواه‌ها جریان‌های زوج را آغاز می‌کنند (آنهایی که اولین بیت‌شان از سمت راست برابر صفر قرار گرفته است)؛ کارگزار‌ها جریان‌های فرد را آغاز می‌کنند (آنهایی که اولین بیت‌شان از سمت راست برابر یک است).

دومین بیت از سمت راست (0x2) از شناسه جریان، جریان‌های یک طرفه و دو طرفه را از هم جدا می‌سازد. جریان‌های یک طرفه همیشه این بیت را روی یک قرار می‌دهند و جریان ‌های دو طرفه این بیت را روی صفر قرار می‌دهند.

هم‌زمانی جریان

پروتکل QUIC به شماری از جریان‌های تصادفی اجازه می‌دهد که به شکل همزمان کار کنند. یک پایانه تعداد جریان‌های همزمان و فعال پیش‌رو را با محدود کردن حداکثر شناسه جریان محدود و مشخص می‌سازد.

حداکثر شناسه جریان مختص هر پایانه‌ است و تنها شامل آن همتایی است که تنظیم را دریافت می‌کند.

ارسال و دریافت داده‌ها

پایانه‌ها از جریان‌ها برای ارسال و دریافت داده‌ها استفاده می‌کنند. هرچه باشد مقصود نهایی آنها همین است. جریان‌ها یک جریان-بایتِ انتزاعی و متوالی هستند. گرچه جریان‌های جداگانه لزوماً به ترتیب اصلی تحویل داده نمی‌شوند.

الویت بندی جریان

اگر منابع تخصیص داده شده به جریان‌ها بطور صحیح اولویت بندی شده باشند تسهیم جریان تاثیر بسزایی بر روی عملکرد برنامه می‌گذارد. تجربه با دیگر پروتکل‌های توزیع شده، همانند HTTP/2 نشان می‌دهد که استراتژی‌های اولویت بندیِ مؤثر اثر مثبتِ بسزایی بر روی عملکرد دارند.

پروتکل QUIC خودش قاب‌هایی برای تبادل اطلاعات اولویت بندی را ارائه نمی‌دهد. در عوض به دریافت اطلاعاتِ اولویت بندی توسط برنامه‌ای که از QUIC استفاده می‌کند اتکا می‌کند. پروتکل‌هایی که از QUIC استفاده می‌کنند این امکان و قابلیت را دارند که هر ترتیب اولویت بندی که متناسب با معنای برنامه آنها باشد تعریف کنند.

هنگامی‌که HTTP/3 از طریق QUIC انجام می‌گیرد، اولویت بندی در لایه‌ی HTTP صورت می‌پذیرد.