מודל השכבות> שכבת התעבורה > UDP  עמוד השער מושגים
UDP:

הקדמה

מבנה חבילת UDP

דרך הפעולה של UDP

 

הקדמה

UDP מספק את אותו שירות בלתי מהימן וחסר קישור שמספק IP. הוא אינו מוסיף דבר מלבד מספרי הפורטים, ו- checksum. ה- checksum מבטיח שחבילות שנתוניהן הושחתו או שונו לא יטופלו. UDP לא מודיע על כך שחבילות אבדו, או על כל בעיה אחרת בתקשורת. לכן, אפליקציה שבוחרת להשתמש ב- UDP כפרוטוקול התעבורה שלה, צריכה לדאוג בעצמה למהימנות התקשורת, ולהבטיח שבעיות בתקשורת, כמו כפילות נתונים או אובדן נתונים, יטופלו כהלכה.

 

מבנה חבילת UDP:

חבילת UDP כוללת את פתיח ה-UDP ואת הנתונים. הפתיח כולל 4 שדות בלבד - פורט המקור, פורט היעד, אורך החבילה, ושדה checksum.

 

0....... 8....... 16...... 24......
(32 ביטים)
פורט המקור
פורט היעד
אורך הסגמנט
 checksum
נתונים (אם יש)

 

דרך הפעולה של UDP
כפי שצוין, UDP הוא פרוטוקול של שכבת התעבורה, הנמצאת מעל שכבת האינטרנט במודל השכבות. הודעת ה-UDP כולה, כולל הפתיח, עוברת אינקפסולציה של IP לפני שליחתה ברשת. כלומר, הודעת ה-UDP ולכה היא למעשה שדה הנתונים של חבילה ה- IP. חבילת ה- IP, בתורה, עוברת אינקפסולציה של שכבת ממשק הרשת.
תהליך האינקספולציה, במקרה זה, אומר ש- UDP מוסיף פתיח לנתונים שהמשתמש (לרוב, אפליקציה כלשהי) שולח, ומעביר את ההודעה ל-IP. IP מוסיף פתיח IP להודעה שקיבל מ-UDP, ומעביר את החבילה לשכבת ממשק הרשת. שכבה זו מוסיפה את הפתיח המתאים, לפי סוג הרשת הפיזית שאליה מקושר המחשב, ושולחת את החבילה.
כאשר החבילה מגיעה למחשב היעד, היא עוברת את התהליך ההפוך: החבילה מתקבלת על ידי שכבת ממשק הרשת, ה"מקלפת" ממנה את פתיח הרשת; משם עוברת החבילה לשכבת ה- IP, שמקלפת את פתיח ה- IP, ולפי הפרוטוקול שמצוין שם יודעת להעביר את החבילה ל-UDP. UDP, בתורו, מקלף את פתיח ה-UDP, ולפי הפרוט שמצוין שם, יודע לאיזו אפליקציה להעביר את הנתונים.
מודל השכבות קובע אי תלות בין השכבות השונות. אבל, כפי שראינו, UDP מסתמך על כתובות ה-IP לחישוב ה- UDP checksum. כדי לדעת מהי כתובת ה-IP של המקור, על שכבת ה-UDP לתקשר עם שכבת ה-IP. שכבת ה-UDP לא יכולה לדעת מה תהיה כתובת המקור של החבילה, כיוון שזו תלויה בממשק הרשת דרכו תבחר שכבת ה-IP לשלוח את החבילה (כיוון שכפי שראינו, למחשב אחד יכולים להיות כמה ממשקי רשת). אינטראקציה זו בין UDP ל- IP אמנם עומדת בסתירה להפרדה העומדת בבסיס מודל השכבות, אך משיקולים פרקטיים, החליטו הוגי הפרוטוקול להעלים מכך עין.
ראינו קודם ש-UDP מבחין בין מקורות ויעדים שונים על גבי אותו מחשב, על ידי שימוש בפורטים. אפליקציה המעונינת לשלוח נתונים ברשת, מספקת לשכבת ה-UDP את מספר הפורט שלה, ואת מספר הפורט איתו היא מעונינת לתקשר, במחשב המרוחק. UDP מקבל נתונים מאפליקציות רבות, שלכל אחת מהן מספר פורט שונה, ומעביר אותם בנפרד לשכבת ה- IP. בכיוון ההפוך, שכבת ה-IP מעבירה את ההודעות הנכנסות לשכבת ה-UDP, שמחלקת אותן לאפליקציות המתאימות, לפי מספרי פורט היעד המצוינים בהן. כך, שכבת ה- UDP משמשת למעשה כמרבב (multiplexor), המאחד זרמים נפרדים של הודעות מאפליקציות שונות לזרם אחד ויחיד העובר לשכבת ה- IP, וכמפרד (de-multiplexor), המפריד בין ההודעות המגיעות משכבת ה-IP לזרמים שונים, לפי מספרי הפורט אליהן מיועדות ההודעות השונות.
כאשר אפליקציה מעונינת לתקשר עם אפליקציה אחרת, במחשב מרוחק, עליה לדעת מה מספר הפורט עליו יושבת האפליקציה המבוקשת. לכן, ישנה רשימה של פורטים מוגדרים מראש, שהאפליקציה יודעת מהם. למשל, בקשת DNS תשלח לפורט 53, ואילו הודעת tftp תשלח לפורט 69.