
05-04-2011, 18:42
|
|
מנהל פורומי "תכנות ובניית אתרים" ו"חומרה ורשתות"
|
|
חבר מתאריך: 25.10.01
הודעות: 42,778
|
|
המידע מתחלק לפאקטים מהסיבה הפשוטה שהשכבה שמתחת למידע הזה, מוגבלת בעצמה בגודל מסויים (יש באפרים בחומרה שאליהם המידע נקלט, מאוחסן, ומועבר הלאה...) - וגם מהסיבה שציינת - אם מידע נופל בדרך (מה שיכול לקרות משלל סיבות...) - אפשר לשדר רק את חלקו מחדש (TCP Retransmission) - ולא את הכל.
שכבת ה IP מחלקת את ה stream של המידע של ה"חיבור" (במרכאות כי לא באמת מחובר צד אחד לצד השני בצורה פיזית, זה בדיוק ההבדל בין רשת circuit-switched לרשת packet-switched) כך שיתאים להעברה על כל התווך בין מכונת המקור למכונת היעד. ראוטרים בהמשך הדרך יכולים אף לבצע חלוקה נוספת של הפאקטים, אם לא ניתן להעבירם בגודלם המקורי מסיבות שונות (להלן: IP Fragmentation). אכן נעשה תהליך הפוך בצד השני.
פאקטים לא חייבים להגיע בסדר שנשלחו. בכל פעם שפאקט מגיע לנתב, הוא בוחר את הנתיב שנראה לו הטוב ביותר להעברה. בהחלט ייתכן ששני פאקטים של אותו חיבור, יעברו מסלול שונה לחלוטין, ולא מן הנמנע שפאקט ב' שנשלח אחרי פאקט א', יגיע פאקט ב' לפני פאקט א'. זה נקרא Packet re-ordering ול TCP, במנגנון יצירת ה Stream מחדש בצד השני, יש את היכולת לטפל בכך ולהפוך את המידע כך שיוצג לאפלקיציה בדיוק כפי שנשלח מהמקור. כשעובדים ב UDP (או בכל פרוטוקול שאינו TCP, בעצם), האפליקציה צריכה להניח לבד שאף אחד לא "יפצה" אותה על אובדן פאקטים או על Reordering - והיא צריכה (זאת אומרת - המתכנת צריך ) לממש את הטיפול בכך בעצמה.
|