HTTP - למה הוא נראה פשוט, אבל רחוק מלהיות כזה
HTTP - למה הוא נראה פשוט, אבל רחוק מלהיות כזה
אחרי שדיברנו על תורים, Latency ופשרות ברמת התקשורת, אפשר סוף-סוף להגיע לפרוטוקול שרוב האנשים פוגשים יום-יום - HTTP.
הוא נתפס כפרוטוקול “קל”: שולחים בקשה, מקבלים תשובה, וזהו.
אבל הפשטות הזו היא אשליה מכוונת.
HTTP הוא פרוטוקול של משמעת
HTTP אינו מנסה לפתור בעיות רשת. הוא מניח שהרשת בעייתית - ומתאים את עצמו לכך.
ההנחה המרכזית שלו פשוטה: כל בקשה עומדת בפני עצמה.
אין זיכרון, אין הבטחה להמשכיות, ואין ציפייה שהצד השני “יזכור” משהו.
זו אינה מגבלה - זו בחירה מודעת.
Statelessness כיתרון, לא כחיסרון
HTTP מוגדר כ-Stateless: כל בקשה היא עולם בפני עצמו.
המשמעות:
- השרת לא צריך לזכור מי ביקש קודם
- אין תלות בבקשות קודמות
- וכל בקשה יכולה להגיע לכל שרת זמין
זה מה שמאפשר:
- סקייל גבוה
- איזון עומסים
- והחלפת שרתים בלי לשבור את המערכת
המחיר: כל הקשר צריך להישלח שוב ושוב.
למה זה עובד למרות חוסר היעילות
לכאורה, לשלוח שוב הקשר זה בזבוז. בפועל, זה מה שמאפשר שרידות.
כשאין State:
- קריסה מקומית לא שוברת שיחות אחרות
- תורים מתקצרים מהר יותר
- והמערכת מתאוששת בקלות
HTTP מקריב אלגנטיות לטובת יציבות.
המשל
אפשר לחשוב על דלפק שירות שבו כל פנייה נכתבת על טופס מלא.
זה איטי יותר מאשר “להמשיך שיחה”, אבל אם הפקיד מתחלף - שום דבר לא הולך לאיבוד.
HTTP לא עומד לבד
HTTP יושב מעל:
- TCP (או פרוטוקול דומה)
- תורים
- ניתוב
- ומנגנונים שלא נראים לעין
הוא נראה פשוט רק כי שכבות אחרות סופגות את המורכבות במקומו.
ההשלכה המערכתית
כשמערכת מבוססת HTTP נראית איטית או לא יציבה, הבעיה כמעט אף פעם אינה ב-HTTP עצמו.
היא נמצאת:
- בתורים שמתחת
- ב-Latency שלא נמדד
- או ב-State שהוכנס “בטעות” מעליו
HTTP עובד טוב כל עוד לא מנסים להפוך אותו למשהו שהוא לא.
מבט קדימה
HTTP לא נשאר סטטי. עם הזמן הוא התפתח, הסתעף, והשתנה - אבל כמעט תמיד בלי לשבור את העבר.
בפוסט הבא נעסוק בשאלה הזו בדיוק: למה פרוטוקולים כמעט אף פעם לא מוחלפים - ואיך העולם ממשיך קדימה בלי לעצור.
📚 פוסטים נוספים בסדרה: איך מחשבים מדברים
- חלק 1 מהי בכלל תקשורת - ולמה חיבור פיזי לא מספיק
- חלק 2 מהו פרוטוקול - ולמה חופש מוחלט יוצר כאוס
- חלק 3 למה צריך שכבות בתקשורת - ולמה "פתרון אחד להכול" נכשל
- חלק 4 מה זה מחשב ברשת - ולמה כתובת אינה מיקום
- חלק 5 מה זה Packet - ולמה לא שולחים מידע כיחידה אחת
- חלק 6 TCP לעומת UDP - אמינות או מהירות
- חלק 7 מה זה Connection - ולמה חיבור הוא מצב לוגי, לא כבל
- חלק 8 Latency, Bandwidth ו-Throughput - ולמה כולם מתבלבלים ביניהם
- חלק 9 למה תורים הם הלב הסמוי של תקשורת
- חלק 11 למה פרוטוקולים מתפתחים - ולעולם לא מוחלפים לגמרי
- חלק 12 תקשורת כראי לחשיבה מערכתית
- חלק 13 התמונה השלמה - איך כל חלקי התקשורת מתחברים למערכת אחת חיה