שיעור 22: UDP Datagrams — sendto ו-recvfrom
בניגוד ל-TCP, UDP (User Datagram Protocol) לא מבסס חיבור, לא מבטיח סדר ולא ערב למסירה. נשמע כמו חיסרון — אבל דווקא בגלל זה UDP הוא מהיר ופשוט יותר, ומתאים לתרחישים שבהם אפשר לאבד packet בודד אך לא מוכנים לשלם את עלות TCP handshake ו-ACK. ב-NVIDIA, מדדים של GPU (צריכת חשמל, טמפרטורה, ניצול) נשלחים לר
UDP הוא כמו לשלוח גלויה בדואר. כותבים את הכתובת, מכניסים לתיבה — וזהו. אין אישור שהיא הגיעה, אין ידיעה אם הייתה לפני גלויה אחרת. אבל זה זול, מהיר וישיר. TCP לעומתו הוא חבילה עם מעקב, אישור חתימה וביטוח. ל-GPU metrics ששולחים כל שנייה, גלויה מספיקה בהחלט.
- UDP (User Datagram Protocol)
- פרוטוקול תחבורה connectionless. שולח datagrams ללא בסיס חיבור, ללא אחריות על סדר או מסירה. מהיר ופשוט יותר מ-TCP.
- sendto()
- שולח datagram UDP לכתובת יעד שמצוינת בכל קריאה. בניגוד ל-send(), לא צריך חיבור קיים מראש.
- recvfrom()
- מקבל datagram UDP ומחזיר גם את הנתונים וגם את כתובת השולח. מאפשר לשלוח תשובה לשולח הספציפי.
- datagram
- יחידת מידע עצמאית ב-UDP. כל datagram מכיל כתובת מקור, כתובת יעד, ונתונים. אינו תלוי ב-datagramים קודמים או עתידיים.
- ללא חיבור (connectionless)
- מודל תקשורת שבו כל הודעה עצמאית ואין תהליך הקמת חיבור (handshake). UDP הוא connectionless; TCP הוא connection-oriented.