זרם Brotli (.br)
IETF תקןBrotli הוא אלגוריתם דחיסת נתונים ללא אובדן בקוד פתוח שפותח על ידי גוגל, המותאם במיוחד לטיפוגרפיה באינטרנט (WOFF2) וקידוד תוכן HTTP (Content-Encoding: br) כדי להאיץ את אספקת דפי האינטרנט.
המר BROTLI ל-GZIP
ממיר חינמי מ-BROTLI ל-GZIP פועל בדפדפן. המר קבצים באופן מיידי במכשיר שלך.
בדיקה ומטא-נתונים
מערכות הפעלה ומנתחי קבצים מזהים קבצי Brotli על ידי בדיקת רצף הבייטים הבינארי הראשוני:
חתימת כותרת ברמת הבייט (Magic Bytes)
מערכות הפעלה ומנתחי קבצים מזהים קבצי Brotli על ידי בדיקת רצף הבייטים הבינארי הראשוני:
חתימת HEX (היסט 0):
CE B2 CF 81ייצוג ASCII: βÏ\x81
תקינה: IETF RFC 7932
מפרט טכני
| מבנה המכולה | מסגור של זרם סיביות גולמי עם הצהרת גודל חלון אופציונלית ומטא-בלוקים |
| דחיסה | מילון הזזה LZ77 (עד 16 MB), מידול הקשר מסדר שני ומילון סטטי של 120 KB |
| סדר בתים (Endianness) | אריזת סיביות Little-Endian |
| מרחבי צבע | לא רלוונטי (זרם דחיסת נתונים) |
| ערוצים ומבנה | דחיסת זרם בתים לשימוש כללי |
| ממדים מרביים | אורך שרירותי של זרם בתים (תומך בהזרמה ללא הגבלת אורך) |
| שקיפות | שימור נתונים ללא אובדן, בדיוק בית-מול-בית, לאחר הלוך ושוב |
| הזרמה ופרוגרסיביות | חלוקה למטא-בלוקים מאפשרת הזרמת HTTP רציפה במקטעים |
מטריצת השוואה טכנית: Brotli מול מתחרים
| תכונה טכנית | Brotli (נוכחי) | GZ | ZSTD | DEFLATE |
|---|---|---|---|---|
| מילון סטטי מובנה | כולל מילון אינטרנט בגודל 120 קילו-בייט | ללא (דינמי בלבד) | מילונים שהמשתמש יכול לאמן | ללא (דינמי בלבד) |
| דחיסת אינטרנט (לעומת Gzip) | קטנים ב-15% עד 25% מ-Gzip | תקן בסיס (Gzip) | קטנים ב-10% עד 20% מ-Gzip | Deflate בסיסי |
| קידוד תוכן HTTP | 'Content-Encoding: br' | 'Content-Encoding: gzip' | 'Content-Encoding: zstd' | 'Content-Encoding: deflate' |
| מטרת התכנון העיקרית | העברת טקסט וגופנים באינטרנט | דחיסת קבצי Unix כללית | בסיס נתונים בזמן אמת והכנסת נתונים | אלגוריתם הדחיסה הבסיסי |
מצבי השחתה נפוצים ומדריך שחזור הקסדצימלי (Hex)
הדפדפן נכשל בטעינת משאב עם 'ERR_CONTENT_DECODING_FAILED'.
גורם שורש: פרוקסי או שרת קיצצו את זרם Brotli לפני שידור המטה-בלוק הסופי.
שחזור: נקה את מטמון הדפדפן, בדוק את הגדרות הדחיסה בשרת או פרוס את הקובץ מקומית באמצעות File2File.app.
ניתוח אבטחה ווקטורי תקיפה נגד מנתחי פורמטים (parsers)
המילון הסטטי ומודל ההקשר של Brotli מחייבים בדיקות קפדניות של גבולות הזיכרון כדי להגן מפני הפניות לאחור שנוצרו בזדון.
ווקטורי תקיפה ידועים
- קריאת מצביע מחוץ לגבולות בעת הפניה להיסטים במילון הסטטי שמחוץ לגודל הטבלה.
- פצצת פענוח (שוות ערך לפצצת zip), שמכלה את זיכרון הלקוח באמצעות מטענים זעירים.
- גלישת חוצץ במהלך שינוי גודל של חוצץ טבעתי בחלון הזזה.
שיטות מומלצות להגנה: אכיפת גדלי חוצץ פלט מרביים במהלך פיענוח של זרמי Brotli לא מהימנים.
היסטוריה ואבני דרך
יתרונות מרכזיים
- יחס דחיסה טוב יותר ב-15% עד 25% מזה של Gzip עבור נכסי אינטרנט כמו HTML, CSS ו-JavaScript.
- משלב מילון סטטי מוגדר מראש בגודל 120 קילו-בייט של מילים נפוצות באינטרנט, תגיות HTML וביטויים.
- מהירות פענוח מהירה במיוחד, המבטיחה עיבוד דפים בצד הלקוח כמעט מיידי.
מגבלות טכניות וחסרונות
- דחיסה ברמה 11 יקרה מבחינה חישובית (המתאימה ביותר לדחיסה מוקדמת של נכסים סטטיים).
- דורש HTTPS בכל דפדפני האינטרנט כדי למנוע השחתה על ידי פרוקסי שקוף.
- בקובצי .br גולמיים אין שמות קבצים או כותרות הרשאות משובצים, אלא אם הם נארזים במעטפת חיצונית.
עובדות טכניות מעניינות
- Brotli נקרא על שם 'Brötli', שמשמעותו 'לחם קטן' בגרמנית שוויצרית.
- המילון הסטטי בגודל 120 קילו-בייט בתוך Brotli מכיל אלפי מקטעים נפוצים באנגלית, בספרדית, בגרמנית, בסינית וב-HTML.
- שרתי אינטרנט ודפדפנים מרכזיים תומכים ב-Brotli, אך שיעור התעבורה המשתמש בו משתנה לפי השירות וסוג התגובה.
שאלות טכניות נפוצות
מדוע Brotli מהיר יותר מ-Gzip עבור אתרי אינטרנט?
Brotli עשוי ליצור קובצי טקסט לאינטרנט שקטנים מאלה של Gzip בחלק מהמקרים, אך ההבדל תלוי בתוכן, בהגדרות הדחיסה ובמימוש.
מדוע Brotli דורש HTTPS?
דפדפני אינטרנט תומכים ב-Brotli רק דרך חיבורי HTTPS מאובטחים, משום שפרוקסי שקופים ישנים באינטרנט היו עלולים לפרש לא נכון את הקידוד החדש 'br' או להשחית אותו.
כיצד אוכל לפענח קובץ .br?
ניתן לפענח קבצי .br או .brotli לטקסט רגיל או לקבצים המקוריים באופן מיידי באמצעות File2File.app ישירות בדפדפן האינטרנט שלך.