45
םםםםם םםםםםםםםNetworking םםםםם םםםם14

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

  • View
    244

  • Download
    21

Embed Size (px)

Citation preview

Page 1: החיים המקוונים Networking הרצאה מספר 14. 2 היום בהרצאה החומר היום אינו למבחן, אבל חיוני לפרויקט הסיום תקשורת

החיים המקווניםNetworking

מספר 14הרצאה

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

2

בהרצאה היום

החומר היום אינו למבחן, אבל חיוני לפרויקטהסיום

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

Page 3: החיים המקוונים Networking הרצאה מספר 14. 2 היום בהרצאה החומר היום אינו למבחן, אבל חיוני לפרויקט הסיום תקשורת

3

מחשבים בין תקשורת

-עד כה דיברנו על תוכנות עצמאיות הכתובות בJava ישנן דוגמאות רבות לתוכנות הדורשות קשר עם גורם

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

Page 4: החיים המקוונים Networking הרצאה מספר 14. 2 היום בהרצאה החומר היום אינו למבחן, אבל חיוני לפרויקט הסיום תקשורת

4

מחשבים בין תקשורת

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

שם מזההשם מזהה

ערוץ תקשורת

Page 5: החיים המקוונים Networking הרצאה מספר 14. 2 היום בהרצאה החומר היום אינו למבחן, אבל חיוני לפרויקט הסיום תקשורת

5

האינטרנט

( פרוטוקול האינטרנטIPמגדיר כתובות )לכל מחשב המחובר לרשת/לאינטרנט יש כתובתהכתובת מאפשרת לרשת למצוא את המחשב 32הכתובת הינה bit unsigned integer

•192.52.52.52 בנוסף, ניתן לתת שם סימבולי, כגוןwww.google.com

שרתים הנקראיםDNS (Domain Name Server) מתרגמים שמות סימבוליים לכתובות אינטרנט

Page 6: החיים המקוונים Networking הרצאה מספר 14. 2 היום בהרצאה החומר היום אינו למבחן, אבל חיוני לפרויקט הסיום תקשורת

6

ושירותים כתובות

?האם זה מספיק

flower.org192.5.5.4

star.edu192.5.5.6

רוצה להתחבר לשירות ספציפי...

איזה שירות?

Page 7: החיים המקוונים Networking הרצאה מספר 14. 2 היום בהרצאה החומר היום אינו למבחן, אבל חיוני לפרויקט הסיום תקשורת

7

ושירותים כתובות

( כשנרצה שירות מסוים, נוסיף לכתובת הרצויה גם מספר שירותPort number)

65535 ל-0מספרי שירותים הם ביןישנם שירותים רבים המוגדרים כבר

flower.org192.5.5.4

star.edu192.5.5.6

רוצה להתחבר לשירות ספציפי...

איזה שירות?

Http: 80Ftp: 21Email:

25Telnet:

23

Page 8: החיים המקוונים Networking הרצאה מספר 14. 2 היום בהרצאה החומר היום אינו למבחן, אבל חיוני לפרויקט הסיום תקשורת

8

תקשורת ערוצי

כעת אנו יודעים למצוא אחד את השני?אבל מה עם שפה משותפת

ערוץ תקשורת

@#$$#@123331

^^!#$#@@34: o)

גכעןגכעןנ דגכ דגכש שדגשדג

Page 9: החיים המקוונים Networking הרצאה מספר 14. 2 היום בהרצאה החומר היום אינו למבחן, אבל חיוני לפרויקט הסיום תקשורת

9

תקשורת ערוצי

ישנם שני פרוטוקולים ראשיים לתקשורתIPהמוגדרים ברשתות

TCP המאפשר יצירת קשר יציב בין שתי – מכונות והחלפת מידע בצורה סינכרונית

UDP שליחת חבילות מידע קטנות ממחשב – למחשב

•UDP MULTICAST שליחת הודעה לקבוצה גדולה – של מחשבים

Page 10: החיים המקוונים Networking הרצאה מספר 14. 2 היום בהרצאה החומר היום אינו למבחן, אבל חיוני לפרויקט הסיום תקשורת

10

UDPתקשורת לא אמינה –

פרוטוקול הבנוי על גבי פרוטוקול האינטרנטהבסיסי

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

שולח מקבל

Page 11: החיים המקוונים Networking הרצאה מספר 14. 2 היום בהרצאה החומר היום אינו למבחן, אבל חיוני לפרויקט הסיום תקשורת

11

TCPתקשורת אמינה –

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

לוודא שחבילות אומנם מגיעות ומגיעות לפי הסדר

יש הודעה אם הייתה תקלה בתקשורת

Page 12: החיים המקוונים Networking הרצאה מספר 14. 2 היום בהרצאה החומר היום אינו למבחן, אבל חיוני לפרויקט הסיום תקשורת

12

Socketsמודל ה-

הפשטה בתוכנה של תקשורת על גבי רשת ביןשני מחשבים )שתי ישויות(

הפשטה חזקה דיה להתמודד כמעט עם כלפרוטוקול תקשורת )אך משתמשים בה בעיקר

(IPעבור פרוטוקולי יש מימוש שלSockets כמעט בכל מערכת

הפעלה ושפת תכנות

Page 13: החיים המקוונים Networking הרצאה מספר 14. 2 היום בהרצאה החומר היום אינו למבחן, אבל חיוני לפרויקט הסיום תקשורת

13

Socketsמודל ה-

מאזיןהשרת(על שירות PORT מסוים, לכל לקוח שרוצה )להתחבר

כשמגיעה בקשה מלקוח נוצר ללקוח ולשרתSocket וביניהם נפתח ערוץ תקשורת

על גבי ערוץ זה כעת אפשר לתקשר סינכרונית

שרתלקוח

בקשת התחברות

ערוץ תקשורת

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

14

?HTTPאז מה זה

HTTP – Hyper Text Transfer Protocol שייך למשפחה של פרוטוקולים שיושבים שכבה

UDP ו-TCPמעל הפרוטוקול העיקרי ברשת האינטרנט

תקשורת בין דפדפן האינטרנט לשרתים ברשת :80מספר שירות עיקרי

Page 15: החיים המקוונים Networking הרצאה מספר 14. 2 היום בהרצאה החומר היום אינו למבחן, אבל חיוני לפרויקט הסיום תקשורת

15

?HTTPאז מה זה

שרתHTTP מחכה לבקשות על Port 80 בהינתן בקשה, השרת מחזיר תשובה... בעצם

קובץ

משתמש מקליד כתובת אינטרנט

מטפל בבקשהGOOGLEהשרת של

המוצג בדפדפןHTMLמחזיר דף

Page 16: החיים המקוונים Networking הרצאה מספר 14. 2 היום בהרצאה החומר היום אינו למבחן, אבל חיוני לפרויקט הסיום תקשורת

16

?HTTPאז מה זה

שרתHTTP מחכה לבקשות על Port 80 בהינתן בקשה, השרת מחזיר תשובה... בעצם

קובץ

URL )Uniform Resource Locator(

מייצג משאב כלשהוא ברשת, דף אינטרנט, קובץ, שירות כלשהוא...

Page 17: החיים המקוונים Networking הרצאה מספר 14. 2 היום בהרצאה החומר היום אינו למבחן, אבל חיוני לפרויקט הסיום תקשורת

17

URL

מורכב מהחלקים הבאים(Http, Ftp, Fileפרוטוקול )1.

כתובת או שם2.

( – אופציונליPortמספר שירות )3.

מידע ייחודי לפרוטוקול4.

http://www.flickr.com/photos/tjt195/220510703/

1 2 4

http://www.google.co.il/search?hl=iw&q=cow&btn&meta=

Page 18: החיים המקוונים Networking הרצאה מספר 14. 2 היום בהרצאה החומר היום אינו למבחן, אבל חיוני לפרויקט הסיום תקשורת

18

HTTPפרוטוקול ה-

פרוטוקול מורכב וגדול יחסית

:הגדרה מלאה http://www.w3.org/Protocols/

שני שירותים עיקרייםGETPOST

מטרת השירותים פשוטה, בהינתןURL החזר ,קובץ )בד"כ דף אינטרנט(

Page 19: החיים המקוונים Networking הרצאה מספר 14. 2 היום בהרצאה החומר היום אינו למבחן, אבל חיוני לפרויקט הסיום תקשורת

19

GET Client connects to server on port 80

GET /~pugh/index.html HTTP/1.0blank line

Server responses with HTTP headersHTTP/1.1 200 OKDate: Mon, 20 Feb 2006 03:47:44 GMTServer: ApacheLast-Modified: Wed, 15 Feb 2006 01:17:09 GMTETag: "9b2b1c-948-1222af40"Accept-Ranges: bytesContent-Length: 2376Connection: closeContent-Type: text/html; charset=ISO-8859-1

Followed by blank line, then contents of response

Page 20: החיים המקוונים Networking הרצאה מספר 14. 2 היום בהרצאה החומר היום אינו למבחן, אבל חיוני לפרויקט הסיום תקשורת

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

Page 21: החיים המקוונים Networking הרצאה מספר 14. 2 היום בהרצאה החומר היום אינו למבחן, אבל חיוני לפרויקט הסיום תקשורת

21

? ' נותן אווה ג מה אז

- טעינה של מחלקות מרוחקותUrlClassLoader - הפעלה של שירותים בעצמים מרוחקיםjava.rmi ספרייתSockets (java.net)

מימוש מערכתSocketsמלאה שכבה נוספת לעבודה קלה עםURLים'

ספריות שונות לעבודה כ-שרתServletsJSPJ2EEבכלליות

Page 22: החיים המקוונים Networking הרצאה מספר 14. 2 היום בהרצאה החומר היום אינו למבחן, אבל חיוני לפרויקט הסיום תקשורת

22

מרוחקות מחלקות טעינת

Local JVM

Local Java program

Request remoteclass to load )URL(

Bytecode

Loaded class)can now

create instances(

Page 23: החיים המקוונים Networking הרצאה מספר 14. 2 היום בהרצאה החומר היום אינו למבחן, אבל חיוני לפרויקט הסיום תקשורת

23

מרוחקת הפעלה

Local JVM

Local Java program

Remote JVM

Remote Java program

Connect to instance of a class

Receive remote reference

Call methods on remote

Page 24: החיים המקוונים Networking הרצאה מספר 14. 2 היום בהרצאה החומר היום אינו למבחן, אבל חיוני לפרויקט הסיום תקשורת

24

Sockets

-בjava.net יש מימוש מלא של Socketsשתי מחלקות מממשות מודל לקוח/שרת

Socketמאפשר להתחבר לשרת/שירות מסוים•מייצג חיבור, מאפשר לשלוח ולקבל מידע•

ServerSocket•bind קובע – IP-ו Portעליהם השרת יקשיב •accept מאזין ומחכה ללקוח, כשיש חיבור מחזיר –

Socketמופע של

Page 25: החיים המקוונים Networking הרצאה מספר 14. 2 היום בהרצאה החומר היום אינו למבחן, אבל חיוני לפרויקט הסיום תקשורת

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((;

Page 26: החיים המקוונים Networking הרצאה מספר 14. 2 היום בהרצאה החומר היום אינו למבחן, אבל חיוני לפרויקט הסיום תקשורת

26

)Sockets )2 דוגמה ל-

// Request the file from the server, using the HTTP protocoltoServer.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 outfor)String l = null; )l = fromServer.readLine)(( != null; ( System.out.println)l(;

// Close everything down when we're donetoServer.close)(;fromServer.close)(;s.close)(;

Page 27: החיים המקוונים Networking הרצאה מספר 14. 2 היום בהרצאה החומר היום אינו למבחן, אבל חיוני לפרויקט הסיום תקשורת

27

URL

מחלקת עזר המאפשרת לקבל משאבים ע"י ;*.URLimport java.netשימוש ב-

import java.io.*;

// Create some URL objects

URL url=null, url2=null, url3=null;

try {

url = new URL)"http://www.oreilly.com"(; // An absolute URL

url2 = new URL)url, "catalog/books/javanut4/"(; // A relative URL

url3 = new URL)"http:", "www.oreilly.com", "index.html"(;

} catch )MalformedURLException e( { /* Ignore this exception */ }

// Read the content of a URL from an input stream

InputStream in = url.openStream)(;

Page 28: החיים המקוונים Networking הרצאה מספר 14. 2 היום בהרצאה החומר היום אינו למבחן, אבל חיוני לפרויקט הסיום תקשורת

28

Server-side programming

?מהו קוד-שרת )רכיב תוכנה שרץ על שרת )מחשב מרכזי

ותפקידו לשרת לקוחות רביםהמקרה הנפוץ ביותר – אתרי אינטרנט

לג'אווה הרחבות שונות התומכות בכתיבת קודלצד השרת

-רוב ההרחבות מוגדרות בJ2EE: Java 2 Enterprise edition

-אנחנו נתמקד בServlets

Page 29: החיים המקוונים Networking הרצאה מספר 14. 2 היום בהרצאה החומר היום אינו למבחן, אבל חיוני לפרויקט הסיום תקשורת

29

Servlets

Servlet הוא מחלקה. מופעים של מחלקה זו יודעים לטפל בבקשות המגיעות לשרת ולייצר

תשובה בהקשר שלHttp, Servlet יודע לקבל בקשה

( ולהחזיר את הקובץ HTMLלקובץ )בד"כ דף המבוקש

Servlet אינו תכנית Java מלאה! אין לו זכות קיום עצמאית

אין לו שרות מחלקהmain!

Page 30: החיים המקוונים Networking הרצאה מספר 14. 2 היום בהרצאה החומר היום אינו למבחן, אבל חיוני לפרויקט הסיום תקשורת

30

Servlets

לקוח )למשל דפדפן( מבקש דף אינטרנט דינאמי1.

יטפל בהServletהשרת מפענח את הבקשה ומחליט איזה 2.

המטפל בה ומחזיר תשובה Servletהבקשה מועברת ל-3.לשרת

השרת מעביר את התשובה חזרה ללקוח )הדף מוצג 4.בדפדפן(

Client

Client

.

.

.

Server

Servlet Container(Tomcat)

Servlet

Servlet

.

.

.

Page 31: החיים המקוונים Networking הרצאה מספר 14. 2 היום בהרצאה החומר היום אינו למבחן, אבל חיוני לפרויקט הסיום תקשורת

31

Servlets

Servlets can be found in javax.servlet The main interface: Servlet

interface Servlet {void init(ServletConfig config); //initialize servletvoid service(ServletRequest req, //handle requests

ServletResponse res);void destroy(); //destroy this instance

}

Page 32: החיים המקוונים Networking הרצאה מספר 14. 2 היום בהרצאה החומר היום אינו למבחן, אבל חיוני לפרויקט הסיום תקשורת

32

Servletמחזור החיים של The Servlet Container A Servlettime

Constructor(class-dependant)

init

ServletConfig

Client

Client

service

destroy

.

.

.

Handling clients requests

ServletRequest

ServletResponse

Server

Page 33: החיים המקוונים Networking הרצאה מספר 14. 2 היום בהרצאה החומר היום אינו למבחן, אבל חיוני לפרויקט הסיום תקשורת

33

HttpServlet

מנשק עזר, מתאים רק לבקשותHTTP-מוגדר בjavax.servlet.http

interface HttpServlet {void service(HttpServletRequest req, //processes requests &

HttpServletResponse rep); //transfers to approp. Methodvoid doGet(HttpServletRequest req, //handle GET requests

HttpServletResponse res); void doPost(HttpServletRequest req, //handle POST requests

HttpServletResponse res); …

}

Page 34: החיים המקוונים Networking הרצאה מספר 14. 2 היום בהרצאה החומר היום אינו למבחן, אבל חיוני לפרויקט הסיום תקשורת

34

דוגמאות כמה

Page 35: החיים המקוונים Networking הרצאה מספר 14. 2 היום בהרצאה החומר היום אינו למבחן, אבל חיוני לפרויקט הסיום תקשורת

35

דוגמא עוד

Page 36: החיים המקוונים Networking הרצאה מספר 14. 2 היום בהרצאה החומר היום אינו למבחן, אבל חיוני לפרויקט הסיום תקשורת

סיום פרויקט

http://www.cs.tau.ac.il/courses/software1/exercises/final_project.htm

Page 37: החיים המקוונים Networking הרצאה מספר 14. 2 היום בהרצאה החומר היום אינו למבחן, אבל חיוני לפרויקט הסיום תקשורת

37

הפרויקט הגדרת

דפדפן תמונותמטרת הפרויקט הינה ליצור אשר מאפשר למשתמש לבחור ספרייה על

המחשב ומציג את התמונות שבה. בנוסף ניתנת למשתמש האפשרות "לשתף את התמונות", ז"א

להעלות סט תמונות לאתר בצורה אוטומטית )מתוך דפדפן התמונות( ולאחר מכן לראות את

,Explorerגלריית התמונות בדפדפן האינטרנט )Firefox.)...

Page 38: החיים המקוונים Networking הרצאה מספר 14. 2 היום בהרצאה החומר היום אינו למבחן, אבל חיוני לפרויקט הסיום תקשורת

38

טכניים פרטים

– 24.09.06מועד ההגשה מהציון בקורס10%הפרויקט יהווה )הפרויקט ייעשה בזוגות )בלבד?מה צריך להגיש

מסמך בן שני עמודים לפחות המתאר כיצד ניגשתםלפתרון הבעיה, תכנון החוזים וכו'

קובץZIP ובו הקוד של הפרויקט בצורה מסודרת )עם הוראות קומפילציה אם צריך(

JAR עובד ובו התכנית המקומית, וקישור לשרת בו ניתן לראות גלריות בדפדפן האינטרנט

Page 39: החיים המקוונים Networking הרצאה מספר 14. 2 היום בהרצאה החומר היום אינו למבחן, אבל חיוני לפרויקט הסיום תקשורת

39

תמונות – דפדפן ראשון חלק

המשתמש בוחר ספרייהמקומית על המחשב

במנשק הגראפי מוצגות כלהתמונות בספרייה זו )צלמיות -

Thumbnails ) ניתן ללחוץ לחיצה כפולה על

תמונה ולראות אותה בגדול יותר

בלחיצת כפתור ניתן לתת שםלסט התמונות הנוכחי ולשלוח

אותו לשרת באינטרנט )ראה חלק שני של הפרויקט(

Page 40: החיים המקוונים Networking הרצאה מספר 14. 2 היום בהרצאה החומר היום אינו למבחן, אבל חיוני לפרויקט הסיום תקשורת

40

טכניות – דרישות ראשון חלק

– מנשק גראפיSWT – קריאת והצגת תמונותJava I/O ו/או שימוש

SWTב- – שליחת התמונות לשרתJava Networking

Page 41: החיים המקוונים Networking הרצאה מספר 14. 2 היום בהרצאה החומר היום אינו למבחן, אבל חיוני לפרויקט הסיום תקשורת

41

תמונות – שרת שני חלק

עליכם לכתובServlet לפחות אחד( המספק את( השירותים הבאים

מקבל בקשות להעלאת תמונות, כל בקשה מורכבת משם, כל GIF או JPG PNGסט ומתמונה בינארית בפורמט

תמונה מאוחסנת בספרייה מקומית )על השרת( עם שם מתאים

Web serverServlet Container

AddPicture)pic data(

Page 42: החיים המקוונים Networking הרצאה מספר 14. 2 היום בהרצאה החומר היום אינו למבחן, אבל חיוני לפרויקט הסיום תקשורת

42

תמונות – שרת שני חלק

עליכם לכתובServlet לפחות אחד( המספק את( השירותים הבאים

מקבל בקשות להצגת תמונות, הבקשה יכולה להיותבקשה להצגת כל סטים המאוחסנים על השרת, מציג את שמות •

הסטים, מספר תמונות בכל סט... בקשה להצגת סט ספציפי )מזוהה לפי שם(, מציג צלמיות •

(Thumbnails של כל התמונות. לחיצה על תמונה תפתח את )התמונה המלאה בדף חדש

Page 43: החיים המקוונים Networking הרצאה מספר 14. 2 היום בהרצאה החומר היום אינו למבחן, אבל חיוני לפרויקט הסיום תקשורת

43

טכניות – דרישות שני חלק

השרותים יסופקו ע"יServlet שתכתבו )ניתן לכתוב שניים אם אתם מעדיפים(

-הServlet ים ירוצו כאן בפקולטה על שרת'Tomcat

התמונות המועלות ע"י המשתמש יאוחסנובספרייה מקומית

-כאשר יש בקשה להצגת תמונות, הServlet יכין ( מעוצב להצגה בדפדפן HTMLדף אינטרנט )

האינטרנט

Page 44: החיים המקוונים Networking הרצאה מספר 14. 2 היום בהרצאה החומר היום אינו למבחן, אבל חיוני לפרויקט הסיום תקשורת

44

הפרויקט הרחבת

אתם מוזמנים להרחיב את הגדרת הפרויקטולהוסיף יכולות נוספות נחמדות ומעניינות

...רעיונות ניתן לשאוב מFlickr – www.flickr.comGoogle Picassa -

http://picasa.google.com/Adobe Photoshop Album'וכו

Page 45: החיים המקוונים Networking הרצאה מספר 14. 2 היום בהרצאה החומר היום אינו למבחן, אבל חיוני לפרויקט הסיום תקשורת

!!בהצלחה