החיים המקוונים Networking הרצאה מספר 14. 2 היום בהרצאה החומר היום אינו למבחן, אבל חיוני לפרויקט הסיום תקשורת בין מחשבים תקשורת TCP/UDP פרוטוקול HTTP ושימושיו.

Slides:



Advertisements
Similar presentations
Servlets, JSP and JavaBeans Joshua Scotton.  Getting Started  Servlets  JSP  JavaBeans  MVC  Conclusion.
Advertisements

Object Oriented 33 MCSD DORON AMIR
ממיבחניםC שאלות ++.
תוכנה 1 סמסטר א ' תשע " ב תרגול מס ' 7 * מנשקים, דיאגרמות וביטים * לא בהכרח בסדר הזה.
מבוא למדעי המחשב לתעשייה וניהול
סוגי רשתות תקשורת LAN WAN רשת מקומית – רשת כוכב אינטרנט שרת נתב לקוח.
1 תוכנה 1 תרגול 14 – סיכום. 2 קצת על מנשקים מנשק יכול להרחיב יותר ממנשק אחד שירותים במנשק הם תמיד מופשטים וציבוריים public interface MyInterface { public.
HTTP HyperText Transfer Protocol. HTTP Uses TCP as its underlying transport protocol Uses port 80 Stateless protocol (i.e. HTTP Server maintains no information.
הגנה במערכות מתוכנתות חורף תשס"ד הרצאה 7 Firewalls ספרות : Chapman, Zwicki. Building Internet Firewalls. O’Reilly, Cheswick, Bellovin. Firewalls.
הגנה במערכות מתוכנתות חורף תשס"ד הרצאה 6 מבוא לרשתות מודל TCP/IP איומים על רשתות.
תרגול 8.5 – מודל השכבות, מבוא ל-TCP/IP
Time Based Identification of Web Attackers המעבדה לאבטחת מידע המעבדה לאבטחת מידע סמסטר חורף תשס " ט הטכניון מנחים: עמיחי שולמן אלדד שי מבצעים: גליה סימנובסקי.
חורף - תשס " ג DBMS, Design1 שימור תלויות אינטואיציה : כל תלות פונקציונלית שהתקיימה בסכמה המקורית מתקיימת גם בסכמה המפורקת. מטרה : כאשר מעדכנים.
מכון ויצמן למדע - שמוליק מתוך 8 חישוב מקבילי ומבוזר מה זה יחידה חמישית במדעי המחשב... n ענף מתקדם במדעי המחשב העוסק במערכות ממוחשבות מרובות ישויות.
An introduction to Java Servlet Programming
מערכות הפעלה ( אביב 2009) חגית עטיה © 1 אפליקציות שרת - לקוח  פרדיגמת שרת לקוח  מושג ה socket  מבנה שרת - לקוח  קצת יותר על רשתות.
ספר סקיצות ספר סקיצות קלאסי עם יכולות ממוחשבות. ספר סקיצות רגיל  יתרונות : נוח לנשיאה, מהיר ונוח לעבודה, עמיד.  חסרונות : הכול ידני, קשה לקבל דיוקים.
חורף - תשס " ג DBMS, צורות נורמליות 1 צורה נורמלית שלישית - 3NF הגדרה : תהי R סכמה רלציונית ותהי F קבוצת תלויות פונקציונליות מעל R. R היא ב -3NF.
מערכות הפעלה ( אביב 2009) חגית עטיה © 1 תהליכים - דייאט : חוטים  מוטיבציה  חוטי משתמש וחוטי מערכת  תמיכת מערכת ההפעלה  דוגמאות ושימושים.
CCN CCN Central Control Network Final presentation Winter & Spring 2002/03 Student : Kormas Tal Guide : Gerber Alex.
עיבוד תמונות ואותות במחשב אלכסנדר ברנגולץ דואר אלקטרוני : שיטות קידוד שיטות קידוד אורך מלת קוד ואנטרופיה אורך מלת קוד ואנטרופיה קידוד.
CIS – Spring Instructors: Geoffrey Fox, Bryan Carpenter Computational Science and.
1 CS6320 – Servlet Structure and Lifecycle L. Grewe.
מרץ 2002אלן אזאגורי ©1 חוטים Threads. מרץ 2002 אלן אזאגורי ©2עמוד נושאים הגדרות –חוטים –חוטים לעומת תהליכים תמיכת מערכת ההפעלה בחוטים דוגמאות –Mach –Windows.
Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego „Networking”
תכנות מונחה עצמים Object Oriented Programming (OOP) אתגר מחזור ב' Templates תבניות.
1 By Yuval Sittin & Shay Schlafman Technion 2 יעדי הפרוייקט בנית כלי תקשורת רב-תכליתי בדגש על פשטות הפעלה. הכרת השלבים בתכנון פרויקט תוכנה. לימוד שפת.
רשת האינטרנט ויישומיה האינטרנט היא הרשת הגדולה ביותר בעולם המקשרת בין מחשבים ואנשים המפעילים אותם במדינות רבות בעולם. ב העריכו שהאינטרנט מקשרת קרוב.
Safari On-line books. מה זה ספארי ספארי זו ספריה וירטואלית בנושא מחשבים היא כוללת יותר מ כותרים כל הספרים הם בטקסט מלא ניתן לחפש ספר בנושא מסוים.
Web programming for project students Dr Jim Briggs.
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 1 פרק 7 ISP דוגמא נוספת.
Text to speech In Mobile Phones איתי לוי. הקדמה שימוש בהודעות טקסט על המכשירים הסלולארים היא דרך תקשורת מאוד פופולארית בימינו אשר משתמשים בה למטרות רבות,
Servlets. Our Project 3-tier application Develop our own multi-threaded server Socket level communication.
Web technologies and programming cse hypermedia and multimedia technology Fanis Tsandilas April 3, 2007.
Simple Web Services. Internet Basics The Internet is based on a communication protocol named TCP (Transmission Control Protocol) TCP allows programs running.
Simple Web Services. Internet Basics The Internet is based on a communication protocol named TCP (Transmission Control Protocol) TCP allows programs running.
CP476 Internet Computing Lecture 5 : HTTP, WWW and URL 1 Lecture 5. WWW, HTTP and URL Objective: to review the concepts of WWW to understand how HTTP works.
TCP/IP Protocol Suite 1 Chapter 22 Upon completion you will be able to: World Wide Web: HTTP Understand the components of a browser and a server Understand.
COMP 321 Week 7. Overview HTML and HTTP Basics Dynamic Web Content ServletsMVC Tomcat in Eclipse Demonstration Lab 7-1 Introduction.
CMPUT 391 – Database Management Systems Department of Computing Science University of Alberta CMPUT 391 Database Management Systems Web based Applications,
Web Server Programming 1. Nuts and Bolts. Premises of Course Provides general introduction, no in-depth training Assumes some HTML knowledge Assumes some.
1 Introductory material. This module illustrates the interactions of the protocols of the TCP/IP protocol suite with the help of an example. The example.
פיתוח מערכות מידע Class diagrams Aggregation, Composition and Generalization.
Web Design & Development 1 Lec - 21 Umair Javed. Web Design & Development 2 Socket Programming.
Networks Sockets and Streams. TCP/IP in action server ports …65535 lower port numbers ( ) are reserved port echo7 time13 ftp20 telnet23.
Introduction to Server-Side Web Development Introduction to Server-Side Web Development Session II: Introduction to Server-Side Web Development with Servlets.
הרצאה 1 מסחר אלקטרוני ובסיסי נתונים. דרישות הקורס  ציון הקורס יינתן על תרגילים ופרויקט ( אין מבחן )  תרגילים 1-8 ביחד 40% (5 % כל אחד )  תרגיל 9 10%
CSI 3125, Preliminaries, page 1 SERVLET. CSI 3125, Preliminaries, page 2 SERVLET A servlet is a server-side software program, Responds oriented other.
1 Introduction to Servlets. Topics Web Applications and the Java Server. HTTP protocol. Servlets 2.
By Vivek Dimri. Basic Concepts on Networking IP Address – Protocol – Ports – The Client/Server Paradigm – Sockets The Java Networking Package – The InetAddress.
Advanced Java Session 6 New York University School of Continuing and Professional Studies.
Java Programming II Java Network (I) Java Programming II.
מבוא למדעי המחשב לתעשייה וניהול הרצאה 6. מפעל השעווה – לולאות  עד עכשיו  טיפלנו בייצור נרות מסוג אחד, במחיר אחיד  למדנו להתמודד עם טיפול במקרים שונים.
1 תרגול 11: Design Patterns ומחלקות פנימיות אסף זריצקי ומתי שמרת 1 תוכנה 1.
WEB1P webarch1 Web architecture Dr Jim Briggs. WEB1P webarch2 What is the web? Distributed system Client-server system Characteristics of clients and.
Simple Web Services. Internet Basics The Internet is based on a communication protocol named TCP (Transmission Control Protocol) TCP allows programs running.
אחסן, סנכרן ושתף את הקבצים שלך
Introduction to Servlets
„Networking”.
תקשורת ומחשוב תרגול 1 IP, Classes and Masks.
SQL בסיסי – הגדרה אינדוקטיבית
תקשורת ומחשוב תרגול סוקטים.
למה.
תזכורת על מה דיברנו שיעור שעבר? בנינו אתר אינטרנט עם כותרות
תהליכים-דייאט: חוטים מוטיבציה חוטי משתמש וחוטי מערכת
עבודה מול שרת המצגות – Win XP
Shell Scripts בסביבת UNIX
תוכנה 1 תרגול 13 – סיכום.
Introduction to Client/Server Design
Servlet APIs Every servlet must implement javax.servlet.Servlet interface Most servlets implement the interface by extending one of these classes javax.servlet.GenericServlet.
Presentation transcript:

החיים המקוונים Networking הרצאה מספר 14

2 היום בהרצאה החומר היום אינו למבחן, אבל חיוני לפרויקט הסיום תקשורת בין מחשבים תקשורת TCP/UDP פרוטוקול HTTP ושימושיו מהם Servlets? הסבר על פרויקט הסיום

3 תקשורת בין מחשבים עד כה דיברנו על תוכנות עצמאיות הכתובות ב-Java ישנן דוגמאות רבות לתוכנות הדורשות קשר עם גורם חיצוני התחברות למסד נתונים חיצוני (לאו דוקא באותו מחשב) התחברות לתוכנה אחרת על מנת לקבל שירות טעינת קוד ממיקום מרוחק (למשל מהאינטרנט) שרת באינטרנט המכין תוכן דינאמי בהתאם לבקשה כמה עותקים של אותה תוכנה משתפים פעולה ברשת

4 תקשורת בין מחשבים אז מה דרוש בשביל ששתי ישויות ידברו אחת עם השנייה? שם מזהה ערוץ תקשורת

5 האינטרנט פרוטוקול האינטרנט (IP) מגדיר כתובות לכל מחשב המחובר לרשת/לאינטרנט יש כתובת הכתובת מאפשרת לרשת למצוא את המחשב הכתובת הינה 32 bit unsigned integer בנוסף, ניתן לתת שם סימבולי, כגון שרתים הנקראים DNS (Domain Name Server) מתרגמים שמות סימבוליים לכתובות אינטרנט

6 כתובות ושירותים האם זה מספיק? flower.org star.edu רוצה להתחבר לשירות ספציפי... איזה שירות?

7 כתובות ושירותים כשנרצה שירות מסוים, נוסיף לכתובת הרצויה גם מספר שירות (Port number) מספרי שירותים הם בין 0 ל ישנם שירותים רבים המוגדרים כבר flower.org star.edu רוצה להתחבר לשירות ספציפי... איזה שירות? Http: 80 Ftp: Telnet: 23

8 ערוצי תקשורת כעת אנו יודעים למצוא אחד את השני אבל מה עם שפה משותפת? ערוץ תקשורת :o) גכעןגכעןנ דגכ דגכש שדגשדג

9 ערוצי תקשורת ישנם שני פרוטוקולים ראשיים לתקשורת המוגדרים ברשתות IP TCP – המאפשר יצירת קשר יציב בין שתי מכונות והחלפת מידע בצורה סינכרונית UDP – שליחת חבילות מידע קטנות ממחשב למחשב UDP MULTICAST – שליחת הודעה לקבוצה גדולה של מחשבים

10 UDP – תקשורת לא אמינה פרוטוקול הבנוי על גבי פרוטוקול האינטרנט הבסיסי חבילה נשלחת, אין וודאות שתגיע ליעדה לא מקבלים אישור שחבילה ששלחת הגיעה לא מקבלים הודעה אם החבילה נאבדה או נזרקה החבילות לאו דווקא מגיעות בסדר מסוים החבילות עלולות להיזרק לפח אם הרשת עמוסה שולח מקבל

11 TCP – תקשורת אמינה פרוטוקול אמין הבנוי על גבי בסיס לא אמין מאפשר זרימה דו-כיוונית של מידע משתמש במספרי הודעות ושליחות מחדש כדי לוודא שחבילות אומנם מגיעות ומגיעות לפי הסדר יש הודעה אם הייתה תקלה בתקשורת

12 מודל ה-Sockets הפשטה בתוכנה של תקשורת על גבי רשת בין שני מחשבים (שתי ישויות) הפשטה חזקה דיה להתמודד כמעט עם כל פרוטוקול תקשורת (אך משתמשים בה בעיקר עבור פרוטוקולי IP) יש מימוש של Sockets כמעט בכל מערכת הפעלה ושפת תכנות

13 מודל ה-Sockets השרת מאזין על שירות(PORT) מסוים, לכל לקוח שרוצה להתחבר כשמגיעה בקשה מלקוח נוצר ללקוח ולשרת Socket וביניהם נפתח ערוץ תקשורת על גבי ערוץ זה כעת אפשר לתקשר סינכרונית לקוח שרת בקשת התחברות ערוץ תקשורת

14 אז מה זה HTTP? HTTP – Hyper Text Transfer Protocol שייך למשפחה של פרוטוקולים שיושבים שכבה מעל TCP ו-UDP הפרוטוקול העיקרי ברשת האינטרנט תקשורת בין דפדפן האינטרנט לשרתים ברשת מספר שירות עיקרי: 80

15 אז מה זה HTTP? שרת HTTP מחכה לבקשות על Port 80 בהינתן בקשה, השרת מחזיר תשובה... בעצם קובץ משתמש מקליד כתובת אינטרנט השרת של GOOGLE מטפל בבקשה מחזיר דף HTML המוצג בדפדפן

16 אז מה זה HTTP? שרת HTTP מחכה לבקשות על Port 80 בהינתן בקשה, השרת מחזיר תשובה... בעצם קובץ URL (Uniform Resource Locator) מייצג משאב כלשהוא ברשת, דף אינטרנט, קובץ, שירות כלשהוא...

17 URL מורכב מהחלקים הבאים  פרוטוקול (Http, Ftp, File)  כתובת או שם  מספר שירות (Port) – אופציונלי  מידע ייחודי לפרוטוקול

18 פרוטוקול ה-HTTP פרוטוקול מורכב וגדול יחסית הגדרה מלאה: שני שירותים עיקריים GET POST מטרת השירותים פשוטה, בהינתן URL, החזר קובץ (בד"כ דף אינטרנט)

19 GET Client connects to server on port 80 GET /~pugh/index.html HTTP/1.0 blank line Server responses with HTTP headers HTTP/ OK Date: Mon, 20 Feb :47:44 GMT Server: Apache Last-Modified: Wed, 15 Feb :17:09 GMT ETag: "9b2b1c af40" Accept-Ranges: bytes Content-Length: 2376 Connection: close Content-Type: text/html; charset=ISO Followed by blank line, then contents of response

אבל לא דיברנו על Java

21 אז מה ג'אווה נותן? טעינה של מחלקות מרוחקות - UrlClassLoader הפעלה של שירותים בעצמים מרוחקים - java.rmi ספריית Sockets (java.net) מימוש מערכת Sockets מלאה שכבה נוספת לעבודה קלה עם URL'ים ספריות שונות לעבודה כ-שרת Servlets JSP J2EE בכלליות

22 טעינת מחלקות מרוחקות Local JVM Local Java program Request remote class to load (URL) Bytecode Loaded class (can now create instances)

23 הפעלה מרוחקת Local JVM Local Java program Remote JVM Remote Java program Connect to instance of a class Receive remote reference Call methods on remote

24 Sockets ב-java.net יש מימוש מלא של Sockets שתי מחלקות מממשות מודל לקוח/שרת Socket מאפשר להתחבר לשרת/שירות מסוים מייצג חיבור, מאפשר לשלוח ולקבל מידע ServerSocket bind – קובע IP ו-Port עליהם השרת יקשיב accept – מאזין ומחכה ללקוח, כשיש חיבור מחזיר מופע של Socket

25 דוגמה ל-Sockets import java.net.*; import java.io.*; // Here's a simple client program that connects to a web server, // requests a document and reads the document from the server. String hostname = "java.oreilly.com"; // The server to connect to int port = 80; // Standard port for HTTP String filename = "/index.html"; // The file to read from the server Socket s = new Socket(hostname, port); // Connect to the server // Get I/O streams we can use to talk to the server InputStream sin = s.getInputStream(); BufferedReader fromServer = new BufferedReader(new InputStreamReader(sin)); OutputStream sout = s.getOutputStream(); PrintWriter toServer = new PrintWriter(new OutputStreamWriter(sout));

26 דוגמה ל- Sockets (2) … // Request the file from the server, using the HTTP protocol toServer.print("GET " + filename + " HTTP/1.0\r\n\r\n"); toServer.flush(); // Now read the server's response, assume it is a text file, and print it out for(String l = null; (l = fromServer.readLine()) != null; ) System.out.println(l); // Close everything down when we're done toServer.close(); fromServer.close(); s.close();

27 URL מחלקת עזר המאפשרת לקבל משאבים ע"י שימוש ב-URL import java.net.*; import java.io.*; // Create some URL objects URL url=null, url2=null, url3=null; try { url = new URL(" // An absolute URL url2 = new URL(url, "catalog/books/javanut4/"); // A relative URL url3 = new URL(" " "index.html"); } catch (MalformedURLException e) { /* Ignore this exception */ } // Read the content of a URL from an input stream InputStream in = url.openStream();

28 Server-side programming מהו קוד-שרת? רכיב תוכנה שרץ על שרת (מחשב מרכזי) ותפקידו לשרת לקוחות רבים המקרה הנפוץ ביותר – אתרי אינטרנט לג'אווה הרחבות שונות התומכות בכתיבת קוד לצד השרת רוב ההרחבות מוגדרות ב-J2EE: Java 2 Enterprise edition אנחנו נתמקד ב-Servlets

29 Servlets Servlet הוא מחלקה. מופעים של מחלקה זו יודעים לטפל בבקשות המגיעות לשרת ולייצר תשובה בהקשר של Http, Servlet יודע לקבל בקשה לקובץ (בד"כ דף HTML) ולהחזיר את הקובץ המבוקש Servlet אינו תכנית Java מלאה! אין לו זכות קיום עצמאית אין לו שרות מחלקה main!

30 Servlets  לקוח (למשל דפדפן) מבקש דף אינטרנט דינאמי  השרת מפענח את הבקשה ומחליט איזה Servlet יטפל בה  הבקשה מועברת ל-Servlet המטפל בה ומחזיר תשובה לשרת  השרת מעביר את התשובה חזרה ללקוח (הדף מוצג בדפדפן) Client Server Servlet Container (Tomcat) Servlet......

31 Servlets Servlets can be found in javax.servlet The main interface: Servlet interface Servlet { void init(ServletConfig config); //initialize servlet void service(ServletRequest req, //handle requests ServletResponse res); void destroy(); //destroy this instance }

32 מחזור החיים של Servlet The Servlet ContainerA Servlet time Constructor (class-dependant) init ServletConfig Client service destroy Handling clients requests ServletRequest ServletResponse Server

33 HttpServlet מנשק עזר, מתאים רק לבקשות HTTP מוגדר ב-javax.servlet.http interface HttpServlet { void service(HttpServletRequest req, //processes requests & HttpServletResponse rep); //transfers to approp. Method void doGet(HttpServletRequest req, //handle GET requests HttpServletResponse res); void doPost(HttpServletRequest req, //handle POST requests HttpServletResponse res); … }

34 כמה דוגמאות

35 עוד דוגמא

פרויקט סיום

37 הגדרת הפרויקט מטרת הפרויקט הינה ליצור דפדפן תמונות אשר מאפשר למשתמש לבחור ספרייה על המחשב ומציג את התמונות שבה. בנוסף ניתנת למשתמש האפשרות "לשתף את התמונות", ז"א להעלות סט תמונות לאתר בצורה אוטומטית (מתוך דפדפן התמונות) ולאחר מכן לראות את גלריית התמונות בדפדפן האינטרנט (Explorer, Firefox...).

38 פרטים טכניים מועד ההגשה – הפרויקט יהווה 10% מהציון בקורס הפרויקט ייעשה בזוגות (בלבד) מה צריך להגיש? מסמך בן שני עמודים לפחות המתאר כיצד ניגשתם לפתרון הבעיה, תכנון החוזים וכו' קובץ ZIP ובו הקוד של הפרויקט בצורה מסודרת (עם הוראות קומפילציה אם צריך) JAR עובד ובו התכנית המקומית, וקישור לשרת בו ניתן לראות גלריות בדפדפן האינטרנט

39 חלק ראשון – דפדפן תמונות המשתמש בוחר ספרייה מקומית על המחשב במנשק הגראפי מוצגות כל התמונות בספרייה זו (צלמיות - Thumbnails) ניתן ללחוץ לחיצה כפולה על תמונה ולראות אותה בגדול יותר בלחיצת כפתור ניתן לתת שם לסט התמונות הנוכחי ולשלוח אותו לשרת באינטרנט (ראה חלק שני של הפרויקט)

40 חלק ראשון – דרישות טכניות מנשק גראפי – SWT קריאת והצגת תמונות – Java I/O ו/או שימוש ב- SWT שליחת התמונות לשרת – Java Networking

41 חלק שני – שרת תמונות עליכם לכתוב Servlet (לפחות אחד) המספק את השירותים הבאים מקבל בקשות להעלאת תמונות, כל בקשה מורכבת משם סט ומתמונה בינארית בפורמט JPG PNG או GIF, כל תמונה מאוחסנת בספרייה מקומית (על השרת) עם שם מתאים Web server Servlet Container AddPicture(pic data)

42 חלק שני – שרת תמונות עליכם לכתוב Servlet (לפחות אחד) המספק את השירותים הבאים מקבל בקשות להצגת תמונות, הבקשה יכולה להיות בקשה להצגת כל סטים המאוחסנים על השרת, מציג את שמות הסטים, מספר תמונות בכל סט... בקשה להצגת סט ספציפי (מזוהה לפי שם), מציג צלמיות (Thumbnails) של כל התמונות. לחיצה על תמונה תפתח את התמונה המלאה בדף חדש

43 חלק שני – דרישות טכניות השרותים יסופקו ע"י Servlet שתכתבו (ניתן לכתוב שניים אם אתם מעדיפים) ה-Servlet'ים ירוצו כאן בפקולטה על שרת Tomcat התמונות המועלות ע"י המשתמש יאוחסנו בספרייה מקומית כאשר יש בקשה להצגת תמונות, ה-Servlet יכין דף אינטרנט (HTML) מעוצב להצגה בדפדפן האינטרנט

44 הרחבת הפרויקט אתם מוזמנים להרחיב את הגדרת הפרויקט ולהוסיף יכולות נוספות נחמדות ומעניינות רעיונות ניתן לשאוב מ... Flickr – Google Picassa - Adobe Photoshop Album וכו'

בהצלחה!!