ווי התחברות הוא מדיניות סשן, לא מסנן מנות
ווי ההתחברות של הלקוח פועל פעם אחת בכל סשן ולעולם אינו רואה את המטען. שימו את הקבלה במקום שבו יש סשנים, ואת שינוי התוכן במקום שבו יש בקשות.
מישהו רוצה לבדוק מה לקוחות שולחים דרך המנהרה, מוצא את ווי ההתחברות בתיעוד ומתחיל לכתוב סקריפט שלעולם לא יקבל אפילו מנה אחת. הווי אמיתי ושימושי, אבל יחידת העבודה שלו היא סשן, לא בית. בחירת הרכיב הנכון היא השוואה בין שלושה מקומות שבהם עבודה יכולה להתרחש, והשאלה המכרעת היא איזו יחידה כל אחד מהם באמת רואה.
מה הווי מקבל, ומה הוא לעולם לא מקבל
ווי התחברות של לקוח פועל פעם אחת כאשר לקוח מאומת מקים סשן, בהקשר התהליך של השרת, עם ארגומנטים מתועדים וערכי סביבה כמו השם המשותף והכתובת שהוקצתה. הוא יכול לכתוב תצורה לכל לקוח, לקבל החלטת קבלה, להקצות משאב חיצוני או לתעד שהחיבור התרחש. מה שהוא לא יכול לעשות הוא לצפות בתעבורה, כי עד שהמנה הראשונה חוצה את המנהרה הווי כבר חזר.
זו אינה מגבלה שצריך לעקוף. קריאה חוזרת של סשן שתנסה לעבד זרם הייתה צריכה לרוץ לכל אורך חיי החיבור, וחוזה הסקריפטים של הדמון אינו בנוי לצורה הזו. שאלו לשם מה הווי לפני שתחליטו שהוא מפריע לכם.
גם התחברויות חוזרות חשובות. לקוח שנופל ומתחבר מחדש הוא סשן חדש, ולכן כל מה שהווי מקצה חייב להיות אידמפוטנטי או להיות מותאם לאירוע ניתוק שמנקה. מצב שדולף בכל התחברות מחדש הוא הבאג הראשון הרגיל בתכנון מבוסס ווי.
מדיניות סשן שייכת לווי
קבלה היא העבודה הטבעית של הווי. אתם יודעים מי התחבר, מאיפה ועם איזה תעודה, ואתם יכולים להחליט אם הסשן הזה ימשיך או יידחה. ההחלטה הזו זולה, היא מתרחשת פעם אחת, והיא אינה דורשת להסתכל על אפילו בית אחד של מטען.
הקצאת תצורה מתאימה לאותה צורה. ווי יכול לבחור את כתובת הלקוח, לדחוף אפשרויות המתאימות לזהות הזו, או לכתוב קטע שהשרת קורא עבור הלקוח הזה. מכיוון שההחלטה היא לכל סשן, היא נשארת מובנת כשמשהו משתבש ומישהו צריך להסביר מדוע לקוח מסוים קיבל כתובת מסוימת.
תיעוד הוא ההתאמה השלישית. רשומת ביקורת שאומרת שסשן התקבל, עם הזהות והזמן שלו, שייכת בדיוק לכאן. זה אינו יומן תעבורה ולא צריך להעמיד פנים שהוא כזה. אם מישהו ישאל אחר כך מה לקוח עשה בתוך המנהרה, התשובה חייבת לבוא ממקום אחר.
עבודת מנות שייכת לנתיב מנות
אם הדרישה היא לראות או לשנות בתים בתנועה, הרכיב חייב להיות בנתיב ההעברה: כלל חומת אש עם תור, ווי לבקרת תעבורה, או מעביר במרחב המשתמש. המנגנונים האלה רואים מנות, ויש להם מצב משלהם, מצבי כשל משלהם ופרופיל ביצועים משלהם.
עריכת מטען בשכבה הזו קשה יותר מקריאתו. שינוי בית אחד יכול לפסול שדה אורך, סכום ביקורת או מכונת מצבים של פרוטוקול, ומנהרה בשכבה שלישית לא מגנה עליכם מאף אחד מאלה. היא רק אומרת שהכותרות החיצוניות אינן אלה שאתם עורכים. תקצבו את עבודת התיקון הזו לפני שאתם מבטיחים למישהו שכתוב תוכן.
לכידת ממשק היא הכלי הזול ביותר בקטגוריה הזו, והיא תצפית ולא עורך. אנשים מבלבלים בין השניים כי את שניהם מתארים כראיית תעבורה, אבל לכידה מייצרת קובץ ונתיב מנות מייצר החלטה.
שינויים ביישום שייכים ליישום
כשהמטרה היא לשנות מה בקשה מכילה או איך נוצרת תשובה, המקום הנכון הוא השירות עצמו או פרוקסי שמסיים את הפרוטוקול בכוונה. הרכיבים האלה כבר מבינים בקשות, תשובות ואת האימות שהיישום מצפה לו, וזה בדיוק ההקשר שחסר למסנן מנות.
תרגום כתובות נמצא בתחתית הרשימה הזו מסיבה. הוא כותב מחדש כתובות ופורטים ומשאיר את המטען בשקט, ולכן הוא אינו כלי תוכן, בכל תדירות שבה הוא מופיע במתכון שמזכיר גם תוכן.
הפרדה של הגבולות האלה היא מה שעושה תכנון לבר הסבר. מדיניות סשן בווי, טיפול במנות בנתיב מנות, ושינוי יישום במקום שבו הפרוטוקול מסתיים בכוונה: שלושה משפטים שמשמשים גם רשימת בדיקה לסקירה.
איפה TLS עדיין מסיים את השיחה
דבר אחד שורד את כל האמור לעיל: תעבורה בתוך המנהרה שנושאת HTTPS שומרת על הצפנת התעבורה של עצמה. החזקה במפתחות ה-VPN נותנת לכם את מנת ה-IP הפנימית ולא נותנת לכם את מפתחות הסשן של האתר בקצה השני.
לכן ווי לא יכול לבדוק תוכן אפילו בעקרון, ולכן נתיב מנות רואה טקסט מוצפן אלא אם הפריסה מסיימת את ה-TLS הפנימי בכוונה. חוזה הסקריפטים מתאר מה ניתן לווי; הוא לא אומר דבר על מטען כי אין מטען לתת.