Professional Documents
Culture Documents
שכבת האפליקציה
יש להגיש את העבודה בזוגות כקובץ pdfיחיד בפורמט קריא וברור .שימו לב שישנן 7שאלות
בעבודה ושאתם מגישים פתרון לכולן .שימו לב שבניגוד לעבודות הקודמות יש לעבודה 2חלקים;
חלק ראשון תיאורטי ( 2שאלות) וחלק שני מעשי (המורכב מ 3פרקים; 2פרקים חובה ופרק רשות.
סה"כ 5שאלות חובה).
.1הסבר בקצרה את השדות הבאים ב header-של .HTTPעבור כל שדה ,ציין האם נשלח ע"י
הלקוח או השרת.
Cookie .a
Set Cookie .b
Host .c
Range .d
Content-Length .e
Last-Modified .f
.2מדוע DNSמשתמש ב( UDP-בדר"כ) ולא בפרוטוקול האמין TCPכפרוטוקול תעבורה?
החלק המעשי יתבצע על מחשביכם הפרטיים או מחשבים במעבדות ,בפרט – שהם בעלי מערכת
הפעלה של .Linuxמומלץ לקרוא את כל ההוראות לפני שמתחילים את החלק המעשי.
הציון שניתן על החלק המעשי מחושב החל משאלה ( 2המטלה עצמה) .בכל שאלה תתבקשו לצרף
הוכחה שהניסוי בוצע ,ובמידה ולא תמצא דין השאלה כלא הוגשה.
dig -v
אם הוא מותקן ,אז הפלט של הפקודה אמור להיות דומה לפלט הבא
DiG 9.18.1-1ubuntu1.1-Ubuntu
dig google.com
החלק המעשי הנוכחי ניתן לעשות על מחשבים עם מערכת הפעלה של ,Windowsאך ניתן גם ב-
.Linuxהתרגיל דורש שימוש ברחרחן מנות ( )Packet Snifferבשם .WiresharkהWireshark-
הוא תוכנה חינמית וניתן להוריד אותה מהאינטרנט .מומלץ לקרוא את כל ההוראות לפני
שמתחילים את החלק המעשי.
הציון שניתן על החלק המעשי מחושב החל משאלה ( 3המטלה עצמה) .בכל שאלה תתבקשו לצרף
הוכחה שהניסוי בוצע ,ובמידה ולא תמצא דין השאלה כלא הוגשה.
https://www.wireshark.org/download.html
.2הפעילו את ה:Wireshark-
sudo wireshark
יש לבחור לנתר את החיבור שלכם לרשת .במידה ואתם לא יודעים איזה לחיבור לקחת
(לדוגמה ,בתמונה למטה קיימים eth0ו )eth1-ניתן דרך פקודת ifconfigלוודא את החיבור
הדרוש או לבחור את הממשק .any
במידה ואתם מקבלים תקלה:
couldn't run /usr/bin/dumpcap in child process: Permission Denied
יש להריץ את הפקודות הבאות ,ואחריהן לאתחל את המחשב:
sudo dpkg-reconfigure wireshark-common
sudo adduser $USER wireshark
.3בשורת הסינון של ה ,Wireshark-יש להכניס את הפקודה הבאה:
http
http://gaia.cs.umass.edu/wireshark-labs/HTTP-wireshark-file2.html
אתם אמורים לראות טקסט של 5שורות .רעננו את העמוד הזה .צרפו צילום מסך של הפלט
של Wiresharkאחרי הרענון.
שימו לב ששחזור של הניסוי במידה ולא צילמתם דורש לנקות את ה Cache-של דפדפן
האינטרנט שלכם (מקבצים זמניים).
.4ענו על השאלות הבאות.
.aהאם ב HTTP GET-הראשון יש את השדה "?"If-Modified-Since
.bהאם השרת בתגובה הראשונה שלח את כל תוכן הטקסט? צרפו צילום מסך המצדיק
את תשובתכם.
.cהאם ב HTTP GET-השני יש את השדה " ?"If-Modified-Sinceצרפו צילום מסך
המצדיק את תשובתכם.
.dהאם השרת בתגובה השנייה שלח את כל תוכן הטקסט?
.eמהם ה HTTP Status Codes-בשתי הבקשות?
חלק ג' – Socket Programming
תרגיל רשות .ניתן לפתור את החלק המעשי גם בסביבת Windowsוגם בסביבת .Linuxשימו לב
שעל מנת שתוכלו ליצור קשר עם השרת יש להיות מחוברים לרשת האוניברסיטאית (ישירות דרך
כבל Wi-Fi/או באמצעות .)VPNמומלץ לקרוא את כל ההוראות לפני שמתחילים את החלק
המעשי.
הציון שניתן על החלק המעשי מחושב החל משאלה ( 2המטלה עצמה) .בכל שאלה תתבקשו לצרף
הוכחה שהניסוי בוצע ,בנוסף לקוד .במידה ולא תמצא דין השאלה כלא הוגשה.
ping 132.72.110.6
מיד לאחר השליחה ,יש לקלוט את ההודעה ששולח השרת ולהדפיסה .על מנת להשתמש ב-
Socketים ב ,Python-יש לייבא את הספריה :socket
import socket
מומלץ לכתוב את הקוד עם try-finallyעל מנת לוודא שה Socket-נסגר במקרה של תקלה.
במידה ולא נסגר ה Socket-במקרה של תקלה יש סיכוי שמערכת ההפעלה לא תיתן לכם
לפתוח Socketחדש מבלי לשנות לו הגדרות (כגון פורט) .לנוחיותכם ,בעמוד הבא מצורפות
כמה שורות קוד לשימושכם.
.3מהי תגובת השרת?
שורות קוד רלוונטיות
:התחברות לשרת
sock.connect((server_IP_as_string, port_as_integer))
sock.sendall(bytes(message, 'utf-8'))
data = sock.recv(1000)
print(data.decode())
:Socket-סגירת ה
sock.close()