פרוטוקול העברת נתונים של משתמש (UDP) הוא פרוטוקול תקשורת חסר חיבור הפועל בשכבת התעבורה של חבילת פרוטוקולי האינטרנט (IP). [1] הוא מהווה חלופה פשוטה, מהירה ויעילה יותר לפרוטוקול בקרת העברה (TCP) עבור יישומים שבהם מהירות ושיהוי נמוך מקבלים עדיפות על פני אספקה מובטחת ובדיקת שגיאות. [2] UDP מתואר לעיתים קרובות כפרוטוקול "ירי ושכח" מכיוון שהוא שולח חבילות נתונים (הנקראות דאטאגרמות) מבלי ליצור חיבור רשמי או לאמת את קבלתן. [3]
איך UDP עובד
UDP פועל על ידי עטיפת נתוני יישומים לדאטאגרמות UDP. כל דאטאגרמה מכילה כותרת עם מידע בסיסי כגון מספרי פורט מקור ויעד, אורך הדאטאגרמה וסכום ביקורת (אופציונלי עבור IPv4, חובה עבור IPv6). [4] לאחר בניית דאטאגרמה, UDP מעביר אותה לשכבת ה-IP לצורך ניתוב ליעד. בניגוד ל-TCP, UDP אינו שומר מידע מצב על החיבור, ואינו מיישם מנגנונים לשידור חוזר, בקרת זרימה או בקרת עומס. [5] התהליך ניתן לסיכום כדלקמן:
- נתוני יישום: יישום מייצר נתונים לשליחה.
- עטיפת UDP: UDP מוסיף כותרת לנתונים, ויוצר דאטאגרמת UDP. הכותרת כוללת:
- העברה לשכבת ה-IP: דאטאגרמת ה-UDP מועברת לשכבת ה-IP, שמוסיפה כותרת משלה ומנתבת את החבילה ברחבי הרשת.
- אין אישור: השולח אינו ממתין לאישור מהמקבל.
- אין שידור חוזר: אם דאטאגרמה אובדת או מגיעה לא בסדר, UDP אינו מנסה לשדר אותה מחדש או לסדר אותה מחדש. שכבת היישום אחראית לטפל בבעיות כאלה במידת הצורך. [7]
סוגי שימוש ב-UDP
בעוד ש-UDP עצמו הוא פרוטוקול יחיד, מאפייניו הופכים אותו למתאים למגוון סוגי יישומים:
- יישומי זמן אמת: יישומים שבהם אספקה בזמן קריטית יותר מאספקה מושלמת. דוגמאות כוללות:
- קול על גבי IP (VoIP): איבוד כמה חבילות שמע עדיף לעיתים קרובות על פני עיכובים משמעותיים הנגרמים על ידי שידורים חוזרים. [8]
- משחקים מקוונים: שיהוי נמוך חיוני לחווית משחק חלקה. אובדן חבילות קל נסבל לעיתים קרובות. [9]
- סטרימינג חי (וידאו/אודיו): בדומה ל-VoIP, נפילת פריימים מדי פעם פחות משבשת מאשר חציצה. [10]
- פרוטוקולי בקשה-תגובה פשוטים: פרוטוקולים הכוללים עסקאות קטנות ועצמאיות.
- שידור וריבוי שידור (Multicast): UDP מתאים היטב לשליחת נתונים למספר נמענים בו-זמנית, מכיוון שהוא אינו דורש יצירת חיבורים נפרדים עם כל נמען.
יתרונות ה-UDP
- מהירות ושיהוי נמוך: בשל אופיו חסר החיבור והיעדר תקורה ליצירת חיבור, אישורים ושידורים חוזרים, UDP מהיר משמעותית מ-TCP. [15] זה הופך אותו לאידיאלי עבור יישומי זמן אמת.
- פשטות: ל-UDP יש כותרת קטנה בהרבה ולוגיקת פרוטוקול פשוטה יותר בהשוואה ל-TCP, הדורשת פחות משאבים לעיבוד. [16]
- יעילות: פחות תקורה פירושה יותר רוחב פס זמין לנתונים בפועל, מה שהופך אותו ליעיל יותר עבור יישומים שיכולים לסבול אובדן נתונים מסוים. [17]
- תמיכה בשידור וריבוי שידור: UDP תומך באופן מובנה בשליחת נתונים למספר יעדים בו-זמנית, דבר ש-TCP אינו מאפשר ישירות. [18]
חסרונות ה-UDP
- אספקה לא אמינה: UDP אינו מציע הבטחות שחבילות יגיעו ליעדן, יגיעו בסדר הנכון, או יהיו נקיות משגיאות. חבילות שאבדו או נפגמו אינן משודרות מחדש על ידי UDP. [19]
- אין בקרת זרימה: UDP אינו מווסת את קצב שליחת הנתונים על ידי השולח, מה שעלול להוביל לעומס ברשת אם השולח מציף את המקבל או את הרשת. [20]
- אין בקרת עומס: בדומה לבקרת זרימה, ל-UDP אין מנגנונים לזיהוי או תגובה לעומס ברשת, מה שעלול להחמיר בעיות רשת. [21]
- אין בדיקת שגיאות (סכום ביקורת אופציונלי): בעוד שניתן להשתמש בסכום ביקורת לזיהוי שגיאות, הוא אופציונלי ב-IPv4 ואינו מספק תיקון שגיאות. דאטאגרמות פגומות נזרקות בדרך כלל. [22]
- אחריות שכבת יישום: יישומים המשתמשים ב-UDP חייבים ליישם מנגנוני אמינות, סדר ובדיקת שגיאות משלהם אם תכונות אלו נדרשות, מה שמוסיף מורכבות לפיתוח היישום. [23]
דוגמה
שקול תרחיש שבו אתה משחק משחק מרובה משתתפים מקוון. כאשר אתה מזיז את הדמות שלך, לקוח המשחק שולח את עדכוני המיקום שלך לשרת המשחק. אם עדכונים אלה היו נשלחים באמצעות TCP, התקורה של יצירת חיבור, אישור כל חבילה ושידור חוזר של חבילות שאבדו הייתה גורמת לפיגור ניכר, מה שהופך את המשחק לבלתי ניתן למשחק. במקום זאת, המשחק משתמש ב-UDP כדי לשלוח את עדכוני המיקום הללו. אם כמה עדכוני מיקום אובדים, המשחק עשוי להציג לזמן קצר את הדמות שלך במיקום מעט מיושן, אך העדכון הבא יתקן זאת במהירות, והחוויה הכוללת נשארת חלקה בשל השיהוי הנמוך. [9]
דוגמה נוספת היא שאילתת DNS. כאשר אתה מקליד כתובת אתר כמו www.example.com לדפדפן שלך, המחשב שלך שולח שאילתת DNS לשרת DNS. שאילתה זו היא בדרך כלל חבילת UDP קטנה. שרת ה-DNS מגיב עם כתובת ה-IP, גם היא בחבילת UDP קטנה. חילוף מהיר וחסר חיבור זה יעיל ביותר לפתרון שמות דומיין לכתובות IP. [11]
לסיכום, UDP הוא פרוטוקול חזק ויעיל עבור יישומים המעדיפים מהירות ושיהוי נמוך על פני אספקה מובטחת. הפשטות והתקורה המינימלית שלו הופכות אותו לחיוני לתקשורת בזמן אמת ולעסקאות מהירות ועצמאיות באינטרנט.
