חשמל להנדסת הפקולטה מרושתות המעבדה למערכות תוכנה

‫הטכניון ‪ -‬מכון טכנולוגי לישראל‬
‫הפקולטה להנדסת חשמל‬
‫המעבדה למערכות תוכנה מרושתות‬
‫‪TCP/IP‬הכירות עם פרוטוקולי‬
‫חוברת הכנה‬
‫קומה ‪ 3‬חדר ‪375‬‬
‫החדר נמצא במסדרון בין פישבך למאייר‬
‫דרישות קדם‪ :‬הקורס "רשתות ואינטרנט ‪ "1‬או "מבוא לרשתות מחשבים"‪ .‬ניתן‬
‫לקחת גם במקביל לקורס‪ ,‬אך אז מומלץ לבצע לקראת סוף הסמסטר‪.‬‬
‫חשוב‪ :‬יש למלא טופס משוב בתום הניסוי!!!‬
‫המאחר ביותר מ – ‪ 11‬דקות לא יורשה לבצע את הניסוי!‬
‫המעבדה למערכות תוכנה מרושתות‬
‫רועי מטרני ‪ -‬טל‪ 0223: .‬דוא"ל‪roym@ee :‬‬
‫יניב בן יצחק – טל‪ 0223 .‬דוא"ל ‪yanivbi@tx‬‬
‫‪1‬‬
‫בטיחות‬
‫כללי‪:‬‬
‫הנחיות הבטיחות מובאות לידיעת הסטודנטים כאמצעי למניעת תאונות בעת ביצוע ניסויים‬
‫ופעילות במעבדה למערכות תוכנה‪ .‬מטרתן להפנות תשומת לב לסיכונים הכרוכים‬
‫בפעילויות המעבדה‪ ,‬כדי למנוע סבל לאדם ונזק לציוד‪.‬‬
‫אנא קראו הנחיות אלו בעיון ופעלו בהתאם להן‪.‬‬
‫מסגרת הבטיחות במעבדה‪:‬‬
‫‪ ‬אין לקיים ניסויים במעבדה ללא קבלת ציון עובר בקורס הבטיחות של מעבדות‬
‫ההתמחות באלקטרוניקה (שהינו מקצוע קדם למעבדה זו)‪.‬‬
‫‪ ‬לפני התחלת הניסויים יש להתייצב בפני מדריך הקבוצה לקבלת תדריך ראשוני‬
‫הנחיות בטיחות‪.‬‬
‫‪ ‬אין לקיים ניסויים במעבדה ללא השגחת מדריך ללא אישור מראש‪.‬‬
‫מדריך הקבוצה אחראי להסדרים בתחום פעילותך במעבדה; נהג על פי הוראותיו‪.‬‬
‫עשה ואל תעשה‪:‬‬
‫‪ ‬יש לידע את המדריך או את צוות המעבדה על מצב מסוכן וליקויים במעבדה או‬
‫בסביבתה הקרובה‪.‬‬
‫‪ ‬לא תיעשה במזיד ובלי סיבה סבירה‪ ,‬פעולה העלולה לסכן את הנוכחים במעבדה‪.‬‬
‫‪ ‬אסור להשתמש לרעה בכל אמצעי או התקן שסופק או הותקן במעבדה‪.‬‬
‫‪ ‬היאבקות‪ ,‬קטטה והשתטות אסורים‪ .‬מעשי קונדס מעוררים לפעמים צחוק אך הם‬
‫עלולים לגרום לתאונה‪.‬‬
‫‪ ‬אין להשתמש בתוך המעבדה בסמים או במשקאות אלכוהוליים‪ ,‬או להיות תחת‬
‫השפעתם‪.‬‬
‫‪ ‬אין לעשן במעבדה ואין להכניס דברי מאכל או משקה‪.‬‬
‫‪ ‬בסיום העבודה יש להשאיר את השולחן נקי ומסודר‪.‬‬
‫‪ ‬בניסיון לחלץ דפים תקועים במדפסת ‪ -‬שים לב לחלקים חמים!‬
‫בטיחות חשמל‪:‬‬
‫‪ ‬בחלק משולחנות המעבדה מותקנים בתי תקע ("שקעים") אשר ציוד המעבדה מוזן‬
‫מהם‪ .‬אין להפעיל ציוד המוזן מבית תקע פגום‪.‬‬
‫‪ ‬אין להשתמש בציוד המוזן דרך פתילים ("כבלים גמישים") אשר הבידוד שלהם פגום‬
‫או אשר התקע שלהם אינו מחוזק כראוי‪.‬‬
‫‪2‬‬
‫‪ ‬אסור לתקן או לפרק ציוד חשמלי כולל החלפת נתיכים המותקנים בתוך הציוד; יש‬
‫להשאיר זאת לטפול הגורם המוסמך‪.‬‬
‫‪ ‬אין לגעת בארון החשמל המרכזי‪ ,‬אלא בעת חירום וזאת ‪ -‬לצורך ניתוק המפסק‬
‫הראשי‪.‬‬
‫מפסקי לחיצה לשעת חירום‪:‬‬
‫‪ ‬במעבדה ישנם מפסקים ראשיים להפסקת אספקת החשמל‪ .‬זהה את מקומם‪.‬‬
‫‪ ‬בעת חירום יש להפעיל מפסקי החשמל הראשיים‪.‬‬
‫בטיחות אש‪ ,‬החייאה ועזרה ראשונה‪:‬‬
‫‪ ‬במעבדה ממוקמים מטפי כיבוי אש זהה את מקומם‪.‬‬
‫‪ ‬אין להפעיל את המטפים‪ ,‬אלא בעת חירום ובמידה והמדריכים וגורמים מקצועיים‬
‫אחרים במעבדה אינם יכולים לפעול‪.‬‬
‫‪‬‬
‫יציאות חירום‪:‬‬
‫‪ ‬בארוע חירום הדורש פינוי‪ ,‬כגון שריפה‪ ,‬יש להתפנות מיד מהמעבדה‪.‬‬
‫דיווח בעת אירוע חירום‪:‬‬
‫‪ ‬יש לדווח מידית למדריך ולאיש סגל המעבדה‪.‬‬
‫‪ ‬המדריך או איש סגל המעבדה ידווחו מיידית לקצין הביטחון בטלפון; ‪.2222 ,2473‬‬
‫‪ ‬במידה ואין הם יכולים לעשות כך‪ ,‬ידווח אחד הסטודנטים לקצין הביטחון‪.‬‬
‫לפי הוראת קצין הביטחון‪ ,‬או כאשר אין יכולת לדווח לקצין הביטחון‪ ,‬יש לדווח‪ ,‬לפי הצורך‪:‬‬
‫משטרה ‪,133‬‬
‫מגן דוד אדום ‪,131‬‬
‫מכבי אש ‪,132‬‬
‫גורמי בטיחות ו‪/‬או ביטחון אחרים‪.‬‬
‫‪ ‬בנוסף לכך יש לדווח ליחידת סגן המנמ"פ לעניני בטיחות; ‪.2174/4 ,0300‬‬
‫‪ ‬בהמשך‪ ,‬יש לדווח לאחראי משק ותחזוקה; ‪7444‬‬
‫לסיום‪ ,‬יש לדווח ל‪:‬‬
‫מהנדס המעבדה (טל‪)3220 .‬‬
‫‪ ‬בעת הצורך ניתן להודיע במקום למהנדס המעבדה לטכנאי המעבדה‪.‬‬
‫‪3‬‬
‫תדריך כללי‬
‫מסמך זה מכיל תדריך והכנה לניסוי ‪ .TCP/IP‬בתדריך נעבור בקצרה על היסודות של ‪ TCP/IP‬שיעזרו לכם לעבור את הניסוי‬
‫בקלות ותוך הבנה את המתרחש ברשת‪.‬‬
‫מבנה הניסוי‬
‫לניסוי ‪ 2‬חלקים‪ .‬החלק הראשון‪ ,‬המכיל ‪ 1‬תרגילים יחסית קצרים ‪ ,‬נותן סקירה על הפרוטוקולים הבסיסים של ‪ .TCP/IP‬החלק‬
‫השני‪ ,‬הכולל תרגיל אחד קצר ושני תרגילים ארוכים יותר‪ ,‬עוסק כולו בהכרה ושימוש במנגנוני בקרה של פרוטוקול ‪.TCP‬‬
‫לפיכך‪ ,‬גם חוברת ההכנה מחולקת לפי אותם חלקים‪ .‬יש לקרוא את החלק הראשון של החוברת לפני המפגש הראשון ולענות‬
‫על שאלות ההכנה הממוקמות בסוף החוברת‪.‬‬
‫סטודנטים רבים מעדיפים לעשות את תרגיל ‪ 4‬השייך עקרונית לחלק השני‪ ,‬כבר במפגש הראשון‪ .‬זהו תרגיל בסיסי ב‪,TCP-‬‬
‫ולכן מומלץ לקרוא לפני המפגש הראשון גם את ‪ 0‬העמודים הראשונים של חלק ב'‪ .‬כדאי להשאיר את הקריאה של כל החלק‬
‫השני של החוברת ליום או יומיים לפני חלקו השני של הניסוי כדי שהחומר הכתוב לא יישכח‪.‬‬
‫‪4‬‬
‫חלק א' – מבוא לפרוטוקולי ‪TCP/IP‬‬
‫מבוא‬
‫היום כל אחד כבר מכיר את רשת האינטרנט‪ ,‬ובמידה זו או אחרת את הטכנולוגיות שמרכיבות אותה‪ .‬למרות זאת‪ ,‬לא הרבה‬
‫מכירים לעומק את הפרוטוקולים שמהם מורכב האינטרנט‪.‬‬
‫‪ TCP/IP‬הינו אוסף הפרוטוקולים הסטנדרטי להעברת תקשורת נתונים‪ .‬הפרוטוקולים בנויים לשרת רשתות גדולות מאד‪,‬‬
‫המורכבות מתתי רשתות קטנות יותר שמקושרות ביניהן בעזרת נתבים‪ TCP/IP .‬משמש את רשת האינטרנט‪ ,‬שמורכבת‬
‫למעשה מאוסף של אלפי רשתות בכל העולם‪ ,‬כולל מוסדות מחקר‪ ,‬משרדי ממשלה‪ ,‬מוסדות ציבור‪ ,‬חברות מסחריות ומשקי‬
‫בית‪.‬‬
‫בניסוי זה נכיר קצת יותר לעומק חלק מהפרוטוקולים המרכזיים מתוך ה‪ ,TCP/IP-‬ע"י בחינה של תעבורת הרשת במעבדה‪.‬‬
‫אמנם המעבדה היא רשת מבודדת יחסית‪ ,‬אבל התעבורה שעוברת כאן דומה מאד לכל תעבורת רשת אחרת‪.‬‬
‫חוברת ההכנה מנסה לתת תמונה קצת יותר כוללת על איך עובדת רשת תקשורת נתונים‪ ,‬עם דגש חזק מאד על הפרוטוקולים‬
‫שבהם מתמקד הניסוי‪.‬‬
‫הסטוריה‬
‫מוצאו של ה‪ TCP/IP-‬הוא אי שם בשנות ה‪ 43-‬של המאה הקודמת‪ .‬סוכנות המחקר של משרד ההגנה (‪ ARPA‬ששינה את שמו‬
‫בהמשך ל‪ ) DARPA-‬החלה בשיתוף פעולה עם מספר אוניברסיטאות על מנת לתכנן פרוטוקול סטנדרטי‪ ,‬שיהיה פתוח לכמה‬
‫יצרנים‪ ,‬ויהיה עמיד לנפילה של קו תקשורת מסוים על ידי כך שימצא נתיב עוקף לקו זה‪ .‬יש לציין שבאותה תקופה כבר היו‬
‫קיימות רשתות תקשורת‪ ,‬אבל הן היו מוגבלות לייצרן ספציפי (למשל מיינפריים של ‪ ,)IBM‬כך שלא היה ניתן להשיג תקשורת‬
‫בין מחשבים של מערכות שונות‪.‬‬
‫‪ ARPA‬ביחד עם האוניברסיטאות יצרו ביחד את רשת ‪ ,ARPANET‬שהיווה את הרשת הראשונה שמבוססת על מיתוג מנות‪.‬‬
‫הרשת הזו הייתה מבוססת על פרוטוקול ‪ ,)Network Control Protocol( NCP‬שהוא גרסא קדומה של ה‪ TCP-‬המוכר היום‪.‬‬
‫ציוני דרך‬
‫להלן ציוני דרך מרכזיים בהתפתחות פרוטוקולי האינטרנט‪:‬‬
‫‪1242‬‬
‫הרשת הראשונית של ‪ )ARPANET( ARPA‬קמה לקראת סוף ‪ 1242‬וכללה ‪ 7‬צמתים‪ ,‬כל אחת‬
‫באוניברסיטה אחרת‪ ,UCLA :‬סטנפורד‪ ,‬יוטה וסנטה ברברה‪.‬‬
‫‪1241-2‬‬
‫תוכנת האימייל הראשונה פותחה עבור רשת ‪.ARPANET‬‬
‫‪5‬‬
‫‪1242‬‬
‫הופעת פרוטוקול ‪ .Telnet‬הפרוטוקול שימש כ‪ Terminal emulator -‬לחיבור מרחוק‪.‬‬
‫‪1240‬‬
‫הופעת פרוטוקול ‪ FTP‬להעברת קבצים‪.‬‬
‫‪1240-7‬‬
‫אחרי שמגיעים להבנה שפרוטוקול ‪ NCP‬מהווה בעיה במידה שרשת ה‪ ARPANET-‬תמשיך לגדול‪,‬‬
‫מוציאים ‪ Vint Cerf‬ו‪ Bob Kahn -‬מראשי אירגון ‪ ,ARPA‬את פרוטוקול ‪ .TCP‬גרסא זו של ‪ TCP‬שונה‬
‫ממה שקיים היום‪.‬‬
‫‪1243‬‬
‫פרוטוקול ‪ TCP‬מפוצל ל‪ 2-‬פרוטוקולים שונים‪ IP :‬שאחראי על העברת הנתונים בין הצמתים ברשת‪ ,‬ו‪-‬‬
‫‪ TCP‬שאחראי על התקשורת בין ‪ 2‬נקודות הקצה‬
‫‪1233‬‬
‫בעקבות ניתוק ה‪ IP-‬מפרוטוקול ‪ ,TCP‬הופיע פרוטוקול ‪.UDP‬‬
‫‪1231‬‬
‫פרסום ‪ IPv4‬הנמצא בשימוש עד היום (‪.)RFC 791‬‬
‫‪1231‬‬
‫פרסום ‪ ICMP‬בגרסתו הנוכחית (‪.)RFC 792‬‬
‫‪1230‬‬
‫‪ ARPANET‬עובר רשמית מ‪ NCP-‬ל‪.TCP/IP-‬‬
‫‪1232‬‬‫‪1221‬‬
‫המצאת ה‪ Web-‬ע"י מדענים מהמכון לחקר הגרעין ‪ CERN‬שבשוויץ‪ .‬פיתוח פרוטוקול ‪ HTTP‬ופורמט‬
‫‪.HTML‬‬
‫מהו האינטרנט‬
‫האינטרנט היא רשת מחשבים אשר מקשרת מאות מליוני מחשבים אחד לשני‪ .‬עד לאחרונה היו מחשבים אלה בדרך כלל‬
‫שרתים‪ ,‬מחשבים אישיים ומחשבים ניידים‪ ,‬אולם לאחרונה מצטרפים עוד ועוד מכשירים לחגיגה כולל טלפונים‪ ,‬טלוויזיות‪,‬‬
‫מצלמות‪ ,‬מכוניות‪ ,‬קונסולות משחק ועוד ועוד‪ .‬לכן‪ ,‬המונח רשתות מחשבים אמנם עדיין קיים‪ ,‬אך הוא לא מייצג את המציאות‬
‫כפי שהיא מצטיירת כרגע‪.‬‬
‫מכשיר אשר מחובר לאינטרנט נקרא ‪ host‬או תחנת קצה‪ .‬לפי אתר ‪ ,ISC‬נכון לשנת ‪ 2312‬אנו מתקרבים למיליארד תחנות‬
‫כאלה ברחבי העולם‪ ,‬אם כי חל קם הגדול לא מחובר רוב הזמן לרשת‪ .‬למרות זאת‪ ,‬יש עדיין מדינות שבקושי מחוברות‬
‫לאינטרנט‪ ,‬כמו סומליה ועיראק (למקרה שמישהו מחפש הזדמנויות עסקיות‪.)...‬‬
‫תחנות קצה מחוברות לרשת בדרך כלל באמצעי תקשורת שונים ‪ ,‬למשל כבל נחושת‪ ,‬משדר אלחוטי או כבל אופטי‪ .‬כל תחנת‬
‫קצה מסוגלת לעבוד בקצבי שידור וקליטה שונים בהתאם ליכולות השידור והקליטה שלה ולתווך שאליו מחוברת‪ .‬כשתחנת‬
‫קצה אחת שולחת מידע לתחנת קצה אחרת‪ ,‬המידע נעטף ב‪ header-‬ולפעמים גם ב‪ footer-‬אשר מסייעים למידע להגיד‬
‫לקצה השני בבטחה‪ .‬כך נוצרת חבילת מידע‪ .‬כאשר תחנת הקצה השניה מקבלת את החבילה‪ ,‬היא מקלפת את ה‪header-‬‬
‫וה‪ footer-‬ומחלצת את המידע מתוך החבילה‪.‬ה‪ header-‬כולל פרטים על מקור ויעד ההודעה‪ ,‬פרוטוקול תקשורת שעליו‬
‫עובדת (‪ UDP ,TCP‬וכו') ונתונים נוספים‪ .‬ה‪ footer-‬מסמן את סוף החבילה‪.‬‬
‫‪6‬‬
‫החבילה עוברת בדרכה מהמקור ליעד דרך מתגים ונתבים‪ ,‬שתפקידם להעביר את החבילה צעד אחד קרוב יותר ליעדה‪.‬‬
‫המתגים מקשרים בתת‪-‬רשת המקומית‪ ,‬ואילו הנתבים מעבירים את החבילה בין קווי התקשורת הליבתיים עד ליעד הסופי‪.‬‬
‫‪7‬‬
‫מודל השכבות‬
‫את מודל ‪ 4‬השכבות של ‪ OSI‬אתם אמורים להכיר מהקורס לרשתות‪ .‬מודל השכבות בחבילת הפרוטוקולים של ‪ TCP/IP‬אינו‬
‫תואם במדוייק את המודל התיאורתי של ‪ .OSI‬ב‪ TCP/IP-‬ישנן רק ‪ 7‬שכבות‪ ,‬כפי שמתואר בציור הבא‪:‬‬
‫כזכור‪ ,‬כל שכבה מתייחסת לנתונים של בשכבות שמעליה כאל ‪ ,data‬ומוסיפה ‪ header‬עם נתונים משלה‪.‬‬
‫‪Application‬‬
‫‪Application Data‬‬
‫‪TCP Data‬‬
‫‪TCP Header‬‬
‫‪IP Data‬‬
‫‪Transport‬‬
‫‪IP Header‬‬
‫‪Ethernet Data‬‬
‫‪Internet‬‬
‫‪Ethernet Header‬‬
‫‪Link‬‬
‫‪ ( LINK LAYER‬או ‪) NETWORK INTERFACE LAYER‬‬
‫שכבה זו היא הנמוכה ביותר במודל השכבות של ‪ ,TCP/IP‬והיא מקבילה ל‪ 2-‬השכבות הנמוכות של ‪ .OSI‬מטרת השכבה הזו‬
‫היא לנהל ממשק פיזי בין תחנת הקצה לבין הרשת‪.‬‬
‫‪8‬‬
‫למרות שמודל ה‪ TCP/IP-‬מתייחס אל החלק הזה כאל שכבה אחת‪ ,‬במודל ‪ OSI‬מדובר ב‪ 2-‬שכבות שונות וכך נתייחס לזה‬
‫בסעיף זה‪.‬‬
‫‪PHYSICAL LAYER‬‬
‫השכבה הפיזית היא השכבה הנמוכה ביותר של מודל ה־ ‪ OSI‬והיא מורכבת מטכנולוגיות שידור רשת הממומשות בחומרה‪.‬‬
‫בשכבה זו אין משמעות לוגית לתוכן של החבילה‪ ,‬וכל תפקידה הוא שידור הביטים לתוך הרשת‪.‬‬
‫השכבה הפיזית מגדירה את האמצעים לשידור הביטים על קו המחבר כמה נקודות רשת‪ .‬הביטים מתורגמים לאות שידור פיזי‬
‫שמועבר בחומרה ע"י תווך נושא גל‪ .‬בשכבה זו מוגדרים כל האמצעים האלקטרונים והמכנים שנדרשים על מנת לבצע פעולה‬
‫זו‪ ,‬כולל מחברים‪ ,‬תדרי שידור‪ ,‬מדיה (כבל נחושת‪ ,‬סיב אופטי) אורכי גל וכו'‪ .‬כמו כן השכבה מגדירה תקנים עבור אמצעים‬
‫אלה‪ ,‬למשל רמות מתח‪ ,‬אורך כבל מירבי ועוד‪.‬‬
‫דוגמאות‪:‬‬
‫‬‫‬‫‪-‬‬
‫השכבה הפיזית של תקן ‪ 1000Base-T ,100Base-T ,10Base-T – Ethernet‬שמעבירים סיגנלים בעזרת ‪ 7‬חוטי‬
‫נחושת‪ 1000Base-X ,100BaseFX ,‬שמעבירים מידע על גבי סיב אופטי‪.‬‬
‫תקן ‪ 332.11‬עבור רשתות ‪.Wi-Fi‬‬
‫‪ DSL‬שמותאם להעביר נתונים מעל קוי טלפון‪.‬‬
‫‪DATA LINK LAYER‬‬
‫תפקידה של שכבה זו הוא לדאוג שמידע יעבור בין ‪ 2‬תחנות סמוכות בתוך הרשת המקומית‪.‬‬
‫שכבה זו מחולקת ל‪ 2-‬תתי שכבות‪ :‬העליונה היא ‪ LLC‬שאחראית לשחרר כל שיקולי חומרה משכבת ה‪ Network-‬שמעליה‪.‬‬
‫התחתונה היא שכבת ה‪ MAC-‬שאחראית על אלגוריתם הגישה לרשת (למשל ‪ CSMD/CD‬ב‪ .)Ethernet-‬שכבת ה‪ MAC-‬היא‬
‫גם השכבה התחתונה ביותר המשתמשת בכתובות‪ .‬כאשר מוגדר פרוטוקול בו כמה נקודות יכולות לחלוק את אותו הקו‪ ,‬היעד‬
‫לחבילה נקבע ע"י כתובת זו‪ .‬עוד על כתובות ‪ MAC‬מפורט בהמשך כאשר נדון בפרוטוקול ה‪.Ethernet-‬‬
‫דוגמא‪:‬‬
‫נניח שנוצר קשר בין המחשב הנייד בכתובת ‪ 102.43.43.33‬לבין המחשב בכתובת ‪( 102.43.11.22‬ראה ציור למטה)‪.‬‬
‫הקשר הוא בין ‪ 2‬רשתות שונות‪ .‬בתוך כל רשת התקשורת היא ברמת ה‪ .data link-‬ברשת השמאלית התקשורת נעשית‬
‫מהמחשב הנייד דרך ‪ access point‬לכיוון המתג ומשם לנתב‪ .‬ברשת הימנית יש קשר אחר בין הנתב דרך המתג עד למחשב‪.‬‬
‫גם אם בסופו של דבר הקשר בין מחשבי הקצה הוא בשכבות גבוהות יותר‪ ,‬החבילות מנותבות בתוך כל רשת מקומית לפי‬
‫כתובת ‪ MAC‬ולא לפי כתובות ה‪.IP-‬‬
‫הקווים המעוגלים העבים מראים את התקשורת שנעשית ברמת ה‪.data link -‬‬
‫‪9‬‬
‫‪132.68.60.80‬‬
‫‪132.68.55.12‬‬
‫‪132.68.55.99‬‬
‫‪132.68.60.14‬‬
‫‪132.68.60.1‬‬
‫הדוגמא הנפוצה ביותר לפרוטוקול בשכבה הזו הוא ‪ .Ethernet‬דוגמאות נוספות הם ‪( PPP‬פרוטוקול נקודה לנקודה שמשמש‬
‫למשל במודמים)‪ ATM ,‬ו‪ Frame Relay-‬שנפוצים בתחום הטלפוניה‪ ,‬וכמובן שיש עוד רבים אחרים‪.‬‬
‫‪ETHERNET‬‬
‫פרוטוקול זה אינו חלק מחבילת הפרוטוקולים של ‪ TCP/IP‬אולם לצורך הבנת הניסוי יש צורך להסביר חלקים ממנו‪ .‬כאמור‪ ,‬זהו‬
‫הפרוטוקול הנפוץ ביותר כיום בשכבת ה‪ ,Network Interface-‬בייחוד ברשתות מקומיות‪.‬‬
‫כתובות ‪ETHERNET‬‬
‫לכל נקודת ‪( Ethernet‬למשל כרטיס רשת או פורט במתג) מוגדרת כתובת של ‪ 73‬ביטים‪ ,‬כלומר ‪ 4‬בתים‪ .‬הכתובת הזו צרובה‬
‫על כרטיס הרשת ואינה ניתנת לשינוי‪ .‬כתובת זו נקראת כתובת ‪ ,MAC‬והיא ייחודית בעולם‪.‬‬
‫הכתובת בנויה מ‪ 2-‬חלקים‪ 0 :‬הבתים הראש ונים מזהים את יצרן הכרטיס‪ ,‬ושלושת הבתים הנותרים הם מספר סידורי‬
‫שרירותי שהיצרן נותן‪ .‬בצורה כזו נמנעת אפשרות של ‪ 2‬יצרנים שונים שיגדירו בטעות את אותה הכתובת‪.‬‬
‫אם הערך של הבית הראשון הוא זוגי‪ ,‬הכתובת היא כתובת פרטית‪ ,‬וכשהיא מופיעה ככתובת היעד‪ ,‬רק המחשב אליו מיועדת‬
‫החבילה אמור לקרוא אותה‪ .‬כאשר הערך של הבית הראשון הוא אי זוגי‪ ,‬מדובר בכתובת ‪ .multicast‬במקרה כזה יש יותר‬
‫מיעד אחד לחבילה‪ .‬כל נקודת רשת אמורה לדעת לאילו כתובות ‪ multicast‬היא אמורה להתייחס‪.‬‬
‫‪10‬‬
‫מבנה חבילת ‪ETHERNET‬‬
‫על מנת לא לסבך את העניינים יותר מדי‪ ,‬נדון כאן רק במקרה הפשוט ביותר של ‪ ,Ethernet‬שבמקרה הוא גם הכי נפוץ‪.‬‬
‫‪ 3‬הבתים הראשונים (‪ )Preamble‬נועדו לסנכרן בין מקבל החבילה לסיגנל של החבילה עצמה‪ .‬השדות שאחריו מכיל את‬
‫כתובת היע ד של החבילה‪ ,‬כתובת המקור של החבילה וסוג הפרוטוקול של השכבה שמעל שכבת ה‪ 7 .MAC-‬הבתים‬
‫האחרונים של החבילה (‪ )CRC‬הם בדיקה של נכונות המידע‪.‬‬
‫שימו לב שבפרוטוקול זה גודל החבילה (‪ )MTU‬מוגבל‪ .‬ה‪ data-‬יכול להכיל עד ‪ 1133‬בתים‪ ,‬ומכאן נגזר שברמת ה‪MAC-‬‬
‫הגודל המקסימלי הוא ‪ 1117‬בתים‪.‬‬
‫הערה‪ :‬כאשר נבצע את הניסוי‪ ,‬לא נראה את ה‪ Preamble-‬וה‪ ,CRC-‬כי כרטיס הרשת מקלף את המידע הזה לפני שהוא‬
‫מעביר את החבילה ל‪ driver-‬של הכרטיס‪.‬‬
‫‪INTERNET LAYER‬‬
‫שכבה זו אחראית על קישור בין רשתות שונות והעברת חבילות מכיוון השולח לכיוון היעד‪ .‬המקבילה שלה ב‪ OSI-‬היא ה‪-‬‬
‫‪ .Network Layer‬הפרוטוקול החשוב ביותר בשכבה זו הוא )‪.Internet Protocol (IP‬‬
‫תפקידיה העיקרים של שכבת ה‪:Internet-‬‬
‫‪-‬‬
‫יצירת היררכיה של כתובות לוגיות (כתובות ‪ )IP‬בעזרתה מוגדרות רשתות‬
‫‪11‬‬
‫‬‫‬‫‪-‬‬
‫יצירת חבילות (‪ - )datagram‬עטיפה של המידע ב‪ header-‬שמסייע לחבילה לטייל בין הרשתות השונות בדרכה‬
‫ליעד‪.‬‬
‫מציאת הנתיב האופטימאלי בין שולח החבילה למקבל החבילה וניתוב החבילה בהתאם‬
‫שבירת החבילה לכמה חלקים (‪ )Fragmentation‬על מנת לתמוך ב‪ Network interfaces-‬עם ערך שונה של גודל‬
‫מנה מקסימלי (‪.)MTU‬‬
‫על מנת להפוך את הפרוטוקול ליעיל יותר‪ ,‬שכבת ה‪ Internet-‬אינה מבטיחה אמינות‪ .‬ואינה מספקת חיווי שהחבילות הגיעו‬
‫ליעדן‪ .‬האחריות הזו שייכת לפרוטוקולים ברמות גבוהות יותר‪ .‬כמו כן‪ ,‬שכבת ה‪ Internet-‬אינה מתייחסת לתוכן ההודעה או‬
‫לסוג הפרוטוקול שממומש בשכבות הגבוהות יותר‪.‬‬
‫שכבת ה‪ Internet-‬כוללת גם את הפרוטוקולים )‪ Address Resolution Protocol (ARP‬ו‪Reverse Address Resolution -‬‬
‫)‪ Protocol (RARP‬אולם יש כאלו שאינם רואים בפרוטוקולים אלה חלק מה‪ .Internet Layer -‬אנחנו נתייחס אליהם‬
‫כפרוטוקולים ברמת ‪ ,Internet‬מכיוון שהם יושבים מעל שכבת ה‪( Network Interface-‬אם לא הבנתם נקודה זו‪ ,‬הניסוי עצמו‬
‫יבהיר זאת כהלכה)‪.‬‬
‫מיתוג חבילות‬
‫השיטה שבה חבילות ממותגות בעולם ה‪ IP-‬נקראת ‪ .Packet Switching‬על מנת להסביר את עקרונות השיטה‪ ,‬כדאי להתעכב‬
‫בכמה מילים על השיטה שקדמה לה (ועדיין נהוגה בעולם הטלפוניה) הלו היא שיטת ה‪ .Circuit Switch‬בשיטת ה ‪Circuit‬‬
‫‪ ,Switch‬כאשר תחנת קצה רוצה לדבר עם תחנת קצה אחרת‪ ,‬היא מקימה ‪ ,circuit‬כלומר קשר בין ‪ 2‬הקצוות‪ .‬הקשר הזה‬
‫הוא מעין קו פרטי שמיועד רק עבור השיחה הזו‪ .‬לקו הזה יש רוחב פס אחיד לכל האורך שמובטח לאותה שיחה ולא משותף‬
‫עם אף שיחה אחרת‪.‬‬
‫לעומת זאת בשיטת ‪ ,Packet Switching‬הקוים עליהם עובר המידע הם משותפים לעוד הרבה קישורי מידע אחרים‪ ,‬ורוחב‬
‫הפס נחלק ביניהם ‪ .‬יתרה מכך‪ ,‬אין למעשה קו אחד בו מתנהלת השיחה‪ .‬כל נתב‪ ,‬כאשר הוא מקבל חבילה‪ ,‬מתבונן על‬
‫כתובת היעד ומחליט לפי כתובת זו מה תהיה התחנה הבאה אליה תנותב החבילה‪ ,‬כך עד שהחבילה מגיעה ליעדה‪.‬‬
‫לדוגמא‪ ,‬נניח שתחנה ‪ A1‬שולחת חבילה לתחנה ‪ .H1‬על החבילה מסומנת ‪ H1‬ככתובת היעד‪ .‬החבילה מגיעה לנתב ‪ .1‬נתב‬
‫‪ 1‬מסתכל על כתובת היעד ומחליט בהתאם לכתובת זו להעביר את החבילה לנתב ‪( 0‬דרך רשת ‪ .)E‬באותו האופן נתב ‪0‬‬
‫מעביר את החבילה לנתב ‪ 7‬וכך הלאה‪ .‬אין הקמת קשר‪ ,‬ואין הבטחה על רוחב הפס‪ .‬לנתב ‪ 1‬אין שליטה על ההחלטה של‬
‫נתב ‪ 0‬להעביר את החבילה דווקא לנתב ‪ 7‬ולא לנתב ‪( 1‬אם כי לרוב הוא יודע מה תהיה הבחירה של נתב ‪ .)0‬באותה מידה‪,‬‬
‫אין ודאות כי כל החבילות יעברו תמיד באותו נתיב‪.‬‬
‫‪H1‬‬
‫‪H1‬‬
‫‪E‬‬
‫‪G‬‬
‫‪A‬‬
‫‪1‬‬
‫‪H1‬‬
‫‪1‬‬
‫‪4‬‬
‫‪H1‬‬
‫‪A1‬‬
‫‪B‬‬
‫‪3‬‬
‫‪5‬‬
‫‪H‬‬
‫‪2‬‬
‫‪H1‬‬
‫‪H1‬‬
‫‪H1‬‬
‫‪F‬‬
‫‪12‬‬
‫‪C‬‬
‫טבלאות ניתוב‬
‫כאשר חבילה המיועדת לרשת אחרת מגיעה לנתב‪ ,‬הנתב צריך לקבל החלטה מיהו היעד הבא של החבילה‪ .‬על מנת לקבל‬
‫החלטה כזו הוא משתמש בטבלת ניתוב‪ .‬טבלת הניתוב נראית כך‪:‬‬
‫‪Next Hop‬‬
‫‪Net mask‬‬
‫‪Destination‬‬
‫‪Iface‬‬
‫‪10 eth0‬‬
‫‪132.68.60.1‬‬
‫‪255.255.255.0‬‬
‫‪132.68.60.0‬‬
‫‪10 eth1‬‬
‫‪132.68.55.1‬‬
‫‪255.255.255.0‬‬
‫‪132.68.55.0‬‬
‫‪10 eth2‬‬
‫‪132.68.58.1‬‬
‫‪255.255.255.0‬‬
‫‪132.68.58.0‬‬
‫‪132.68.7.250‬‬
‫‪0.0.0.0‬‬
‫‪default‬‬
‫‪Fa0‬‬
‫‪Metric‬‬
‫‪1‬‬
‫משמעות הטבלא‪:‬‬
‫‪ Destination‬ו‪ Net Mask-‬מגדירים רשת‪ .‬כאשר תגיע חבילה‪ ,‬וכתובת היעד של החבילה שייכת לרשת הרשומה ב‪-‬‬
‫‪ Next Hop ,Destination‬יהיה התחנה הבאה של אותה חבילה‪ Metric .‬מגדיר את המשקל של הלינק ל‪.Next Hop-‬‬
‫‪ Interface‬מגדיר את היציאה הפיזית שבו ישתמש הנתב כדי לשדר את החבילה ל‪.Next Hop-‬‬
‫‪TRANSPORT LAYER‬‬
‫שכבה זו מקבילה לשכבות ה‪ Transport-‬וה‪ Session-‬במודל ‪ .OSI‬בשכבה זו מוגדר קשר בין ‪ 2‬תחנות קצה‪ ,‬המשמש‬
‫אפליקציה מסוימת‪ .‬הפרוטוקולים הממומשים בשכבה הזו הם )‪ Transmission Control Protocol (TCP‬ו‪User Datagram -‬‬
‫)‪ 2 .Protocol (UDP‬הפרוטוקולים יתוארו בהרחבה בהמשך‪.‬‬
‫פרוטוקול ‪ ICMP‬הוא פרוטוקול ניהול ובקרה שיושב גם הוא מעל פרוטוקול ‪ ,IP‬אבל תפיסתית הוא לא נחשב חלק משכבת ה‪-‬‬
‫‪ Transport‬כי הוא לא מגדיר קשר קצה אל קצה‪.‬‬
‫‪PORT‬‬
‫כאשר מחשב מקבל חבילת מידע הוא צריך לדעת לאיזה אפליקציה להעביר את המידע‪ .‬לכן ה‪ header-‬מכיל שדה זיהוי נוסף‬
‫שנקרא ‪ .port‬ניתן אם כך להתייחס לפורט כאל כתובת פנימית בתוך המחשב‪ ,‬כמו מספר דירה בבנין‪ .‬כתובת ה‪ IP-‬ומספר‬
‫הפורט מהווים ביחד ‪.Socket‬‬
‫החמישייה ‪ protocol, source IP, source port, destination IP, destination port‬מגדירים את הקשר קצה לקצה של‬
‫אפליקציה (לדוגמא קשר בין דפדפן לשרת אינטרנט)‪ .‬המונח הטכני לחמישיה זו הוא ‪.Five Tuple‬‬
‫מספרי פורטים נעים בים ‪ 3‬ל‪ .41101-‬גם כאן יש חלוקה לקטגוריות‪:‬‬
‫‪13‬‬
‫פורטים ‪ 3-1320‬נקראים ‪ Well Known Ports‬והם משמשים שרתים‪ .‬כל פורט מוגדר עבור פרוטוקול מסויים (למשל ‪ 33‬עבור‬
‫‪ )HTTP‬לפי הקצאה שמחלק ארגון ‪ .IANA‬אפליקציה שתופסת פורט כזה זקוקה להרשאות מיוחדות‪ root ,‬או ‪Administrator‬‬
‫בהתאם למערכת ההפעלה‪.‬‬
‫פורטים ‪ 1327-72111‬נקראים ‪ .Registered Ports‬גם פורטים אלו שמורים לפרוטוקולים מסויימים ומוקצים ע"י ‪ ,IANA‬אולם‬
‫לא צריך הרשאות מיוחדות במחשב כדי לתפוס אותם‪ ,‬ועקרונית הם לא משמשים שרתים‪.‬‬
‫ניתן לראות את הרשימה המלאה של ההקצאות עבור ‪ 2‬הקטגוריות כאן‪http://www.iana.org/assignments/port-:‬‬
‫‪numbers‬‬
‫פורטים ‪ 72112‬עד ‪ 41101‬נקראים פורטים דינאמים‪ ,‬וכל אחד יכול להשתמש בהם כרצונו‪.‬‬
‫‪APPLICATION LAYER‬‬
‫שכבה זו מכילה את הפרוטוקולים של כל אפליקציות האינטרנט‪ .‬דוגמאות נבחרות‪:‬‬
‫‬‫‬‫‬‫‬‫‬‫‬‫‬‫‬‫‬‫‬‫‬‫‬‫‪-‬‬
‫‪ - BGP‬פרוטוקול ניתוב המיועד לרשתות ‪ .WAN‬בשימוש בעיקר ע"י ספקי אינטרנט‬
‫‪ – DNS‬פרוטוקול למציאת כתובת ‪ IP‬לפי שמות של שרתים (‪)Domain Names‬‬
‫‪– Finger‬‬
‫‪ – FTP‬פרוטוקול להעברת קבצים בין מחשבים‬
‫‪ – HTTP‬פרוטוקול להעברת ‪ Hypertext‬מעל רשת האינטרנט‪.‬‬
‫‪ – IMAP‬פרוטוקול לסינכרון וקבלת דואר אלקטרוני‬
‫‪ – OSPF‬פרוטוקול ניתוב לרשתות אירגוניות‪ .‬עובד בשיטת ‪ link state‬ומשתמש לצורך כל באלגוריתם של‬
‫דיאקסטרה‪.‬‬
‫‪ -POP‬פרוטוקול למשיכת דואר אלקטרוני‬
‫‪ – RADIUS‬פרוטוקול המאפשר גישה מרחוק לחשבונות עם סיסמאות‬
‫‪ – RIP‬פרוטוקול ניתוב פשוט יחסית לרשתות ארגוניות‬
‫‪ – SSH‬פרוטוקול מאובטח לפתיחת טרמינל מרוחק במערכות יוניקס ולינוקס‬
‫‪ – SMTP‬פרוטוקול שליחת דואר אלקטרוני‬
‫‪ – SNMP‬פרוטוקול לניהול ציוד רשת ואיסוף סטטיסטיקות עבור ציוד זה‪.‬‬
‫לסיכום מודל השכבות‬
‫הציור הבא ממחיש ומסכם את בתפקיד של כל שיכבה‪ 2 .‬השכבות העליונות מתמודדות רק עם הקמת הקשר והעברת המידע‬
‫מקצה אל קצה‪ .‬שכבת האינטרנט מטרתה לייצר חבילות ולנתב אותן לכיוון היעד‪ ,‬והשכבה התחתונה מקשרת בין שכבת‬
‫האינטרנט לרשת הפיזית‪.‬‬
‫‪14‬‬
Application
Transport
Internet
Network Interface
Application
‫תעבורת האפליקציה‬
Transport
‫ניהול קשר בין האפליקציות‬
‫ניתוב‬
‫חבילות‬
Internet
N/I
N/I
15
‫ניתוב‬
‫חבילות‬
Internet
Network Interface
‫פרוטוקולים‬
‫)‪INTERNET PROTOCOL (IP‬‬
‫כאמור זהו הפרוטוקול המרכזי ברמת האינטרנט‪ ,‬שמטרתו לנתב חבילות מהמוצא ליעד‪ .‬הפרוטוקול מתועד ב‪.RFC 791 -‬‬
‫פורמט חבילת ‪IP‬‬
‫‬‫‬‫‬‫‬‫‬‫‬‫‬‫‬‫‬‫‬‫‬‫‬‫‬‫‪-‬‬
‫‪ :Version‬גרסת הפרוטוקול‪ .‬ב‪ IPv4-‬הערך הוא ‪.7‬‬
‫‪ :IP Header Length‬גודל ה‪ header‬של חבילת ה‪ IP-‬ביחידות של בתים‪ .‬בדרך כלל הגודל הוא ‪ 23‬בתים וזה הערך‬
‫הנפוץ בשדה הזה‪.‬‬
‫‪ :Type-of-Service‬מגדיר לשכבה מעל ה‪ IP-‬את רמת החשיבות והדחיפות שיש לתת לחבילה‪.‬‬
‫‪ :Total Length‬אורך החבילה הכולל‪ data ,‬ו‪.header-‬‬
‫‪ : Identification‬מספר סידורי של החבילה‪ .‬המספר הזה משמש את הצד המקבל לאחד חבילות שעברות‬
‫‪ .Fragmentation‬כל החלקים של חבילה מסויימת מקבלים את אותו מזהה‪.‬‬
‫‪ 0 :Flags‬ביטים המספקים מידע משלים לגבי ‪.Fragmentation‬‬
‫‪ :Fragment Offset‬המרחק בבתים של ה‪ data-‬יחסית לתחילת ה‪ . data-‬למשל אם חבילה נשברה ל‪ 0-‬חלקים של‬
‫‪ 1333‬בתים‪ ,‬ה‪ offset-‬בחלק האחרון יהיה ‪.2333‬‬
‫‪ :Time to Live‬בכל פעם שחבילה עוברת אצל נתב‪ ,‬המספר הזה יורד ב‪ .1-‬כך הרשת נמנעת ממצב בו חבילות נעות‬
‫לנצח במעגלים‪.‬‬
‫‪ -Protocol‬מציין מה הפרוטוקול בשכבה מעל ה‪ .IP-‬הערך הזה הוא מספרי‪ ,‬וכל מספר מייצג פרוטוקול אחר‪ .‬הקצאת‬
‫המספרים נעשית ע"י ‪.IANA‬‬
‫‪ :Header Checksum‬על מנת לוודא אמינות הנתונים‬
‫‪ :Source Address‬כתובת ה‪ IP-‬של שולח החבילה‪.‬‬
‫‪ :Destination Address‬כתובת ה‪ IP-‬של היעד הסופי של החבילה‪.‬‬
‫‪ :Options‬הרחבות אופציונאליות‬
‫‪ : Data‬המידע שעובר על החבילה‪ ,‬כולל שכבות פרוטוקול עליונות והמידע האפליקטיבי עצמו‪.‬‬
‫‪16‬‬
‫כתובות ‪( IP‬מתוך ויקיפדיה‪ ,‬עם קצת השלמות)‬
‫כתובת ‪ IP‬היא מספר המשמש לזיהוי ציוד רשת ותחנות קצה ברשתות ‪ .TCP/IP‬קיימות ‪ 2‬גרסאות של כתובות‪ ,‬אולם אנחנו‬
‫נתמקד בגרסא הישנה והנפוצה של ‪ .IPv4‬כתובת זו מורכבת מ‪ 02-‬ביטים‪ .‬לשם נוחות‪ ,‬מקובל לייצג ערך זה כארבעה‬
‫מספרים עשרוניים‪ ,‬כל אחד בין ‪ 3‬ל‪ .211-‬מספרים אלה נקראים לעתים אוקטטים‪ ,‬כיוון שגודל כל אחד מהם הוא ‪ 3‬ביט‪.‬‬
‫לדוגמה ‪ 122.143.3.1 -‬הוא הייצוג הנפוץ של הכתובת הבינארית ‪-‬‬
‫‪33333331 33333333 13131333 11333333‬‬
‫תאורטית‪ ,‬שיטה זו מאפשרת עד ‪ 2‬בחזקת ‪( 02‬מעל ‪ 7‬מיליארד) כתובות שונות‪ ,‬אולם‪ ,‬מכיוון שטווחים גדולים של כתובות‬
‫שמורים למטרות מיוחדות‪ ,‬מספר הכתובות השמישות קטן יותר‪ .‬למרות שהמספר נכבד‪ ,‬כמות זו ככל הנראה לא תספיק‬
‫בעתיד‪.‬‬
‫כתובת ה‪ IP-‬היא היררכית‪ ,‬ומורכבת מ‪ 2-‬חלקים‪ :‬חלק הרשת וחלק התחנה‪ .‬חלק הרשת מגדיר לאיזו רשת הכתובת שייכת‪,‬‬
‫על מנת שנתבים יוכלו להעביר חבילות עבור התחנה לרשת המתאימה (קצת דומה לאיזור חיוג בטלפון)‪ .‬חלק התחנה מזהה‬
‫את התחנה בתוך הרשת‪.‬‬
‫כדי שאפשר יהיה להבחין בין חלק הרשת וחלק התחנה בכתובת ה‪ IP-‬נהוג להצמיד לכל כתובת "מסכה" (‪,)Subnet Mask‬‬
‫שמאפשרת‪ ,‬באמצעות פעולה לוגית פשוטה‪ ,‬למצוא את כתובת הרשת של כתובת ‪ IP‬מסוימת‪ .‬המסכה‪ ,‬כמו כתובת ה‪IP-‬‬
‫מורכבת מארבע קבוצות של שמונה סיביות‪ .‬בייצוג בינארי‪ ,‬עבור כל סיבית בכתובת ה‪ IP-‬שמייצגת את הרשת יופיע ‪ ,1‬ועבור‬
‫כל סיבית בכתובת ה‪ IP-‬שמייצגת את המחשב המסוים יופיע ‪.3‬‬
‫כתובת מיוחדת נוספת ברשת ה‪ IP-‬היא כתובת ה‪ .Broadcast-‬כאשר חבילה נשלחת לכתובת זו‪ ,‬החבילה מיועדת להיקרא ע"י‬
‫כל תחנות ה‪ IP-‬הנמצאות באותה רשת‪ .‬כתובת ה‪ broadcast -‬עבור רשת מסויימת היא הכתובת הגבוהה ביותר עבור אותה‬
‫רשת‪ ,‬כלומר זו שבייצוג בינארי‪ ,‬חלק התחנה בכתובת הוא כולו ‪.1‬‬
‫למשל ‪ -‬בכתובת ‪ 122.143.3.14‬החלק ‪ 122.143.3‬מייצג את הרשת והמספר ‪ 14‬מייצג את המחשב המסוים‪ .‬מסכת הרשת‬
‫של כתובת זו תהיה ‪ ,211.211.211.3‬או בייצוג בינארי – ‪ .11111111 11111111 1111111 00000000‬שימו לב‬
‫שהמסכה תמיד מורכבת מסדרה של "‪ "1‬שאחריה באה סדרה של "‪ ."3‬לכן נהוג גם להגדיר רשת ע"י כתובת הרשת ומספר‬
‫הביטים שהם ‪ .1‬במקרה הזה הייצוג הוא ‪122.143.3.3/27‬‬
‫כדי למצוא את כתובת הרשת מתוך כתובת ‪ IP‬של מחשב ברשת‪ ,‬יש לבצע פעולת ‪ AND‬בינארית בין כתובת ה‪ IP-‬למסכת‬
‫הרשת‪ .‬בדוגמה הקודמת‪ ,‬התוצאה תיראה כך –‬
‫ייצוג עשרוני‬
‫ייצוג בינארי‬
‫כתובת ‪IP‬‬
‫‪192.168.0.17‬‬
‫‪11000000 10101000 00000000 00010001‬‬
‫‪Net Mask‬‬
‫‪255.255.255.0‬‬
‫‪11111111 11111111 1111111 00000000‬‬
‫כתובת הרשת‬
‫‪192.168.0.0‬‬
‫‪11000000 10101000 00000000 00000000‬‬
‫כתובת ‪Broadcast‬‬
‫‪192.168.0.255‬‬
‫‪11000000 10101000 00000000 11111111‬‬
‫‪17‬‬
‫חלוקה למחלקות )‪(CLASSES‬‬
‫בעבר היה נהוג לחלק את כתובות ה ‪-IP‬לחמש מחלקות‪ Class A ,‬עד ‪ .Class E‬זיהוי כל מחלקה נעשה ע"י הביטים הראשונים‬
‫של הכתובת‪ ,‬לפי הטבלא הבאה‪:‬‬
‫‪0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 3 3 3 3 3 3 3 3‬‬
‫‪0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7 0 1 2 3 4 5 6 7‬‬
‫‪--+-------------+-----------------------------------------------‬‬‫|‪|0‬‬
‫| ‪NET_ID‬‬
‫‪HOST_ID‬‬
‫|‬
‫|‪|-+-+-----------+---------------+-------------------------------‬‬
‫|‪|1|0‬‬
‫‪NET_ID‬‬
‫|‬
‫‪HOST_ID‬‬
‫|‬
‫|‪|-+-+-+-------------------------+---------------+---------------‬‬
‫|‪|1|1|0‬‬
‫‪NET_ID‬‬
‫|‬
‫‪HOST_ID‬‬
‫|‬
‫|‪|-+-+-+-+---------------------------------------+---------------‬‬
‫|‪|1|1|1|0‬‬
‫‪MULTICAST_ID‬‬
‫|‬
‫|‪|-+-+-+-+-------------------------------------------------------‬‬
‫|‪|1|1|1|1‬‬
‫‪EXPERIMENTAL_ID‬‬
‫|‬
‫‪--+-+-+-+--------------------------------------------------------‬‬
‫‪Class A‬‬
‫‪Class B‬‬
‫‪Class C‬‬
‫‪Class D‬‬
‫‪Class E‬‬
‫עד שנת ‪ 1220‬כתובת הרשת הייתה מוגדרת לפי ה‪ .class-‬למשל הכתובת ‪ 102.43.43.117‬הייתה שייכת לרשת‬
‫‪ 102.43.3.3‬רק משום שהיא מ‪ .class B-‬בשנת ‪ 1220‬הוצגה שיטת ה‪ CIDR-‬שבו יש שימוש ב‪ net mask -‬כפי שהוסבר‬
‫בסעיף הקודם‪ .‬כיום אין יותר שימוש אמיתי בחלוקה הזו של ‪ ,classes‬מכיוון שה‪ CIDR-‬החליף אותה לחלוטין‪.‬‬
‫כתובות ‪ IP‬מיוחדות‬
‫ישנם מספר טווחים שנקבעו לשימושים מיוחדים‪:‬‬
‫טווח כתובות‬
‫‪0.0.0.0 - 0.255.255.255‬‬
‫‪10.0.0.0 - 10.255.255.255‬‬
‫‪127.0.0.0 - 127.255.255.255‬‬
‫שימוש‬
‫כמות כתובות כוללת‬
‫לא ניתן להשתמש‬
‫‪16,777,216‬‬
‫רשתות פרטיות (כתובות‬
‫לא מנותבות)‬
‫‪16,777,216‬‬
‫‪Loopback‬‬
‫‪16,777,216‬‬
‫פרוטוקול ‪( APIPA‬כאשר לא נמצא‬
‫‪169.254.0.0 - 169.254.255.255‬‬
‫‪172.16.0.0 - 172.31.255.255‬‬
‫‪192.0.2.0 - 192.0.2.255‬‬
‫שרת ‪)DHCP‬‬
‫‪65,536‬‬
‫רשתות פרטיות (כתובות‬
‫לא מנותבות)‬
‫‪1,048,576‬‬
‫שימוש ניסיוני‬
‫‪256‬‬
‫‪18‬‬
‫תעבורה בין‬
‫כתובות ‪ IPv6‬וכתובות ‪IPv4‬‬
‫‪256‬‬
‫רשתות פרטיות (כתובות‬
‫לא מנותבות)‬
‫‪65,536‬‬
‫‪198.18.0.0 - 198.19.255.255‬‬
‫מבחני ביצועים למכשירי רשת‬
‫‪131,072‬‬
‫‪224.0.0.0 - 239.255.255.255‬‬
‫‪Multicast‬‬
‫‪268,435,456‬‬
‫‪240.0.0.0 - 255.255.255.255‬‬
‫שמור‬
‫‪268,435,456‬‬
‫‪192.88.99.0 - 192.88.99.255‬‬
‫‪192.168.0.0 - 192.168.255.255‬‬
‫‪-‬‬
‫)‪INTERNET CONTROL MESSAGE PROTOCOL (ICMP‬‬
‫פרוטוקול שמגדיר הודעות לגבי שגיאות או כל מידע אחר הקשור לחבילות ‪ .IP‬הפרוטוקול מוגדר ב‪ .RFC 792-‬הפרוטוקול יושב‬
‫מעל ה‪ IP-‬ומשודר כהודעת ‪ .IP‬זאת על מנת שהודעות ‪ ICMP‬יוכלו להגיע ליעדן‪ ,‬גם אם היעד לא נמצא באותה רשת של שולח‬
‫ההודעה‪.‬‬
‫סוגי הודעות ‪ICMP‬‬
‫הרשימה המופיעה פה אינה מלאה‪ ,‬אבל מכילה את רוב ההודעות החשובות‪.‬‬
‫‪-‬‬
‫‬‫‬‫‪-‬‬
‫‪ :Destination Unreachable‬כאשר נתב מחזיר הודעה כזו לשולח חבילה‪ ,‬סימן שהנתב לא יכול להעביר את‬
‫החבילה הזו ליעדה‪ ,‬ולכן הוא זורק אותה‪ .‬יכולות להיות לכך ‪ 2‬סיבות‪ .‬הראשונה שכתובת היעד לא קיימת‪ ,‬והשנייה‬
‫הפחות נפוצה היא שהנתב לא יודע מה הנתיב לכתובת היעד‪.‬‬
‫‪ :Echo Request/Reply‬ההודעה שמממשת את בקשת ה‪ Echo request .ping-‬מייצג את בקשת ה‪ ping-‬ו‪Echo -‬‬
‫‪ reply‬מייצג את התשובה לבקשה‬
‫‪ :Time Exceeded‬חבילה עברה יותר מדי נתבים וה‪ TTL-‬ירד לאפס‪ .‬הנתב שאצלו ה‪ TTL-‬ירד לאפס זורק את‬
‫החבילה המקורית ושולח למקור החבילה הודעת ‪ ICMP‬מסוג זה‪.‬‬
‫‪ :Redirect‬כאשר נתב מקבל הודעה עבור יעד מסוים‪ ,‬ומגיע למסקנה שברשת יש נתב דרכו ההודעה תעבור בנתיב‬
‫יותר קצר‪ ,‬הוא שולח למקור ההודעה ‪ ICMP Redirect‬עם כתובת הנתב שלהבא צריך להיות בשימוש עבור אותו‬
‫יעד‪ .‬הנתב לא זורק את חבילה המקורית במקרה כזה אלא מנתב אותה הלאה לכיוון היעד‪.‬‬
‫)‪ADDRESS RESOLUTION PROTOCOL (ARP‬‬
‫כאשר מחשב צריך לתקשר עם מחשב אחר באותה הרשת המקומית ‪ ,‬הוא זקוק לכתובת הפיזית של המחשב השני (כתובת‬
‫‪ .)MAC‬אך מכיוון שמה שעומד לרשות המחשב זה כתובת ה‪ IP-‬של היעד‪ ,‬המידע לגבי כתובת ה‪ MAC-‬חסר‪ .‬תפקידו הבלעדי‬
‫של פרוטוקול ‪ ARP‬הוא לאתר את כתובת ה‪ MAC-‬עבור כתובת ‪ IP‬מסוימת‪.‬‬
‫בקשת ‪ ARP‬נשלחת כ‪ broadcast -‬לכל התחנות ברשת המקומית‪ .‬הבקשה מכילה את הכתובת הפיזית של שולח הבקשה‪,‬‬
‫כתובת ה‪ IP-‬של שולח הבקשה וכתובת ה‪ IP-‬שלגביה המבקש זקוק לכתובת הפיזית‪ .‬המחשב שאליו שייכת כתובת ‪ IP‬זו‪,‬‬
‫שולח תשובה שמכילה את הכתובת הפיזית שלו‪.‬‬
‫‪19‬‬
‫‪ARP REQ.‬‬
‫‪ARP RESP.‬‬
‫טבלת ‪ARP‬‬
‫כל תחנת קצה ברשת ‪ TCP/IP‬מחזיקה טבלת ‪ .ARP‬בטבלא הזו יש מיפוי בין כל הכתובות הפיזיות לכתובות ה‪ IP-‬ברשת‬
‫המקומית‪ .‬כאשר תחנת קצה מבררת את הכתובת הפיזית המתאימה לכתובת ‪ IP‬מסויימת‪ ,‬היא מכניסה את התשובה לטבלת‬
‫ה‪ ARP-‬על מנת שבפעם הבאה שתהיה חבילה המיועדת לאותו מקום‪ ,‬לא תישלח בקשת ‪ ARP‬נוספת‪.‬‬
‫משך הזמן בו נשמרת שורה בטבלת ה‪ ARP-‬משתנה ממערכת למערכת ונע בין דקות לשעות‪.‬‬
‫הנה דוגמא לטבלת ‪:ARP‬‬
‫‪ARP SPOOFING‬‬
‫‪20‬‬
‫מכיוון שבקשת ה‪ ARP-‬נשלחת בצורה של ‪ ,broadcast‬מחשב שחדר לרשת על מנת לתקוף יכול להתחזות בתור המחשב‬
‫שאליו מתכונים להגיע ע"י שליחה ‪ ARP response‬מזוייף‪ ,‬שכולל את כתובת ה‪ MAC-‬של המחשב התוקף‪.‬‬
‫לדוגמא‪ ,‬תחנת עבודה שולחת תעבורת אימייל‪ ,‬ושרת האימייל נמצא מחוץ לרשת המקומית‪ .‬תחנת העבודה שולחת בקשת‬
‫‪ ARP‬על מנת למצוא את הנתב של הרשת המקומית‪ .‬המחשב התוקף עונה לבקשת ה‪ ARP-‬וכך התעבורה מאותה תחנת‬
‫עבודה עוברת דרכו‪ .‬המחשב התוקף שומר את התעבורה אצלו ומעביר אותה הלאה לנתב האמיתי‪ .‬בצורה כזו הכל מתפקד‬
‫כרגיל אבל מצותתים למחשבים של אנשים ללא ידיעתם‪.‬‬
‫‪Host‬‬
‫‪Attacker‬‬
‫‪Router‬‬
‫‪Internet‬‬
‫‪ARP REQ.‬‬
‫‪ARP RESP.‬‬
‫‪st‬‬
‫‪select 1‬‬
‫‪resp‬‬
‫‪SMTP Msg.‬‬
‫& ‪sniff‬‬
‫‪forward‬‬
‫‪SMTP Msg.‬‬
‫‪SMTP Msg.‬‬
‫)‪USER DATAGRAM PROTOCOL (UDP‬‬
‫‪ UDP‬הוא הפרוטוקול הפשוט יותר בשכבת ה‪ .Transport‬הוא פורסם ב‪ RFC 768-‬בשנת ‪ 1233‬ומאז פרסומו לראשונה לא עבר‬
‫עדכונים כלל‪ .‬תפקידו העיקרי הוא לספק מספר ‪ Port‬עבור האפליקציה לצורך התקשרות עם אפליקציה בתחנת קצה אחרת‪.‬‬
‫‪ UDP‬אינו מספק אמינות‪ ,‬כלומר אין הבטחה שחבילות תגענה ליעדן ובסדר הנכון‪ .‬פרוטוקול זה מתאים למקרים בהם הקמת‬
‫קשר והבטחת אמינות אינם תורמים‪ ,‬והסיבוכיות הכרוכה בהקמת קשר אמין רק מפריעה‪ .‬דוגמא טובה לכך היא העברת קול‬
‫מעל האינטרנט (‪ VoIP‬בפרוטוקול ‪ ,) RTP‬מפני שבמקרה זה אם חבילה הלכה לאיבוד אין טעם לשדר אותה שוב‪ ,‬וממילא אם‬
‫מעט חבילות כאלו הולכות לאיבוד‪ ,‬השומע כלל לא יבחין בכך‪.‬‬
‫פורמט ה ‪HEADER -‬‬
‫‪21‬‬
‫ה‪ Header-‬מכיל פורט מקור‪ ,‬פורט יעד‪ ,‬אורך החבילה‪ ,‬לא כולל השכבות שמתחת ל‪ UDP-‬וה‪ Checksum-‬על כל החבילה‪.‬‬
‫‪22‬‬
‫חלק ב' – פרוטוקול ‪TCP‬‬
‫)‪TRANSMISSION CONTROL PROTOCOL (TCP‬‬
‫‪ TCP‬הוא אחד מפרוטוקולי המפתח בחבילת הפרוטוקולים של ‪ ,TCP/IP‬והחשוב ביותר ברמת ה‪ ,Transport‬ולראיה כל חבילת‬
‫פרוטוקולי האינטרנט קרויה על שמו‪ .‬הוא הוגדר לראשונה ב‪ RFC 793-‬בשנת ‪ ,1231‬ומאז עבר כמה וכמה עדכונים‪.‬‬
‫הפרוטוקול תומך בהקמת קשר קצה אל קצה בין שתי אפליקציות במחשבים שונים‪ .‬הקשר מבטיח אמינות‪ ,‬כלומר כל‬
‫ההודעות תגענה ליעדן ובסדר הנכון‪ .‬המימוש המלא של הפרוטוקול הוא מסובך בסדר גודל יותר מכל הפרוטוקולים האחרים‬
‫איתם עובדים בניסוי זה‪.‬‬
‫מנגנונים מרכזיים ב ‪TCP -‬‬
‫הקמת קשר‬
‫לפני שמידע מתחיל לעבור מעל פרוטוקול ‪ ,TCP‬מוקם קשר בין ‪ 2‬תחנות הקצה‪ .‬יוזם הקשר תופס פורט מקבוצת המספרים‬
‫הגבוהים‪ ,‬ושולח בקשה ליצירת קשר לקצה השני‪ .‬הקצה השני הוא בדרך כלל שרת שמאזין על אחד מהפורטים הנמוכים‬
‫(‪ ,)Well known ports‬כך ששולח הבקשה יודע לאיזו כתובת ‪ IP‬ולאיזה פורט למען את הבקשה‪.‬‬
‫הקמת הקשר כרוכה בהחלפת ‪ 0‬הודעות במה שנקרא ‪ .Triple hand shake‬זה נראה כך‪:‬‬
‫‪A‬‬
‫‪B‬‬
‫‪Syn‬‬
‫‪Syn+Ack‬‬
‫‪Ack‬‬
‫בתום החלפת ‪ 0‬הודעות אלו אפשר להתחיל לשלוח מידע ב‪ 2-‬הכיוונים‪ .‬כמעט תמיד זה שפתח את הקשר ישלח מידע ראשון‪.‬‬
‫ראוי להזכיר שבעולם ה‪ TCP/IP-‬היחידים שמודעים לקשר שנוצר הן ‪ 2‬תחנות הקצה‪ .‬כל הצמתים האחרים בתווך מתייחסים‬
‫להודעות אלו כהודעות ‪ , IP‬כך שבהחלט יכול לקרות מצב שבו הודעות שונות ששייכות לאותו קשר ינותבו דרך נתיבים שונים‪.‬‬
‫סיום הקשר‬
‫יש ‪ 2‬דרכים מרכזיות לסיים את קשר ה‪ . TCP-‬הדרך הראשונה היא המסודרת‪ ,‬ומופעלת כאשר הקשר סיים את תפקידו‬
‫(למשל דף ה‪ HTML-‬גמר לרדת)‪ .‬גם כאן מופעלת הדדיות מסוימת‪ ,‬כאשר כל צד מודיע על כך שהוא מסיים את הקשר‪ ,‬והצד‬
‫השני מאשר את ההודעה‪ .‬סה"כ נשלחות ‪ 7‬הודעות באופן הבא‪:‬‬
‫‪23‬‬
‫‪A‬‬
‫‪B‬‬
‫‪Fin‬‬
‫‪Ack‬‬
‫‪Fin‬‬
‫‪Ack‬‬
‫הצורה הבאה שבה מסתיים קשר היא יותר אגרסיבית‪ .‬כאשר אחד הצדדים מחליט שמבחינתו קשר ה‪ TCP-‬כבר לא קיים‪ ,‬הוא‬
‫שולח ‪ TCP Reset‬לצד השני‪ .‬מכאן ואילך‪ ,‬כל חבילה שמגיעה מהצד השני לאותו הפורט נענית גם היא ב‪( TCP Reset -‬עד‬
‫אשר קשר חדש מוקם)‪.‬‬
‫ישנן הרבה סיבות אפשריות למצב בו צד אחד חושב שהקשר קיים וצד שני כבר לא‪ .‬למשל‪ ,‬כאשר יש אובדן של חבילות שאי‬
‫אפשר לגשר עליו‪ ,‬הצד שמבחין בזה מסיים את הקשר‪ .‬דוגמא נוספת היא של שרת שעבר ‪ ,Restart‬אבל יש ‪ clients‬שלא‬
‫מודעים לכך ושולחים בקשה על גבי קשר שכבר לא קיים‪.‬‬
‫אמינות שידור‬
‫כפי שכבר הוזכר‪ ,‬פרוטוקול ‪ TCP‬מבטיח את אמינות הקשר בין ‪ 2‬הקצוות‪ 2 .‬השדות החשובים ביותר ב‪ Header -‬של ‪TCP‬‬
‫המשמשים למטרה זו הם ה‪ Sequence Number -‬וה‪.Acknowledgement Number-‬‬
‫על מנת להבין טוב יותר כיצד פועל ‪ TCP‬נשתמש בדוגמא של אימייל‪ .‬נניח שאפליקצית אימייל כלשהי שולחת ‪ 0‬הודעות‬
‫אימייל ברצף‪ .‬המיילים הראשון והשלישי של ‪ 133‬בתים והמייל השני של ‪ 13333‬בתים‪ .‬כיצד זה מתורגם ל‪?TCP-‬‬
‫בפרוטוקול ‪ TCP‬מידע לא עובר בצורה מבנית אלא עובר בזרימה של בתים‪ .‬המשמעות של זה היא שאם אפליקציה שולחת‬
‫הודעה מסויימת‪ ,‬ההודעה יכולה למצוא את עצמה באותה חבילת ‪ IP‬עם הודעה אחרת או מפוצלת לכמה חבילות ‪ IP‬של אותה‬
‫האפליקציה בגלל ‪ port‬משותף‪ .‬כך לפי הדוגמא שלנו‪ ,‬ולשם הפשטות נניח שכל חבילת ‪ IP‬יכולה להכיל ‪ 1333‬בתים‪ ,‬חבילת‬
‫ה‪ IP-‬הראשונה תכיל את האימייל הראשון ותחילת האימייל השני‪ ,‬אחר כך יישלחו כמה חבילות ‪ IP‬המכילות חלקים מהאימייל‬
‫השני ולבסוף החבילה האחרונה תכיל את הסוף של האימייל השני ואת האימייל השלישי‪ .‬הצד המקבל‪ ,‬במקרה הזה שרת‬
‫האימייל‪ ,‬מקבל זרימה של בתים משכבת ה‪ TCP-‬ומרכיב מבתים אלה חזרה את ‪ 0‬האימיילים‪ .‬הצורה שבה הוא עושה את זה‬
‫כבר נמצאת באחריות פרוטוקול האימייל‪.‬‬
‫ה‪ sequence number-‬מבטא היטב את הגישה הזו בכך שהוא מציין כמה בתים עברו מאז שהקשר הוקם‪ ,‬ללא התייחסות כלל‬
‫למספר ההודעות‪ .‬המספר מייצג את המספר הסידורי של הבית הראשון של החבילה‪ .‬אם נניח לצורך הדוגמא שה‪sequence -‬‬
‫‪ number‬מתחיל מאפס‪ ,‬אז החבילה הראשונה יוצאת עם ‪ ,sequence number=0‬החבילה השניה עם ‪sequence‬‬
‫‪ ,number=1000‬החבילה החמישית עם ‪.sequence number=4000‬‬
‫ה‪ Acknowledgment number-‬מציין מה הבית האחרון שהתקבל מהקצה השני‪ ,‬בתנאי שכל הבתים שלפניו התקבלו גם הם‪.‬‬
‫במילים אחרות‪ ,‬הוא מציין את הבית הבא אותו המקבל מצפה לקבל מהשולח‪ .‬מבולבלים? הנה כמה דוגמאות‪:‬‬
‫‪24‬‬
‫הדוגמא הפשוטה‬
‫מחשב ‪ A‬שולח כמה חבילות עם מידע למחשב ‪ .B‬מחשב ‪ B‬מקבל את כולם בזמן ושולח ‪ ACK‬עבור כל אחד‪ .‬מכיוון שהמידע‬
‫זורם רק בכיוון אחד‪ ,‬מ‪ A-‬ל‪ B-‬ה‪ sequence-‬בכיוון השני נשאר תמיד ‪.1‬‬
‫‪A‬‬
‫‪B‬‬
‫‪25‬‬
‫אובדן חבילות ו ‪RETRANSMIT -‬‬
‫בדוגמא זו נתייחס למקרה אחד של אובדן חבילות‪ .‬במקרה זה‪ ,‬חבילה עם מידע הולכת לאיבוד‪ .‬המחשב השולח ‪ A‬מחכה זמן‬
‫מסויים (‪ )tuoemit‬ומשלא מגיעה הודעת ‪ ack‬עבור חבילה זו‪ ,‬הוא שולח את החבילה שוב‪.‬‬
‫‪A‬‬
‫‪B‬‬
‫‪X‬‬
‫‪Timeout‬‬
‫‪26‬‬
‫‪FAST RETRANSMIT‬‬
‫זהו שכלול של מנגנון השליחה מחדש שהוצג בסעיף הקודם‪ .‬בדוגמא הזו‪ ,‬חבילה אשר מהווה חלק מרצף חבילות (דבר הנפוץ‬
‫מאד ברשת) הולכת לאיבוד‪ .‬המחשב השולח ‪ A‬מקבל על כך אינדיקציה ממחשב ‪ B‬ע"י זה שמחשב ‪ B‬שולח כמה חבילות עם‬
‫אותו ערך ב‪ .)duplicate ack( ack-‬אחרי שלושה ‪ duplicate acks‬מחשב ‪ A‬מבין שההודעה הלכה לאיבוד ושולח אותה שוב‪.‬‬
‫מנגנון זה נקרא ‪ fast retransmit‬מכיוון שהמחשב השולח לא מחכה ל‪ timeout-‬על מנת לשלוח את החבילה שוב‪ ,‬מה שמייעל‬
‫מאד את מנגנון ה‪.TCP-‬‬
‫אחרי שמחשב שולח ‪ ,Fast Retransmit‬לא יישלחו הודעות ‪ retransmit‬עד אשר המחשב יקבל ‪ Ack‬עבור המידע שנשלח ב‪-‬‬
‫‪.Fast Retransmit‬‬
‫‪A‬‬
‫‪B‬‬
‫‪ack = 101‬‬
‫‪ack = 201‬‬
‫‪X‬‬
‫‪Timeout‬‬
‫‪ack = 201‬‬
‫‪ack = 201‬‬
‫‪ack = 201‬‬
‫‪ack = 201‬‬
‫‪27‬‬
‫שילוב של ‪ FAST RETRANSMIT‬ו ‪RETRANSMIT -‬‬
‫במקרה של גודש יתר הגורם לאובדן חבילות רב‪ ,‬שני המנגנונים יעבדו יחדיו‪ .‬כאשר יתחילו חבילות ללכת לאיבוד‪ ,‬החבילה‬
‫הראשונה שהלכה לאיבוד תשודר שוב יחסית בזמן קצר‪ ,‬אולם מהחבילה השניה ואילך יופעל מנגנון ה‪ .Timeout-‬זה ייראה‬
‫בערך כך‪:‬‬
‫‪A‬‬
‫‪B‬‬
‫‪ack = 101‬‬
‫‪ack = 201‬‬
‫‪ack = 201‬‬
‫‪ack = 201‬‬
‫‪ack = 201‬‬
‫‪ack = 201‬‬
‫‪Timeout‬‬
‫‪ack = 401‬‬
‫‪28‬‬
‫סגמנטציה‬
‫כאמור‪ ,‬אחד מתפקידי שכבת ה‪ TCP -‬הינו לחלק את זרימת המידע לחבילות ‪ IP‬בהתאם לגודל ה‪ .MTU-‬כל חתיכה כזו של‬
‫מידע נקראת סגמנט‪ .‬גודל הסגמנט נקבע בעת הקמת הקשר‪ .‬במסגרת ה‪ ,Triple Hand Shake-‬מועבר מידע בין שני הצדדים‬
‫אשר נקרא ‪ .)Maximum Segment Size(MSS‬ה‪ MSS -‬שכל צד מעביר נגזר בדרך כלל מה‪ MTU -‬פחות גודל ה‪ Headers-‬כפי‬
‫שהוא מוגדר בתחנת הקצה‪.‬‬
‫מכיוון שלפעמים יש הרבה מאד מידע אשר זורם במהירות‪ ,‬פעולת החלוקה הזו‪ ,‬אשר נקראת סגמנטציה‪ ,‬גוזלת משאבי ‪.CPU‬‬
‫על מנת להקל על ה‪ ,CPU-‬כרטיסי רשת רבים תומכים בפעולה שנקראת ‪ ,TCP Segmentation Offloading‬או בקיצור ‪.TSO‬‬
‫כאשר ‪ TSO‬מופעל‪ ,‬מערכת ההפעלה בונה חבילות ‪ IP‬המכילות פי ‪ 2‬או פי ‪ Data 0‬ממה שמאפשר ה‪ .MTU-‬הכרטיס מקבל‬
‫את החבילות הגדולות ומפרק אותן לחבילות קטנות יותר בהתאם למה שמותר לו להעביר ברשת‪.‬‬
‫הנה דוגמא שתמחיש את השיטה‪:‬‬
‫נניח שאפליקציה צריכה להעביר ‪ 3000‬בתים‪ .‬גודל מקסימלי של חבילה הוא ‪ 1133‬בתים‪ ,‬ואורך ה‪ Headers-‬הוא ‪ 133‬בתים‪.‬‬
‫מכאן נובע שה‪ MSS-‬הוא ‪ 1333‬בתים‪ ,‬והמידע יעבור ב‪ 3-‬חבילות‪.‬‬
‫אם אין ‪ ,TSO‬רמת האפליקציה שולחת ‪ 0333‬בתים לרמת ה‪ .TCP-‬ה‪TCP -‬מבצע סגמנטציה לפי ה‪ ,MSS-‬מחלק ל‪ 0-‬חלקים‬
‫מוסיף ‪ TCP Header‬ומעביר כל אחד מהחלקים לשכבת ה‪ ,IP-‬שמוסיפה ‪ Header‬משלה וכך הלאה עד שהחבילות יוצאות‬
‫מתוך השיכבה הפיזית‪.‬‬
‫‪App‬‬
‫‪Data‬‬
‫‪TCP‬‬
‫‪Data‬‬
‫‪Data‬‬
‫…‬
‫‪Data‬‬
‫‪IP‬‬
‫‪Data‬‬
‫‪Data‬‬
‫…‬
‫‪Data‬‬
‫‪L2‬‬
‫‪Data‬‬
‫‪Data‬‬
‫…‬
‫‪Data‬‬
‫‪L1‬‬
‫‪Data‬‬
‫‪Data‬‬
‫…‬
‫‪Data‬‬
‫‪29‬‬
‫אם ‪ TSO‬מופעל‪ ,‬עד לשכבה ‪ 2‬המידע יגיע כיחידה אחת‪ ,‬ורק כרטיס הרשת יעשה את הפירוק לסגמנטים‪:‬‬
‫‪App‬‬
‫‪Data‬‬
‫‪TCP‬‬
‫‪Data‬‬
‫‪IP‬‬
‫‪Data‬‬
‫‪L2‬‬
‫‪Data‬‬
‫‪L1‬‬
‫‪Data‬‬
‫…‬
‫‪Data‬‬
‫‪Data‬‬
‫בצורה זו קטן העומס על ה‪ ,CPU-‬ובנוסף לכך מספר קריאות ה‪ I/O-‬בין המחשב לכרטיס הרשת יורד גם הוא‪.‬‬
‫גם ל‪ TSO -‬יש מגבלת גודל‪ ,‬ואי אפשר להעביר אינסוף בתים בין השכבות‪ .‬במקרה כזה ה‪ TCP -‬יבצע בכל זאת סגמנטציה‪,‬‬
‫והיא תהיה כפולה מדוייקת של ה‪.MSS-‬‬
‫אם נמשיך את הדוגמא שלמעלה‪ ,‬נניח שאפליקציה רוצה להעביר מליון בתים‪ ,‬וה‪ TSO -‬מוגבל ל‪ 13,207-‬בתים בלבד‪ .‬מכיוון‬
‫שה‪ MSS-‬הוא ‪ ,1333‬ה‪ TCP -‬ישבור את המידע לקבוצות של ‪ 13,333‬בתים ויעביר אותם ל‪ .IP-‬כרטיס הרשת כבר ישבור את‬
‫כל חבילה של ‪ 13,333‬בתים למסגרות של ‪ 1333‬פלוס ‪.Headers‬‬
‫מחשבי המעבדה תומכים ב‪ TSO-‬ומנגנון זה יומחש היטב במהלך הניסוי‪.‬‬
‫בקרת זרימה ( ‪) FLOW CONTROL‬‬
‫‪ 2‬הסעיפים הקרובים ידונו בדרכים לווסת את קצב שליחת המידע על מנת שלא ייווצר מצב של עומס יתר‪ .‬המנגנונים הם‬
‫בקרת זרימה (‪ )Flow Control‬המתואר בסעיף זה‪ ,‬ובקרת גודש (‪ )Congestion Control‬שיתואר בסעיף הבא‪ .‬למרות‬
‫שהמטרה היא זהה‪ ,‬מדובר בשני מנגנונים שונים שנובעים מצורך אחר‪ .‬בקרת זרימה נועדה למנוע מצב בו התחנה שמקבלת‬
‫את המידע אינה יכולה לעמוד בקצב עיבוד המידע‪ .‬לעומת זאת בקרת גודש נועדה להתמודד עם מצב בו לאורך הנתיב בין‬
‫המחשב שמשדר את הנתונים לזה שמקבל אותם יש צוואר בקבוק שאינו מסוגל להתמודד עם תעבורה מעל לקיבולת‬
‫מסויימת‪.‬‬
‫‪30‬‬
‫על מנת לספק בקרת זרימה‪ ,‬מוגדרים שני מושגים‪:‬‬
‫‪ receiving buffer .1‬במחשב המקבל‪ .‬ב‪ buffer -‬הזה ישבו הנתונים שכבר הגיעו למחשב היעד‪ ,‬אבל האפליקציה‬
‫שפתחה את קשר ה‪ TCP-‬עדיין לא קראה אותם‪.‬‬
‫‪ .2‬חלון קבלה‪ .‬הגודל בבתים של המקום הפנוי ב‪ .receiving buffer-‬זהו החלק הכחול בציור למטה‪.‬‬
‫גודל חלון הקבלה מועבר ב‪ .TCP Header-‬מכיוון שנשלח ‪ ACK‬מהמחשב המקבל למחשב השולח‪ ,‬המחשב השולח יודע תמיד‬
‫כמה מקום נשאר במחשב המקבל לנתונים נוספים‪ .‬כאשר חלון הקבלה מגיע לאפס‪ ,‬האפליקציה השולחת יודעת שאין מה‬
‫לשלוח יותר מידע‪ ,‬מכיוון שאין למידע הזה מקום להיקלט בו במחשב המקבל‪ .‬במצב כזה היא שולחת חבילות עם בית אחד‬
‫בקצב מסוים‪ ,‬על מנת להמשיך לקבל ‪ ACK‬ים שיתנו אינדיקציה על גודל החלון‪ .‬מכיוון שהאפליקציה המקבלת ממשיכה לקרוא‬
‫נתונים‪ ,‬חלון הקבלה גדל מעל האפס ואז המחשב השולח יכול להמשיך לשלוח נתונים חדשים‪.‬‬
‫בקרת גודש ( ‪) CONGESTION CONTROL‬‬
‫זהו אחד הנושאים המורכבים בעולם ה‪ ,TCP-‬והמילה האחרונה עדיין לא נאמרה פה‪ .‬מה שהופך את הנושא לכל כך מורכב‬
‫הוא שבמקרה הזה יש עוד שחקנים במשחק מלבד ‪ 2‬הקצוות של קשר ה‪.TCP-‬‬
‫הצורך‬
‫הנה דוגמא למצב של עומס יתר‪ .‬הרשת המצויירת בציור למטה מבוססת כולה על ‪ .100Mbps Ethernet‬ישנם ‪ 2‬קשרי ‪,TCP‬‬
‫האחד בין מחשב ‪ A‬למחשב ‪( D‬הקו הכחול) והשני בין מחשב ‪ B‬למחשב ‪( C‬הקו הירוק)‪ .‬מחשב ‪ A‬משדר למחשב ‪ D‬במלוא‬
‫העוצמה‪ ,‬כלומר בקצב של ‪ .100Mbps‬כך עושה גם מחשב ‪ C‬למחשב ‪ .B‬כאשר כל אחד מהם משדר בזמן אחר אין בעיה‪.‬‬
‫אולם כאשר הם משדרים ביחד‪ ,‬נוצר עומס יתר על קטע המשותף ביניהם‪ ,‬כלומר על הקו בין ‪ R1‬ל‪ .R2-‬מהר מאד יצטברו‬
‫חבילות ב‪ R1-‬ולא יצליחו לצאת לכיוון ‪ .R2‬התורים ב‪ R1-‬יתמלאו מהר מאד וחבילות יתחילו להיזרק‪ .‬במצב כזה המחשבים‬
‫השולחים יבצעו שליחה מחדש של החבילות שנזרקו‪ ,‬מה שיגרום לנצילות של הקו לרדת‪ .‬בעולם האמיתי בו המרחק בין‬
‫המקור ליעד הרבה יותר גדול מדובר בבזבוז משאבים רב יותר בגלל החבילות הרבות שתופסות רוחב פס ובסוף לא מגיעות‬
‫ליעדן‪.‬‬
‫‪31‬‬
‫‪A‬‬
‫‪B‬‬
‫‪R2‬‬
‫‪R1‬‬
‫‪C‬‬
‫‪D‬‬
‫זיהוי מצב של גודש יתר‬
‫מכיוון ש‪ TCP-‬הוא פרוטוקול קצה אל קצה‪ R1 ,‬אינו יכול לדווח כי הוא מתקרב למצב של עומס יתר‪ .‬לכן רק תחנות הקצה‬
‫יכולות לזהות מצב זה ולהגיב אליו‪ .‬זה יקרה כאשר הקשר יגיע למצב של אובדן חבילות‪ .‬כפי שהוסבר בסעיף על אמינות‬
‫הקשר‪ ,‬הזיהוי נעשה כאשר תחנת הקצה מקבלת ‪ Timeout‬או שלושה ‪ .duplicate acks‬במצב אובדן חבילות תתבצע שליחה‬
‫מחדש של החבילה האבודה וגם הערכה מחדש של קצב השידור‪.‬‬
‫שליטה על קצב השידור‬
‫בסעיף על בקרה זרימה התוודענו אל חלון הקבלה‪ .‬זהו מספר שהמחשב המקבל מעביר למחשב השולח ומיידע אותו כמה‬
‫בתים הוא מסוגל לקלוט‪ .‬בבקרת גודש קיים מנגנון דומה‪ ,‬הפעם עם חלון גודש (‪ .)CWND‬חלון הגודש קובע כמה בתים‬
‫המחשב יכול לשלוח מבלי שקיבל עליהם ‪ .ACK‬בניגוד לחלון קבלה‪ ,‬זהו פרמטר פנימי שהשולח קובע עם עצמו‪ ,‬ולכן היא אינו‬
‫חלק מהפרוטוקול‪ .‬חלון הגודש מתחיל מגודל מסויים‪ ,‬וכל עוד אין אבדן חבילות גודל הוא עולה בהתמדה‪ .‬כאשר המחשב‬
‫מזהה אובדן חבילות‪ ,‬הוא מוריד בצורה דרסטית את גודל חלון הגודש‪ ,‬ומעלה אותו שוב קצת יותר בזהירות עד אובדן‬
‫החבילות הבא וחוזר חלילה‪ .‬בצורה זו הוא מווסת את עצמו‪.‬‬
‫הנה תמונה של השינוי בחלון השליחה על ציר הזמן מרגע יצירת קשר ה‪ .TCP-‬הגידול הוא בהתחלה אקספוננציאלי‪ ,‬והופך‬
‫ללינארי אחרי חצית סף מסוים‪ .‬כאשר יש ארוע של אבדן חבילות גודל החלון יורד לחצי‪ ,‬ואז שוב גדל ליניארית עד לנפילה‬
‫הבאה וחוזר חלילה‪.‬‬
‫‪32‬‬
‫פורמט ה ‪ HEADER -‬של ‪TCP‬‬
‫‪ :Source Port‬הפורט שהמחשב השולח משתמש בו לקשר זה‬
‫‪ :Destination Port‬הפורט שהמחשב המקבל משתמש בו לקשר זה‬
‫‪ :Sequence Number‬כפי שהוסבר למעלה‬
‫‪ :Acknowledgement Number‬כפי שהוסבר למעלה‬
‫‪ :HLEN‬אורך ה‪TCP Header-‬‬
‫דגלים‪ 4 :‬הדגלים נותנים אינדיקציות לגבי החבילה‪ .‬למשל ‪ Syn‬משמש להקמת קשר‪ Fin ,‬ו‪ Rst-‬לסיום קשר‪.‬‬
‫‪ :Window‬גודל חלון הקבלה כפי שהוסבר בסעיף על בקרת זרימה‬
‫‪ :Checksum‬בדיקת נכונות של המידע‪ ,‬כולל ה‪ TCP Header-‬וה‪.data-‬‬
‫‪ :Urgent Pointer‬לא נרחיב עליו את הדיבור כי הוא לא ממש בשימוש‪.‬‬
‫‪ :Options‬לעיתים יש הרחבה של הפרוטוקול לאופציות נוספות‪ .‬גם זה לא יידון במסגרת מעבדה זו‪.‬‬
‫‪33‬‬
‫שאלות הכנה לחלק א'‬
‫אין צורך להדפיס את התשובות‪ .‬יש להעלות אותם לאתר ‪ LabAdmin‬ואם אתם מסתבכים עם זה תשלחו למדריך ‪.‬‬
‫כתובות‬
‫‪.1‬‬
‫‪.2‬‬
‫‪.0‬‬
‫‪.7‬‬
‫איך מחשב מזהה את כתובת הרשת אליה הוא שייך‪ ,‬בהנחה שיש לו כתובת ‪?subnet mask– IP‬‬
‫איך מחשב מזהה את כתובת ה‪ Broadcast‬שלו‪ ,‬בהנחה שיש לו כתובת ‪?subnet mask– IP‬‬
‫אילו מהכתובות ‪ IP‬הבאות הן חוקיות וניתן להגדיר על מחשב ואילו לא?‬
‫‪0.12.23.34 .a‬‬
‫‪10.0.1.2 .b‬‬
‫‪169.254.67.89 .c‬‬
‫‪234.345.456.567 .d‬‬
‫אם אני מגדיר רשת עם ‪ 2‬תחנות בלבד‪ ,‬מה ה‪ subnet mask-‬המקסימלי אותו אני יכול להגדיר? (כלומר המספר‬
‫המקסימלי של סיביות ‪ 1‬ב‪ .)Mask-‬נמקו את תשובתכם‪.‬‬
‫מודל השכבות‬
‫‪.1‬‬
‫‪.2‬‬
‫‪.0‬‬
‫‪.7‬‬
‫מדוע יעיל יותר ליישם מנגנוני אמינות בשכבת ה‪ transport-‬מאשר בשכבת ה‪ ?Internet-‬ציין ‪ 2‬סיבות‪.‬‬
‫איזו שכבה במודל ה‪ TCP/IP-‬אחראית על ניתוב החבילות?‬
‫כאשר מגיעה חבילת ‪ IP‬למחשב‪ ,‬איך המחשב יודע האם זו חבילת ‪ TCP‬או ‪?UDP‬‬
‫איזה סוג ציוד מחזיק טבלאות ניתוב עם כתובות ‪?IP‬‬
‫‪ .a‬נתב‬
‫‪ .b‬מחשב אישי‬
‫‪ .c‬מתג‬
‫‪Firewall .d‬‬
‫‪ETHERNET‬‬
‫‪ .1‬ברשת המעבדה‪ ,‬הודעה של ‪ 1333‬בתים תעבור ב‪ 7-‬חבילות‪ .‬מה מונע מההודעה לעבור בחבילה בודדת?‬
‫‪ARP‬‬
‫‪ .1‬למה טבלת ‪ ARP‬לא תכיל כתובות שנמצאות מחוץ לרשת המקומית?‬
‫‪ .2‬למה בקשת ‪ ARP‬נשלחת כ‪?Broadcast-‬‬
‫‪ .0‬הצע שיטות לאתר מחשב המבצע ‪Arp Spoofing‬‬
‫‪34‬‬
‫שאלות הכנה לחלק ב '‬
‫‪TCP‬‬
‫‪.1‬‬
‫‪.2‬‬
‫‪.0‬‬
‫‪.7‬‬
‫‪.1‬‬
‫‪.4‬‬
‫‪.4‬‬
‫‪.3‬‬
‫כיצד מחשב ששולח רצף חבילות ‪ TCP‬מזהה במהירות שאחת החבילות הלכה לאיבוד?‬
‫נניח שמחשב א' צריך לשלוח למחשב ב' ‪ 13333‬בתים‪ .‬גודל ה‪ payload -‬המירבי הוא ‪ 1333‬בתים והרשת עובדת‬
‫כהלכה (אין אבדן מידע‪ ,‬איבוד בדר של החבילות וכו')‪ .‬מה יהיה ב‪ sequence number -‬של חבילת ה‪ IP-‬השישית‬
‫שתישלח? מה יהיה ה‪ ack-‬השישי?‬
‫נניח שמחשב א' קיבל ‪ ACK‬ממחשב ב' עם הערך ‪ .07144‬אם גודל החלון הוא ‪ ,2373‬מה ה‪ SEQ-‬המירבי אותו יכול‬
‫לשלוח מחשב א'?‬
‫הסבר מדוע לא ניתקל ב‪ IP Fragmentation-‬בקשר ‪ TCP‬מעל ‪.Ethernet‬‬
‫מחשב ‪ 1‬שולח למחשב ‪ 2‬שלוש הודעות על גבי ערוץ ‪ .TCP‬התוכן של כל הודעה הינו הבתים ‪ 0x02 ,0x01 ,0x00‬עד‬
‫‪ .0x09‬המחשבים קבעו ביניהם בזמן הקמת הקשר‪ ,‬שגודל ה‪ MSS -‬הוא ‪ .14‬כמה הודעות ‪ TCP‬יישלחו‪ ,‬ומה יהיה‬
‫התוכן של כל הודעה?‬
‫בציור למטה‪ ,‬ציינו את מספר ה‪ ack-‬עבור חבילות ‪ 1-3‬מ‪ B -‬ל‪ ,A-‬כפי שמצויין לחבילה הראשונה‬
‫אם נתבסס על אותו ציור‪ ,‬נניח שגודל חלון הגודש (‪ )CWND‬הוא ‪ 1133‬בתים‪ .‬כמה חבילות נוספות יכול ‪ A‬לשדר‪,‬‬
‫שלא צוירו בציור‪ ,‬לפני שהוא נעצר בגלל מגבלת גודל חלון (יש להתעלם מתזמונים‪ ,‬כלומר להניח שלא מפסיקים את‬
‫השידור בגלל ה‪?)Fast Retransmit-‬‬
‫שאלת ‪ :TSO‬נניח שה‪ MSS -‬נקבע על ‪ ,1773‬גודל ה‪ headers-‬כולם ביחד הוא ‪ 44‬בתים‪ .‬אם שכבת ה‪ TCP -‬שולחת‬
‫‪ 0‬חבילות ביחד‪ ,‬מה הגודל של החבילה שעוברת משכבה ‪ 2‬לשכבה ‪?1‬‬
‫‪35‬‬
A
B
ack = 101
1
2
0
7
1
Timeout
4
4
3
.2
36