הטכניון -מכון טכנולוגי לישראל הפקולטה להנדסת חשמל המעבדה למערכות תוכנה מרושתות 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- 12321221 המצאת ה 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
© Copyright 2024