סאנג’וּ (三局), הדבר הזה אם באמת בונים מאפס — הקושי בכלל לא ב“לכתוב ממסר”, אלא ב“להחזיק על הכתפיים ערימה של עבודות מלוכלכות ושחורות”.
בערך יש את כמה הגושים האלה:
-
תכנון פרוטוקול
איך עושים Handshake
איך עושים אימות
האם צריך ריבוב (Multiplexing)
איך מטפלים בצורה אחידה ב-UDP, TCP, DNS
בהתחלה עושים כדי לחסוך כאב ראש, אחר כך כמעט תמיד משכתבים בגלל יכולת הרחבה -
מחסנית רשת חוצת־פלטפורמות
ההתנהגות ב-Windows / Linux / macOS / Android / iOS שונה לגמרי
TUN/TAP, פרוקסי מערכת, ניתוב, השתלטות על DNS — הכול אחרת
הדבר המגעיל באמת הוא תאימות פלטפורמות, לא כמה שורות socket -
ביצועים
כשמספר החיבורים עולה — הבעיות נחשפות
buffer, copy, תחרות על locks, תזמון coroutines, פרגמנטציה בזיכרון, עלות syscall
זה שחיבור יחיד רץ לא אומר שזה באמת יכול לעבוד בשטח -
יציבות
ניתוק והתחברות מחדש
מעבר רשת
שינה/התעוררות
NAT / IPv6 / MTU / פרגמנטציה
כשיש יותר מדי “זירות חריגות”, הלוגים יכולים לתת לאנשים PTSD -
הצפנה ואבטחה
החלפת מפתחות
הגנה מפני replay
Forward Secrecy
שחזור סשן
אבטחת הפצת קונפיגורציה
כאן הכי מפחיד “להמציא קריפטוגרפיה בעצמך” — זה פשוט להעלות לעצמך את רמת הקושי -
אסטרטגיית תעבורה ועטיפה
איך חותכים חבילות
איך מסתירים header
איך לא להשאיר חתימה קבועה מדי
הדברים האלה הם לא “רק שיתקשר”, אלא “שלא יתפוצץ לאורך זמן” -
טיפול ב-DNS
פתרון מקומי או פתרון מרוחק
DoH / DoT / UDP נקי
זיהום, cache, עקביות, דליפות
הרבה “ברור שהתחבר אבל זה עדיין מוזר” — האשם הוא DNS -
ניתוב ופיצול תעבורה
גלובלי, לפי כללים, לפי דומיין, לפי IP, לפי תהליך
GeoIP / GeoSite / כללים מותאמים אישית
מערכת הכללים נהיית יותר ויותר כמו חצי מפרש (Interpreter) -
יכולת תצפית (Observability)
לוגים
tracing
מצב חיבורים
לוח סטטיסטיקות
בלי זה הדיבוג שלך הוא לחלוטין קסמים ו“אם תאמין זה יעבוד” -
מערכת קונפיגורציה
עדכון חם (Hot update)
תאימות קונפיגורציה
מיגרציית גרסאות
בדיקת schema
המשתמשים הכי אוהבים לכתוב קונפיגורציה כמו זבל ואז לקלל שהליבה לא יציבה -
אקוסיסטם לקוח
GUI
מנויים (Subscription)
ייבוא/ייצוא קונפיגורציה
אינטגרציה עם המערכת
כשעושים מוצר באמת, ה-core לא בהכרח הכי גדול; מסביב זה מה שתופס נפח -
הבורות של תכנות בסיוע AI עצמו
AI מצטיין בלכתוב קוד רשת “שנראה נכון”
אבל בקונקרנציה, תנאי קצה, ומכונת מצבים של פרוטוקול — הוא ממש קל שיטמין מוקשים
הוא יכול לעזור לך לבנות שלד, להשלים boilerplate, לכתוב בדיקות
הוא לא יכול להחליף אותך באימות נכונות הפרוטוקול
בסוף זה בדרך כלל נהיה: AI מוציא קוד ב-5 דקות, ואתה עושה capture חבילות 5 שעות כדי למצוא את הבעיה
אם עושים רק ליבה פשוטה, נקודת הכאב הכי ריאלית הנדסית היא בעצם:
להגדיר מראש יעד מינימלי
לא להתחיל ישר חוצה־פלטפורמות
לא להתחיל ישר עם פרוטוקול שהמצאת
לא להתחיל ישר עם מנוע כללים
לא להתחיל ישר עם “ארכיטקטורה אוניברסלית עתירת־ביצועים”
אחרת זה מאוד בקלות הופך ל:
שבוע ראשון: אני הולך לבנות את הליבה של הדור הבא
שבוע שני: בוא קודם נריץ TCP forwarding
שבוע שלישי: למה DNS שוב התפוצץ
שבוע רביעי: אני אלך כבר למודיפיקציה על פרויקט קיים
חד־משפט חריף:
לכתוב מאפס משהו “שעובד” זה לא עד כדי כך קשה; הקשה הוא לכתוב משהו “בר־תחזוקה לטווח ארוך, חוצה־פלטפורמות, יציב, ניתן להרחבה, וביצועים לא גרועים”.
אם אתה רוצה להעריך “רמת קושי של MVP שימושי מאפס בסיוע AI”, אני יכול להמשיך באותו קנה מידה ולפרק לך את זה ל:
אב־טיפוס של שבועיים
חודש שאפשר להשתמש בו לעצמך
3 חודשים שלא תגיע למצב של “כלא תחזוקה”
בגרסאות כאלה.