תקשורת ומחשוב תרגול סוקטים.

Slides:



Advertisements
Similar presentations
Completeness and Expressiveness. תזכורת למערכת ההוכחה של לוגיקה מסדר ראשון : אקסיומות 1. ) ) (( 2. )) ) (( )) ( ) ((( 3. ))) F( F( ( 4. ) v) ( ) v ((
Advertisements

ממיבחניםC שאלות ++.
תוכנה 1 סמסטר א ' תשע " ב תרגול מס ' 7 * מנשקים, דיאגרמות וביטים * לא בהכרח בסדר הזה.
מבוא למדעי המחשב לתעשייה וניהול
1 Formal Specifications for Complex Systems (236368) Tutorial #4 Refinement in Z: data refinement; operations refinement; their combinations.
Intro To Secure Comm. Exercise 7. Solution (review of last lesson) Assuming  CEO1:  CEO2: Use both transport mode and tunnel mode IPSec.
Referring to Java API Specifications
מערכות הפעלה ( אביב 2004) חגית עטיה © 1 תהליכים - דייאט : חוטים  מוטיבציה  חוטי משתמש וחוטי מערכת  תמיכת מערכת ההפעלה  דוגמאות.
מערכות הפעלה ( אביב 2009) חגית עטיה © 1 מערכות קבצים מבוזרות  מבוא  מבנה כללי  דוגמה : Network file system  דוגמה : Google file system.
הגנה במערכות מתוכנתות חורף תשס"ד הרצאה 7 Firewalls ספרות : Chapman, Zwicki. Building Internet Firewalls. O’Reilly, Cheswick, Bellovin. Firewalls.
הגנה במערכות מתוכנתות חורף תשס"ד הרצאה 6 מבוא לרשתות מודל TCP/IP איומים על רשתות.
מערכות הפעלה ( אביב 2008) חגית עטיה © 1 מערכות קבצים מבוזרות  מבוא : שקיפות ושמירת מצב.  דוגמה : Network File System.
A smart phone application for sales agents בס"ד.  סוכני מכירות מגיעים ללקוח ומבצעים הזמנות ע " פ דרישות הלקוח  סוכן המכירות נעזר בקטלוג מוצרים, טלפון.
מנגנון תקשורת ב-Linux סכמת שרת לקוח: client/server
תרגול 8.5 – מודל השכבות, מבוא ל-TCP/IP
פה מחלקים דיסקים ?. platter surface Reading head tracks sectors cylinder Magnetic Disk rotating מבנה הדיסק הדיסק מחולק לצלחות (platters) לכל צלחת יש ראש.
חורף - תשס " ג DBMS, Design1 שימור תלויות אינטואיציה : כל תלות פונקציונלית שהתקיימה בסכמה המקורית מתקיימת גם בסכמה המפורקת. מטרה : כאשר מעדכנים.
מכון ויצמן למדע - שמוליק מתוך 8 חישוב מקבילי ומבוזר מה זה יחידה חמישית במדעי המחשב... n ענף מתקדם במדעי המחשב העוסק במערכות ממוחשבות מרובות ישויות.
מערכות הפעלה ( אביב 2004) חגית עטיה © 1 מערכות קבצים מבוזרות  מבוא : שקיפות ושמירת מצב.  דוגמה : Network File System.
מערכות הפעלה ( אביב 2009) חגית עטיה © 1 אפליקציות שרת - לקוח  פרדיגמת שרת לקוח  מושג ה socket  מבנה שרת - לקוח  קצת יותר על רשתות.
אוקטובר מבנה מערכות הפעלה אוקטובר אסף שוסטר שקפים ע"פ אלן אזגורי/חגית עטיה.
ספר סקיצות ספר סקיצות קלאסי עם יכולות ממוחשבות. ספר סקיצות רגיל  יתרונות : נוח לנשיאה, מהיר ונוח לעבודה, עמיד.  חסרונות : הכול ידני, קשה לקבל דיוקים.
מערכות הפעלה ( אביב 2009) חגית עטיה © 1 מערכות הפעלה קורס מס '
מערכות הפעלה ( אביב 2006) חגית עטיה © 1 תהליכים - דייאט : חוטים  מוטיבציה  חוטי משתמש וחוטי מערכת  תמיכת מערכת ההפעלה  דוגמאות.
מערכות הפעלה ( אביב 2009) חגית עטיה © 1 תהליכים - דייאט : חוטים  מוטיבציה  חוטי משתמש וחוטי מערכת  תמיכת מערכת ההפעלה  דוגמאות ושימושים.
FFinder Application on Android OS by Roman Nassimov & Evgeny Erlihman Final presentation.
1 Formal Specifications for Complex Systems (236368) Tutorial #5 Refinement in Z: data refinement; operations refinement; their combinations.
Formal Specifications for Complex Systems (236368) Tutorial #6 appendix Statecharts vs. Raphsody 7 (theory vs. practice)
תכנות תרגול 6 שבוע : תרגיל שורש של מספר מחושב לפי הסדרה הבאה : root 0 = 1 root n = root n-1 + a / root n-1 2 כאשר האיבר ה n של הסדרה הוא קירוב.
מרץ 2002אלן אזאגורי ©1 מבנה מערכות הפעלה מרץ אלן אזאגורי (מרצה אחראי) ארז חדד.
תהליכים  מהו תהליך ?  מבני הנתונים לניהול תהליכים.  החלפת הקשר.  ניהול תהליכים ע " י מערכת ההפעלה.
תהליכים - דייאט : חוטים  מוטיבציה  חוטי משתמש וחוטי מערכת  תמיכת מערכת ההפעלה  דוגמאות.
הגנה במערכות מתוכנתות תרגול 12 – אבטחה ברמת ה-IP – IPsec הערה: שקפים אלה אינם מהווים תחליף לחומר התרגולים המפורסם באתר הקורס, ומשמשים כעזר הוראה בלבד.
מרץ 2002אלן אזאגורי ©1 חוטים Threads. מרץ 2002 אלן אזאגורי ©2עמוד נושאים הגדרות –חוטים –חוטים לעומת תהליכים תמיכת מערכת ההפעלה בחוטים דוגמאות –Mach –Windows.
מערכות הפעלה ( אביב 2006) חגית עטיה © 1 סיכום הקורס.
תכנות מונחה עצמים Object Oriented Programming (OOP) אתגר מחזור ב' Templates תבניות.
החיים המקוונים Networking הרצאה מספר היום בהרצאה החומר היום אינו למבחן, אבל חיוני לפרויקט הסיום תקשורת בין מחשבים תקשורת TCP/UDP פרוטוקול HTTP ושימושיו.
A. Frank File Organization Introduction to Pile File.
תפקידים פונקציונליים עיקריים של WINDOWS ממשק גרפי : הפעלת תכניות ומתן פקודות בעזרת כלים גרפיים ותפריטים. הפעלה בו - זמנית של מספר תכניות : * חלוקת זיכרון.
1 By Yuval Sittin & Shay Schlafman Technion 2 יעדי הפרוייקט בנית כלי תקשורת רב-תכליתי בדגש על פשטות הפעלה. הכרת השלבים בתכנון פרויקט תוכנה. לימוד שפת.
מערכות הפעלה ( אביב 2004) חגית עטיה © 1 תהליכים  מהו תהליך ?  מבני הנתונים לניהול תהליכים.  החלפת הקשר.  ניהול תהליכים ע " י מערכת ההפעלה.
1 Spring Semester 2007, Dept. of Computer Science, Technion Internet Networking recitation #3 Internet Control Message Protocol (ICMP)
רשת האינטרנט ויישומיה האינטרנט היא הרשת הגדולה ביותר בעולם המקשרת בין מחשבים ואנשים המפעילים אותם במדינות רבות בעולם. ב העריכו שהאינטרנט מקשרת קרוב.
Safari On-line books. מה זה ספארי ספארי זו ספריה וירטואלית בנושא מחשבים היא כוללת יותר מ כותרים כל הספרים הם בטקסט מלא ניתן לחפש ספר בנושא מסוים.
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 1 פרק 7 ISP דוגמא נוספת.
Text to speech In Mobile Phones איתי לוי. הקדמה שימוש בהודעות טקסט על המכשירים הסלולארים היא דרך תקשורת מאוד פופולארית בימינו אשר משתמשים בה למטרות רבות,
פיתוח מערכות מידע Class diagrams Aggregation, Composition and Generalization.
מהי אפיסתזה ? Epistasis come from the Greek –Epistasis come from the Greek – –“epi” means “upon” (מעל) –“histani” means “to place” (לעמוד) So it means.
1 תרגול 11: Design Patterns ומחלקות פנימיות אסף זריצקי ומתי שמרת 1 תוכנה 1.
שיתוף PDT בין חוטים PDT Thread A Process Descriptor File Object 1 File Object 2 File 1 File 2 pthread_create Thread B Process Descriptor ה PDT משותף לכל.
עקרונות תכנות מונחה עצמים תרגול 11: OOP in C++. Outline  Where do the objects live ?  Inheritance  Slicing  Overriding vs Shadowing.
מבוא לתקשורת נתונים מודל 7 השכבות Protocol‏ (TCP/IP)
אביב תשס " ה JCT תיכון תוכנה ד " ר ר ' גלנט / י ' לויאןכל הזכויות שמורות 1 פרק 5 תרשימי מצבים Statecharts למחלקות תגובתיות Reactive Classes הקדמה ודוגמא.
תקשורת מחשבים ואלגוריתמים מבוזרים
מספרים אקראיים ניתן לייצר מספרים אקראיים ע"י הפונקציה int rand(void);
תקשורת ומחשוב תרגול 9 CMD vs Networking.
תקשורת מחשבים ואלגוריתמים מבוזרים
תקשורת מחשבים ואלגוריתמים מבוזרים
תקשורת ומחשוב תרגול 1 IP, Classes and Masks.
תרגול 10 – חומות אש – Firewalls
פרוקטוז, C6H12O6 , חד-סוכר מיוחד
ממשקים - interfaces איך לאפשר "הורשה מרובה".
© Keren Kalif Servlet קרן כליף.
מנחה אקדמי : ד"ר יובל אלוביץ
הנעה חשמלית.
תהליכים-דייאט: חוטים מוטיבציה חוטי משתמש וחוטי מערכת
Shell Scripts בסביבת UNIX
תוכנה 1 תרגול 13 – סיכום.
מבוא למערכות מידע פרק 1.
פרק 3 - תהליכים.
Presentation transcript:

תקשורת ומחשוב תרגול סוקטים

מודל Client-Server במודל זה תמיד השרת תמיד מחובר וממתין לבקשות של לקוחות שרת: תמיד מחובר, בעל כתובת IP ידועה, לעתים יש צורך במספר שרתים לתמיכה בכמות בקשות גדולה. השרת ממתין לבקשה מהלקוח ולרוב אינו יכול ליזום תקשורת באופן עצמאי. לקוח: מתקשר עם שרת, יכול להיות מחובר פרקי זמן, יכול להיות עם כתובת IP משתנה, במודל זה הלקוחות אינם מתקשרים ישירות זה עם זה. תהליך (Process) –מופע של תוכנית שמנוהל על ידי מערכת הפעלה (עצמאות מלאה בין תהליכים). שני תהליכים באותו מחשב מתקשרים דרך מערכת ההפעלה. בין מחשבים שונים, תהליכים מתקשרים דרך הרשת.

Ports ,IP בד"כ במחשב פועלים מספר סוגי יישומים בו-זמנית (בעזרת מערכת הפעלה). כיצד מחשב יודע לסווג את הנתונים המתקבלים, ליישומים השונים הפועלים בו-זמנית? הפתרון הינו Logical Port (יקרא port) באורך 16 סיביות 16 סיביות יש אפשרות למקסימום 2^16=65536 תהליכים במחשב מסוים). מספרי port בתחום 0-1023 שמורים עבור שירותים מוסמכים ונקראים . well-know ports IP Address – כתובת של 32 ביט המאפשרת לזהות מחשב ברשת.

Socket כדי שתהליך יוכל לקבל/לשולח מידע לרשת/מהרשת חייבים לה "צינור" הנקרא Socket שילוב של כתובת IP עם מספר Port מגדיר כתובת שקע (Socket Address) זוג כתובות השקע מגדיר קשר בין שני קצות הקשר (בין מחשבים, בין יישומים וכו'). במילים אחרות, בתוך host מסוים, ה-Socket הוא ממשק המתווך בין רמת ה- Applicationורמת ה-Transport. דוגמא לכך שלשכבת ה-Application קיימת השפעה על שכבת ה- Transport בחירת הפרוטוקול בשכבת התעבורה

רמת Transport כל אפליקציה דורשת שירות שונה מרמת ה-Transport : Connection less – שירות שמתאים לאפליקציות שמאפשרות איבוד מידע מועט (אפליקציות של אודיו) וצריכות מהירות - Connection orientedשירות שמתאים לאפליקציות שאינן יכולות להתמודד עם איבוד מידע (למשל, העברת קבצים).

TCP vs UDP אפליקציות שונות מבקשות שירות שונה מרמת ה- Transport: יתרונות – הפרוטוקול מספק תעבורה אמינה: החבילות מגיעות שלמות, מסודרות לשכבת האפליקציה הפרוטוקול דורש הקמת קשר מסודר בין מחשבים, משתמש במנגנוני בקרת זרימה ובקרת גודש (עומס) חסרונות – נשלח הרבה DATA נוסף, איטי יחסית דוגמא - שימוש ביישומי HTTP, FTP, Telnet תקשורת UDP יתרונות – החבילות מגיעות מהר, תקורה נמוכה (overhead) חסרונות – העברת מידע לא אמינה, חבילות יכולות להגיע פגומות או אפילו לא להגיע ,אין סדר ברמת האפליקציה דוגמא - DNS

Client-Server application - TCP

Client-Server application -TCP חבילת java.net מספקת שתי מחלקות לייצוג קשר בין תוכנית לקוח (Socket) ותוכנית שרת (ServerSocket). הלקוח והשרת יכולים לתקשר על ידי כתיבה או קריאה מהסוקטים שלהם.

צד הלקוח –TCP Socket יצירת החיבור: Socket soc = new Socket(IP, PORT); יוצר את ההתחברות לכתובת IP בפורט PORT פתיחת סאשן לקריאת נתונים: _reader = new BufferedReader( new InputStreamReader( soc.getInputStream())); פתיחת סאשן לכתיבת נתונים: _writer = new PrintWriter ( soc.getOutputStream(), true); http://java.sun.com/docs/books/tutorial/netw orking/sockets/index.html

צד הלקוח -TCP Socket קריאת נתונים מהסאן: reader.readLine() הערה: הקריאה הינה מסונכרנת ולכן יחכה הthread יחכה עד קבלת ההודעה כתיבת נתונים לסאשן: _writer.println(String str); נשים לב כי חלק מהפקודות מחכות לקבלת הנתונים לכן יש לממש אותן בthread נפרד

צד השרת -TCP ServerSocket פתיחת האזנה בשרת: ServerSocket serv = new ServerSocket(PORT); פתיחת ההאזנה בפורט PORT אישור תקשורת נכנסת: serv.accept() פלט הפונקציה הינה socket שבעזרתו נתקשר עם הלקוח

Serv.accept()– for how long ?

Serv.accept()– for how long serv.setSoTimeout(1000); התוכנית תמתין כ-1000 מילישניות ותמשיך לרוץ socket.setSoTimeout(0); התוכנית תמתין לעולם. אם לא מוגדר ה TimeOut כאילו מוגדר ל 0. במידה ולא התקבל חיבור נזרק SocketTimeoutException use try & catch to handle it !

InetAddress איך נתרגם כתובות? “www.google.com” “http://yfg.org/new/israel/politics/bibi.html” “192.168.0.1” InetAddress _address = InetAddress.getByName(“www.google.com”); InetAddress _address = InetAddress.getByName(“192.168.0.1”); returns: IP address for the given host name.

Code example (In the Moodle)

טיפים למטלת CHAT

מבנה ה-client - המלצות כדאי להפריד בין חלק ה-GUI לבין הלוגיקה של הchat כדאי לבנות תהליך נפרד לכל פעולה שדורשת "תשומת לב" מלאה או כל מטודה שדורשת המתנה.

מבנה ה-server – sockets מבנה השרת יכיל מספר חלקים: חלק ה- GUI (אין יותר מדי מה להשקיע). חלק המקשיב להתחברויות חדשות – תהליך נפרד. Thread חדש נוצר עבור כל לקוח המתחבר לרשת, בתור הפרמטר הוא מקבל את ה-socket שנוצר מהתהליך העיקרי ואחראי לקבלת הודעות ממנו Thread שאחראי לשליחת הודעות לכל הלקוחות, לכן יחזיק מערך של socket ורשימה של הודעות לשלוח

מבנה ה-server – ניהול תהליכים כדאי לבנות מחלקה שלמה שתנהל את כל המערכת. למחלקה יש מספר תפקידים: א) להוסיף לקוח חד, ב) לסגור קשר ללקוח שהתנתק ג) להעביר הודעות מאחד לשני ולכולם יחד ד) לאפשר מידע על לקוחות המחוברים לשרת. וזאת ע"י שימוש בThread הקודמים

Client-Server application - UDP

A Datagram Packet - UDP לפי פרוטוקול UDP תקשורת ברשת מתבצע ע"י שליחת וקבלת צרורות נתונים (datagrams) בין נקודות קצה בקשר. חבילת java.net מספקת שתי מחלקות לייצוג תקשורת ברשת לפי פרוטוקול UDP: DatagramPacket, DatagramSocket אובייקט DatagramPacket המכיל נתונים ומידע טכני. הבנאי: DatagramPacket packet = new DatagramPacket( byte[] arr, int arr.length, InetAddress address, int port);

DatagramPacket - UDP דוגמת הבנאי לקבלת חבילת המידע: byte[] buf = new byte[256]; DatagramPacket packet = new DatagramPacket(buf, buf.length); דוגמת הבנאי לשליחת חבילת המידע: InetAddress address =new InetAddress() לקוח שולח חבילהint port = 4445; // DatagramPacket(buf, buf.length, address, port);

Datagram socket מצד אחד שרת מתקשר עם כל לקוחות ומצד שני לקוח מתקשר עם שרת דרך אובייקט DatagramSocket DatagramSocket soc = new DatagramSocket (); לקוח מקבל פורט פנוי ממערכת ההפעלה new DatagramSocket (4445); שרת לוקח את הפורט ממערכת ההפעלה soc.send(DatagramPacket packet); שלוח את החבילה ליעד הרשום לה. soc.receive(DatagramPacket packet); מקבל את החבילה לתוך packet

Soc.receive(packet) – for how long ?

soc.receive(packet) – for how long socket.setSoTimeout(1000); התוכנית תמתין כ 1000 מילי שניות ותמשיך לרוץ socket.setSoTimeout(0); התוכנית תמתין לעולם. אם לא מוגדר ה TimeOut כאילו מוגדר ל 0.

Code example (In the Moodle)