180 likes | 346 Views
Hybrid TCP-UDP HTTP Protocol. נכתב ע”י: רון ארזי ושמואל פומברג. מנחה: ויטלי סוחין. מטרות הפרוייקט.
E N D
Hybrid TCP-UDP HTTP Protocol נכתב ע”י: רון ארזי ושמואל פומברג. מנחה: ויטלי סוחין.
מטרות הפרוייקט כיום, הפרוטוקול הנפוץ ביותר על האינטרנט הוא HTTP, שמסתמך על פרוטוקול ה-TCP. הכל עובד יפה, רק שהעובדה שאנו משתמשים ב-TCPגורמת להשהיות ארוכות, במיוחד אם המידע שאנו רוצים להעביר קטן. בפרויקט זה אנו מנסים להוסיף שימוש ב-UDPל-HTTP, כך שבמקרה של מעט מידע, ההשהיה תהיה קצרה בהתאם. הפרויקט יעשה בשפת Java, וב-Jigsaw web server.
UDP תקשורת באמצעות UDPהנה מהירה, כיוון שאין OVERHEADעל חבילות בפתיחת וסגירת התקשורת, אבל גם לא אמינה, בדיוק מאותה הסיבה. שרת לקוח בקשה תשובה
TCP לתקשורת באמצעות TCPיש השהיות ארוכות יותר, בגלל פרוטוקול הפתיחה והסגירה, אך היא אמינה יותר. שרת לקוח פתיחה בקשה תשובה סגירה
הבעיה: • לקבצים גדולים, זמן ההשהיה של הפתיחה והסגירה הינו זניח, ובתמורה אנו מרוויחים את הביטחון של TCP. • לקבצים קטנים, כמו אייקונים שנמצאים בשפע על הרשת, ההשהיה יכולה להגיע עד פי שבע (!) מזמן מעבר המידע “נטו”. (כמובן, זה לא רצוי.)
הפתרון: • עבור קבצים גדולים, נשתמש ב-TCP. ממילא ההפסד לא גדול. • עבור קבצים קטנים, הקובץ ישלח למבקש ב-UDP. כך הרווחנו הרבה זמן ומשאבי רשת.
אז איך הקליינט שלנו עובד ? (1) • דבר ראשון, הוא שולח לשרת חבילת UDPעם בקשת הקובץ. • הקליינט מחכה עכשיו לתשובת UDPאו TCPמהשרת. • אם הקובץ קטן מספיק, השרת שולח אותו בחזרה ארוז ב-UDP. • סה”כ - הרווחנו השהיה. שרת לקוח בקשה תשובה
אז איך הקליינט שלנו עובד ? (2) • דבר ראשון, הוא שולח לשרת חבילת UDPעם בקשת הקובץ. • הקליינט מחכה עכשיו לתשובת UDPאו TCPמהשרת. • אם הקובץ גדול, השרת פותח קשר TCPלקליינט, ושולח אותו. • סה”כ - הפסדנו זמן של שליחת חבילה מהקליינט לשרת. ומכיוון שהקובץ גדול, הזמן זניח. שרת לקוח בקשה פתיחתTCP תשובה
אז איך הקליינט שלנו עובד ? (3) • דבר ראשון, הוא שולח לשרת חבילת UDPעם בקשת הקובץ. • הקליינט מחכה עכשיו לתשובת UDPאו TCPמהשרת. • אם השרת לא מגיב, הקליינט פותח קשר TCPלשרת, וממשיך קשר HTTPרגיל. • סה”כ - הפסדנו זמן של שליחת חבילה מהקליינט לשרת, ועוד זמן ה-timeout. כדי להגיע לביצועים אופטימליים, צריך לשחק עם זמן ה-timeout. שרת לקוח בקשה Timeout פתיחתTCP בקשה תשובה
סביבת העבודה • אנו עובדים על ה-Jisgaw proxy, ובמיוחד על ה-Client APIשלו, שמיועד לעבוד מול השרתים הרצויים. • שפת הכתיבה היא Java.
למה פרוקסי ? • לא ריאלי לשנות את הדפדפנים הקיימים. • לא ריאלי להעביר את כולם לדפדפן שלנו. • פתרון - פרוקסי • פרוקסי קרוב למשתמש, ולכן השהיית פתיחת קשר ה-TCPהיא זניחה תמיד. • כל דפדפן יודע לדבר עם פרוקסי. • הפרוקסי שלנו ידבר עם השרת באמצעות הפרוטוקול שלנו. • לכן - רק ה-ISP-ים יצטרכו להחליף פרוקסי.
למה Jigsaw ? • נכפה עלינו ע”י מנחה הפרויקט. • חופשי, קוד מקור פתוח. • הקוד הוא מאוד מונחה-עצמים, ולכן אנחנו יכולים להתמקד רק בקטע הקוד שמטפל בהתקשרות הפרוקסי מול השרת. • הקוד מאוד גמיש, והרבה דברים בו נקבעים בזמן טעינת התוכנית.
ניתוחי ביצועים - יתרונות • כשהרשת אמינה • כשהרשת איטית. (זמן תגובה גבוה) • כשיש באתר יותר קבצים קטנים
ניתוחי ביצועים - חסרונות • כשהרשת מאבדת חבילות. • כשהרשת מהירה. (זמן תגובה נמוך) • כאין באתר הרבה קבצים קטנים.
סיכום בעזרת פרוטוקול ה-Hybrid HTTPהצלחנו לנצל את יתרונות שתי הפרוטוקולים. UDP - יעילות, מהירות ומחיר נמוך. TCP - אמינות, ובקרת דחיסה.