1 / 34

CS 317: Internet computing

Tutorial – Summer 2007. CS 317: Internet computing. The Tutorial Session . Total 6 weeks during the whole term. Two separate sessions 1 hour duration each Each session twice a week. T1A - Tue, Thu – 12:30 t0 13:30 T1B – Tue, Thu – 13:30 to 14:30 T1C – (has been blocked). Your TAs.

feng
Télécharger la présentation

CS 317: Internet computing

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Tutorial – Summer 2007 CS 317: Internet computing 317 Summer 2007 - Tutorial

  2. The Tutorial Session • Total 6 weeks during the whole term. • Two separate sessions • 1 hour duration each • Each session twice a week. • T1A - Tue, Thu – 12:30 t0 13:30 • T1B – Tue, Thu – 13:30 to 14:30 • T1C – (has been blocked) 317 Summer 2007 - Tutorial

  3. Your TAs • AnirbanSinha (you can call me Ani) • GitikaAggarwal • Kan Cai • We are all affiliated to the Distributed Systems Research group under the supervision of separate profs. 317 Summer 2007 - Tutorial

  4. Tutorial Organization • In strict correspondence with the assignments. • Three assignments, each of 2 weeks duration. • Similarly, each of us will lead 2 weeks of the tutorial . • First two weeks, I will concentrate on the first assignment. • Next two weeks, Gitika will discuss the second assignment. • Last two weeks, Kan will help you out with the last and final assignment. 317 Summer 2007 - Tutorial

  5. What else to discuss? • Questions related to the weekly quiz. • Midterm questions and their solutions . • Grading (only general ones) • be careful to ask individual grading questions offline. • Debugging/testing/good practices. 317 Summer 2007 - Tutorial

  6. What else to discuss? • General queries/doubts/comments. • We will try our best to answer the questions. • If unable, we will answer it in the WebCT. • Please try to attend the tutorial sessions. • It will help you a lot in solving the assignments and the quizzes. • 1% bonus for being there in the tutorial !  317 Summer 2007 - Tutorial

  7. What not to discuss • Direct solutions to assignments • We have not solved the problems ourselves. • Violation of UBC policies. • What are the likely questions for midterm/final/quizzes • We are not mind readers – we do not know what Dr. Vuong would like to give in the exams. • Anything that is not related to 317- Canucks game?! • I would like to discuss that offline though  317 Summer 2007 - Tutorial

  8. What if I get stuck?! • Use WEBCT discussion group! • It is more likely that one of your peers has faced the same problem and solved it! • Group discussion helps to come up with a solution together – much better than getting off-the-shelf answer from the TAs. • If totally stuck with no one knowing what to do, Kan and possibly me will be there to help. • Do *not* email problems to TAs individually *unless* you really think its necessary. 317 Summer 2007 - Tutorial

  9. Useful suggestions, tips … • Read carefully the text and the lecture slides. • Understand the basic concepts. Ask questions if in doubt. • Write small simple code to test out your concepts – an excellent way to learn new things. • Know what is exactly being asked for. • Don’t procastinate. • Distribute the work over a longer period – helps your mind to think and come up with ideas. 317 Summer 2007 - Tutorial

  10. Useful suggestions, tips … • If stuck, go back to the text and the lecture slides – do not cry out for help at the first sign of trouble. • Talk to peers, help is not far away! • Be patient and take a deep breath when things go wrong. 317 Summer 2007 - Tutorial

  11. End of Introduction • Any questions, concerns, worries? 317 Summer 2007 - Tutorial

  12. What you need for the assignments? • Single most important resource: • Beej's Guide to Network Programming, Using Internet Sockets.http://beej.us/guide/bgnet/ • All you will ever need is there in this book. • Study the examples and the network APIs carefully. 317 Summer 2007 - Tutorial

  13. Assignment 1: Proxy server • Work in groups of three • Smaller groups preferred but no bigger. • 15 hours total working time per team. (excluding review time). • If you have not read the assignment, here it is in nutshell: • Design a *caching* proxy server. • Design a mechanism for cleaning expired items from cache. 317 Summer 2007 - Tutorial

  14. Assignment 1: Proxy server • A proxy server works in between clients and the web server. • Helps several clients to share a single Internet connection – cost effective. • Also caches the requested pages so that pages that are revisited can be delivered immediately. • Firewalls and IP filters are generally set up along with the proxy servers. 317 Summer 2007 - Tutorial

  15. Basic Socket Programming • Client Side Programming: • Call socket(): get a new client socket • socket(PF_INET, SOCK_STREAM, 0): creates a new TCP/IP socket. • Fill in a structure with the server address & port: • structsockaddr_intheir_addr • Often we use gethostbyname() to obtain the remote server IP from its host name. 317 Summer 2007 - Tutorial

  16. Basic Socket Programming • Client Side Programming: • Connect() to the server. • connect(sockfd, (structsockaddr *)&their_addr, sizeof(structsockaddr)) : Connect to the remote client using the client side socket, sockfd obtained through call to socket() earlier. • Start Receiving data: • Call Recv(): recv(sockfd, buf, MAXDATASIZE-1, 0), where buf is the buffer where the data is received! 317 Summer 2007 - Tutorial

  17. Basic Socket Programming • Server Side Programming: • Generally servers “bind” to a specific well-known port. For example, all web-servers “bind” & then “listen” on port 80. • All clients (browsers) connect to this port by default. • Thus, server side programming involves a little more work. 317 Summer 2007 - Tutorial

  18. Basic Socket Programming • Server Side Programming: • Call Socket() to get a server side socket. Call is identical as before. • Fill in a structure as before. • structsockaddr_inmy_addrmy_addr.sin_family = AF_INET; my_addr.sin_port = htons(MYPORT); my_addr.sin_addr.s_addr = INADDR_ANY; memset(my_addr.sin_zero, '\0', sizeofmy_addr.sin_zero); • Fill in the structure with local port (MYPORT) and local server address (INADDR_ANY). 317 Summer 2007 - Tutorial

  19. Basic Socket Programming • Server Side Programming: • Call bind() : It will bind the server socket to the specific port. • This is done only on the server side, in order to listen on a specific port. • bind(sockfd, (structsockaddr*)&my_addr, sizeof(structsockaddr))Here, sockfd is the socket file descriptor obtained from call to socket() and my_addr is the same as discussed before. 317 Summer 2007 - Tutorial

  20. Basic Socket Programming • Server Side Programming: • Now “listen” for connections from clients: • listen(sockfd, BACKLOG), where backlog is the number of outstanding connection requests to queue. Generally, its something around 10 to 20 depending on the server load expected. • Now “accept” new connections from clients. • Accept() blocks (in general, unless you set the socket into non-blocking mode) until a client connect()s to a server. • It returns a new socked file descriptor for the corresponding connection. • Also fills astructsockaddr_inwith information about the remote client address. 317 Summer 2007 - Tutorial

  21. Basic Socket Programming • Server Side Programming: • There are two ways to deal with multiple incoming client requests: • Set the server side socket into non-blocking mode, poll the socket at certain intervals for any outstanding requests from clients and dispatch an event handler to service the request – event driven programming. • Fork a new thread to service the request and the main thread keeps accepting new connections in a tight loop: Multithreaded programming. 317 Summer 2007 - Tutorial

  22. Basic Socket Programming • Server Side programming: • Unless you really know event driven style, I would suggest you to use multithreaded style • Simpler to understand and code • You are familiar with threaded programming already from 213. • The thread processing client requests can now send() or recv() data from clients. • If you really want to serve only one client, no need of threads. Just one main thread can do all the work. 317 Summer 2007 - Tutorial

  23. Basic Socket Programming • General APIs • Close() and shutdown() : Used to de-allocate the socket resources and shut down the connection. • Gethostname() : get the local host name of the machine. • fcntl(sockfd, F_SETFL, O_NONBLOCK): - set a socket in non-blocking mode. More details on blocking issues in the guide. • setsockopt(listener,SOL_SOCKET,SO_REUSEADDR,&yes,sizeof(int)) : to get rid of “address already in use message” 317 Summer 2007 - Tutorial

  24. Basic Socket Programming – Tips and Suggestions • Read the APIs carefully. • Use man pages when help is needed with APIs. • Always check for return values and take appropriate actions on errors. • Work in steps – do not try to do everything all at once. • Use tools like telnet, ftp etc to test run your program before proceeding to next steps. 317 Summer 2007 - Tutorial

  25. Assignment 1: Proxy serverBasic Idea • Create a server socket and listen for incoming client request. • When a new client connect()s, fork a new thread to process the client request. • Parse for remote server address from the client request. • Create a client socket and connect to the remote server. • Forward your client’s request to the remote server. Send back response (separate threads?). Keep doing it in a loop or terminate after one iteration (?) 317 Summer 2007 - Tutorial

  26. Assignment 1: Proxy serverCaching • Cache requested pages. No need for elaborate caching scheme. • If requested page is already in cache, do not go to the server. • Terminate when either remote server or your client disconnects. 317 Summer 2007 - Tutorial

  27. Assignment 1: Proxy serverCache Invalidation & Cleanup • Objects in cache expire with time. • Use a suitable mechanism to find expired items. • Fork a new thread that cleans up expired items from cache. • The expired time limit is a command line parameter that is provided by the user. 317 Summer 2007 - Tutorial

  28. Discussion … (5/10/07) • Concurrency Issues • how many threads are needed? • Caching Issues • How to detect expired items? • Persistent HTTP connection issues. • How to detect a change in requested server address etc … • How robust should be your code?! 317 Summer 2007 - Tutorial

  29. Discussion … (5/15/07) • Tutorials T1A and T1B will probably be combined into a single one … • Any problems with anyone here? • Any other administrative issues? 317 Summer 2007 - Tutorial

  30. Discussion … (05/15/07) • How’s things are with WebCT? • Questions related to text (eg. prop & trans delay) • They are in the text itself! • Besides TAs, you can ask Son the next day in class. • Assignment 1 is due this Thursday • Issues, problems, questions? ... • Browser configuration (demo) 317 Summer 2007 - Tutorial

  31. Discussion … (05/17/07) • Tutorials T1A and T1B has been merged! • Any conflicts? • Do not forget to check the attendance sheet in my homepage later and report any inconsistencies immediately. • Final set of updated slides will be posted today. • Gitika takes over from next week • Will discuss assignment 2. 317 Summer 2007 - Tutorial

  32. Discussion … (05/17/07) • Assignment 1 is due next Tuesday, 22nd of May. • No more discussion on Assignment 1 after today! • I will try to grade Assignment 1 as soon as I can, according to the guidelines provided by Son. • Make sure you put the names of *all* group members in the source code itself. • Use electronic handin – no written material. • All members of a group will be treated uniformly. • Be patient for the grades and comments. • I will try to be lenient.  yay!!!! 317 Summer 2007 - Tutorial

  33. Discussion … (05/17/07) • Grading (Assignment 1) … • If you have questions on grading, you can send me email directly (anirbans@cs.ubc.ca) BUT: • Send all your questions in a single mail all at once. • Only one mail per group will be answered. • Write names, stud ID and CWL of all group members in email. • No later than 5 days after the grades/comments has been sent out. • Check instructor’s policy in the course webpage. • Any response will follow the policy guidelines in the course webpage. 317 Summer 2007 - Tutorial

  34. Discussion … (05/17/07) • Quiz 1 will be graded by all TAs together. • Have patience. • Any question on Quiz1 – ask any TA during the tutorials. • Grades will be posted in the WebCT as soon as possible. • That’s all from me! • Any questions, comments?? 317 Summer 2007 - Tutorial

More Related