דילוג לתוכן
Dialova

תיעוד IRC · מתקדמים

קריאה וניתוח של מבנה הודעת IRC

הודעת IRC מסתיימת ב־CRLF. היא עשויה לכלול תגיות, מקור, פקודה ופרמטרים. ב־TCP, מקטע נתונים שהתקבל אינו בהכרח שורה שלמה: חלוקה להודעות קודמת לפירוש שלהן.

צוות Dialova · נבדק בתאריך

פירוק שורה #

דוגמת הודעה; CRLF הסופי אינו מוצג
@time=2026-10-29T10:00:00.000Z :Alice!alice@cloak.example PRIVMSG #atelier :Bonjour tout le monde
רכיבהערך בדוגמהתפקיד
תגיות@time=…מטא־נתונים, לפני הרווח המפריד הראשון.
מקור / קידומת:Alice!alice@cloak.exampleהשולח כפי שהשרת מציין אותו.
פקודהPRIVMSGפעולת פרוטוקול.
פרמטר יעד#atelierיעד.
פרמטר אחרון:Bonjour tout le mondeפרמטר שמכיל רווחים; הנקודתיים אינן חלק מהטקסט.

רווחים והפרמטר האחרון #

המפריד הבסיסי הוא רווח ASCII. אפשר לפתוח את הפרמטר האחרון בנקודתיים; כל מה שאחריהן שייך לו, כולל רווחים. פיצול פשוט של כל השורה לפי רווחים יאבד את המידע הזה.

שלוש הודעות נפרדות, כל אחת מסתיימת ב־CRLF
TOPIC #atelier :
PRIVMSG Bob :texte avec des espaces
PING :jeton-123

בדוגמה הראשונה יש פרמטר אחרון ריק; השנייה מכילה טקסט עם רווחים. סמני הכיוון C/S בדוגמאות האחרות במדריך אינם חלק מהבתים שנשלחים.

אורך, בתים וקידוד #

מגבלת האורך ההיסטורית של הודעת IRC היא 512 בתים, כולל CRLF. לא מדובר ב־512 תווים: תו UTF-8 עשוי לתפוס כמה בתים. לתגיות IRCv3 מגבלות נוספות משלהן, שאינן הופכות את שאר ההודעה לבלתי מוגבל.

IRC ההיסטורי אינו מבטיח קידוד יחיד לכל הטקסטים. לקוחות ורשתות מודרניים משתמשים לרוב ב־UTF-8, וערכי תגיות IRCv3 חייבים להיות בקידוד זה. יש לבדוק את מדיניות הרשת ואת הטיפול בקלט לא תקין; אין להניח משא ומתן אוטומטי על קידוד.

מנתח עמיד #

  • צבירת בתים עד לסיום הודעה שלמה, ושמירת המקטע שנותר.
  • טיפול בכמה שורות בקריאת רשת אחת ובשורה שהתפצלה לכמה קריאות.
  • הגבלת הזיכרון לפני המתנה בלתי מוגבלת לסוף שורה.
  • חילוץ ופענוח של אזור התגיות, ואז המקור, הפקודה והפרמטרים.
  • אין לבצע אירוע היסטורי כשינוי של המצב הנוכחי.

מקורות ובדיקת המידע

הדוגמאות משתמשות בכינויים ובדומיינים בדויים, למעט כתובות חיבור שמתועדות במפורש. הרחבות והגדרות ייחודיות לרשת מצוינות בטקסט.