הבדלים בין גרסאות בדף "User Datagram Protocol"

הוסרו 58 בתים ,  לפני שנתיים
הסרת קישורים עודפים
(הסרת קישורים עודפים)
'''User Datagram Protocol''' (ב[[ראשי תיבות]]: '''UDP''') הוא פרוטוקול השייך ל[[שכבת התעבורה של מודל ה-OSI]] ול[[שכבת התעבורה של מודל ה-TCP/IP]] המאפשר העברת נתונים לא אמינה ([[חבילת מידע|חבילות מידע]]).
 
'''UDP''' אינו מספק אמינות או שימור סדר כפי שקורה ב-[[TCP]]. [[חבילת מידע|חבילות מידע]] עשויות להגיע בסדר שונה מזה שבו הן נשלחו, להגיע מספר פעמים או ללכת לאיבוד ולא להגיע כלל.
 
חסכון המידע המבטיח את אמינות השליחה ועובדת היותו של הפרוטוקול "connectionless" (אינו מייסד קשר בדומה לפרוטוקול [[TCP]]), גורמים לפרוטוקול UDP לספק דיוור מהיר לחבילות הנשלחות דרכו. המהירות היחסית של הפרוטוקול הופכת אותו מתאים ביותר לאפליקציות שאינן דורשות אמינות מלאה של המידע (בין אם הן לא זקוקות לו או מממשות זאת בעצמן), לאפליקציות עבורן יש חשיבות גבוהה לזמן דיוור קצר (לדוגמה [[Domain Name System|DNS]]) ולאפליקציות בהן שני הפרמטרים מתאימים (לדוגמה [[VoIP]] בה עיכוב מוריד מאיכות השיחה ולעומת זאת מידע שלא הגיע לא ישודר שוב).
 
==פורטים (Ports)==
בדומה ל-[[TCP]] גם '''UDP''' משתמש ב[[פורט (תקשורת)|פורטים]] (ports), על-מנת להפריד בין התקשרויות בנושאים שונים.
 
ב-'''UDP''' מוקצות 16 [[סיבית|סיביות]] עבור כל פורט. כלומר, ערך פורט יהיה בין 0 ל-65,535.
למספר הפורט יש חשיבות, שכן מספרים שונים משמשים לשימושים שונים:
* פורט 0 שמור והשימוש בו הוא במקרה שבו השולח אינו מצפה לקבל תשובה.
* מספרי הפורטים 1 עד 1,023 שמורים לפורטים "ידועים" (Well-Known Ports).
* מספרי הפורטים 1,024 עד 49,151 הם פורטים רשומים לפרוטוקולים מסוימים או חברות מסוימות.
* מספרי הפורטים 49,152 עד 65,535 נועדו לשימוש זמני על ידי לקוחות בפניות אל השרת.
 
בניגוד לפרוטוקול [[TCP]] בו כל ייסוד קשר בין שני מחשבים "תופס" מספר [[פורט (תקשורת)|פורט]] באופן בלעדי, בפרוטוקול UDP יכול מחשב להתקשר עם מספר מחשבים על אותו מספר [[פורט (תקשורת)|פורט]] במקביל.
מאחר שפרוטוקול UDP אינו מבטיח הגעת הודעות בסדר מסוים, או הגעת הודעות כלל ולעומת זאת מספק זמן דיוור נמוך עד להגעה ליעד, מבנה החבילה רזה.
ה[[תקורה]] של החבילה מכילה פתיח באורך 64 [[סיבית|סיביות]] בלבד.
=== מבנה הפתיח ===
 
{| bgcolor="#3377CF" align="center"
| align="center" bgcolor="#6699EF" | 1 || align="center" bgcolor="#6699EF" | 2 || align="center" bgcolor="#6699EF" | 3 || align="center" bgcolor="#6699EF" | 4 || align="center" bgcolor="#6699EF" | 5 || align="center" bgcolor="#6699EF" | 6 || align="center" bgcolor="#6699EF" | 7 || align="center" bgcolor="#6699EF" | 8 || align="center" bgcolor="#6699EF" | 9 || align="center" bgcolor="#6699EF" | 10 || align="center" bgcolor="#6699EF" | 11 || align="center" bgcolor="#6699EF" | 12 || align="center" bgcolor="#6699EF" | 13 || align="center" bgcolor="#6699EF" | 14 || align="center" bgcolor="#6699EF" | 15 || align="center" bgcolor="#6699EF" | 16 || align="center" bgcolor="#6699EF" | 17 || align="center" bgcolor="#6699EF" | 18 || align="center" bgcolor="#6699EF" | 19 || align="center" bgcolor="#6699EF" | 20 || align="center" bgcolor="#6699EF" | 21 || align="center" bgcolor="#6699EF" | 22 || align="center" bgcolor="#6699EF" | 23 || align="center" bgcolor="#6699EF" | 24 || align="center" bgcolor="#6699EF" | 25 || align="center" bgcolor="#6699EF" | 26 || align="center" bgcolor="#6699EF" | 27 || align="center" bgcolor="#6699EF" | 28 || align="center" bgcolor="#6699EF" | 29 || align="center" bgcolor="#6699EF" | 30 || align="center" bgcolor="#6699EF" | 31 || align="center" bgcolor="#6699EF" | 32
|-
| align="center" bgcolor="#6699EF" colspan="16" | פורט המקור || align="center" bgcolor="#6699EF" colspan="16" | פורט היעד
|-
| align="center" bgcolor="#6699EF" colspan="16" | אורך החבילה || align="center" bgcolor="#6699EF" colspan="16" | [[Checksum]]
|}
 
 
 
*[[פורט (תקשורת)| פורט]] המקור (16 סיביות) - שדה המכיל את מספר הפורט במחשב המקור. שדה אופציונלי, מאחר שפרוטוקול UDP לא מקיים בהכרח תקשורת דו כיוונית. במקרה ואינו בשימוש השדה יכיל אפסים.
 
*[[פורט (תקשורת)| פורט]] היעד (16 סיביות) - שדה המכיל את מספר הפורט במחשב היעד.
 
*אורך החבילה (16 סיביות) - שדה המכיל את אורך החבילה ביחידות של [[בית (מחשב)|בתים]].
* סיכום ביקורת (16 סיביות) - [[checksum]], מספר האימות של הפתיח והנתונים. שדה אופציונלי, שבמידה ולא ימומש יכיל רשומה מלאה ב-0 בינארי.
 
* סיכום ביקורת (16 סיביות) - [[checksum]], מספר האימות של הפתיח והנתונים. שדה אופציונלי, שבמידה ולא ימומש יכיל רשומה מלאה ב-0 בינארי.
 
===פונקציית ה-Checksum===
 
אימות המידע מתבצע על ידי הצד השולח והצד המקבל, כאשר הצד השולח מאחסן את תוצאת החישוב בשדה המתאים והצד המקבל משווה את תוצאתו עם ערך השדה הקיים.
 
פונקציית ה-Checksum מבצעת את החישוב הבא: חילוק ההודעה לקטעים של 16 סיביות, סכימת כל הקטעים והוספת השארית. לאחר מכן התוצאה נשללת לפי ייצוג One's Complement - כל ביט 0 מוחלף ב-1 ולהפך.{{הערה|[http://www.netfor2.com/checksum.html Netfor2.com].}}
 
כקלט לפונקציית ה-Checksum מוכנסים: חבילת הUDP (הפתיח עם שדה checksum מאופס ושדה המידע), כתובות המקור והיעד של [[IP]], הפרוטוקול המוגדר בפתיח ה[[IP]]הIP (זהו שדה באורך 8 סיביות שמרחיבים ב8 סיביות של אפס משמאל), ושדה נוסף זהה לאורך חבילת הUDP. במידה והחבילה מכילה מספר של סיביות שאינו מתחלק ב-16, הקלט לפונקציה יהיה הרחבה של החבילה עם אפס בסופה.
 
==פרוטוקולים המשתמשים בUDP==
==ראו גם ==
[[מונחים ברשת מחשבים]]
 
 
==קישורים חיצוניים==
{{מיזמים|ויקימילון=UDP}}
 
==הערות שוליים==
{{הערות שוליים}}