⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 default.htm

📁 this gives details of the network programming
💻 HTM
字号:
<HTML><HEAD><TITLE>NetProg Homework 3</TITLE><LINK rel=stylesheet type="text/css" HREF=../../style/proj.css></HEAD><BODY BGCOLOR=WHITE MARGINHEIGHT=0 MARGINWIDTH=0 TOPMARGIN=0  LEFTMARGIN=0><TABLE bgColor=#8899aa border=0 cellPadding=4 cellSpacing=0 width="100%">  <TR>    <TD class=title>&nbsp NetProg 2002 HW3</TD> </TR><TR BGCOLOR=BLACK><TD CLASS=menu> &nbsp &nbsp<A CLASS=menu HREF=#desc>Project Description</A> &nbsp &nbsp |&nbsp &nbsp<A CLASS=menu HREF=#deliv>Deliverables</A> &nbsp &nbsp |&nbsp &nbsp<A CLASS=menu HREF=#grading>Grading</A>  &nbsp &nbsp |&nbsp &nbsp<A CLASS=menu HREF=#submitting>Submission</A> &nbsp &nbsp |&nbsp &nbsp<A CLASS=menu HREF=#notes>Notes & Hints</A></TD></TR></TABLE><DIV CLASS=page><H2 style="font-size: 16pt; color:black; text-align:center;">Homework 3: TFTP Server<BR>Due Date for Local and live remote students: Fri, March 1st (by11:59PM)<BR>Due Date for Tape and Videostream Delay students: Fri, March 8th</H2><H4 ALIGN=CENTER>Late Penalty: 10 points per day (out of 100)</H4><H4 ALIGN=CENTER>Submit to <I>netprog-submit@cs.rpi.edu</I> with the subject line "3"<BR>Complete Submission instructions are <A HREF=#submitting>here</A></H4><A NAME=desc><HR></A><P>Your assignment is to write a UDP based TFTP Server.Your server must beable to handle Read Requests that use transfer mode "octet". The focusof this project is UDP programming, including timeouts andretransmissions, not on supporting all of TFTP. Your server must workwith standard TFTP clients (such as the program <CODE>tftp</CODE>found on the CS Solaris machines). Refer to <AHREF=../../rfcs/rfc1350.html>RFC 1350</A>for a description of the TFTP protocol.</P> <H3>What is and is not required:</H3><UL><LI><P>Your server must use a port number specified as the first command lineparameter (from argv[1]).  Your program will be run by an automatedsystem that requires that your server understand that it should usethe port number specified on the command line!</P></LI><LI><P>Your server must handle Read Requests. You should reject anyrequest for a file whose name starts with a '/' or '.'. Legalfilenames should be interpreted as being relative to the current workingdirectory of the server process.</P></LI><LI><P>Your server must support the file transfer mode"octet" (binary transfer).</P></LI><LI><P>Your server does <B>not</B> need to support Write Requests</P></LI><LI><P>Your server does <B>not</B> need to support "ASCII" transfermode.</P></LI><LI><P>Your server must support the TFTP protocol including timeout and retransmission. There must be a maximum number of retries so thatyour server eventually gives up on the client if nothing is receivedfor a long time. I'd suggest using a maximum of 5 retries, with atimeout for each of 5 seconds.</P></LI><LI><P>Your server must be concurrent. We must be able to transferfiles from multiple clients at the same time.</P></LI><LI><P>We must not be able to kill your server by sendingsilly stuff from the client (including very long messages).</P></LI><LI><P>Your server must not have memory leaks or create zombieprocesses.</P></LI></UL><H3>Server Output</H3><P>Your server should emulate the "trace" functionality of TFTPclients, that is - you should print one line to stdout every time a TFTP message isreceived or sent by your server. An example (just to give you an ideaof the kind of info expected):</P>  <TABLE CELLPADDING=4 BGCOLOR=CYAN BORDER=1><TR><TD><PRE>&gt; hw3 1234 RRQ received from 128.213.8.240, filename: fooDATA message sent to 128.213.8.240, block #0ACK received from 128.213.8.240, block #0 DATA message sent to 128.213.8.240, block #1TimeoutDATA message sent to 128.213.8.240, block #1ACK received from 128.213.8.240, block #1</PRE>  </TD></TR></TABLE><HR><A NAME=deliv><H3>Deliverables</H3> </A><P>You should submit all source code files necessary to build your server. If youuse a Makefile please include it, if not, you need to includeinstructions on how to build your server. Your submissionmust also include a file named READMEthat includes the following: </P><UL><LI><P>Your Name</P></LI><LI><P>A list of files and a 1-line description of the contents of each file. </P></LI><LI><P>References to any borrowed code (the source code must also include this information).<P></LI><LI><P>A description of any known problems. If you think you know how to solve the problem(s) and simply didn't have time to do so - let us know how!</P></LI><LI><P>Anything else you think might be useful to us, such as what youlearned, what you had trouble with, if the project was too hard or tooeasy, etc.</P></LI></UL><A NAME=grading><H3>Grading</H3></A><P>Your server will be tested to make sure it works properly. We willuse a test client that will do it's best to mess up your server bysending nonsense, occasionally ignoring DATA messages (simulating alost datagram), responding with inappropriate ACKS, quitting inthe middle of a transaction, etc. We will compare the file received bythe client to the original file to make sure the transfer workedproperly (size and content must match!).</P><P>Your testing should include using a tftp client. You can use ^Z tosuspend the client in the middle of a (long) file transfer - this cansimulate what would happen if a datagram was lost (your servershould timeout waiting for an ACK and resend data).</P> <P>Points will be awarded as follows (partial credit is available foreach item): </P><TABLE BORDER=0><TR> <TH WIDTH=60% ALIGN=LEFT>File transfer works properly with a single, polite client.     </TH> <TD>30%</TD></TR><TR> <TH ALIGN=LEFT>Server works properly with multiple (concurrent)     polite clients.</TH> <TD>15%</TD></TR><TR> <TH ALIGN=LEFT>Server works properly (resumes a transfer     properly) when a few datagrams are lost.</TH> <TD>15%</TD></TR><TR> <TH ALIGN=LEFT>Server works properly with clients that sendgarbage (server doesn't crash, recovers ongoing transfers when possible) </TH> <TD>15%</TD></TR><TR> <TH ALIGN=LEFT>Style/readability</TH> <TD>25%</TD>  <TR> </TABLE>  <P><B>IMPORTANT NOTES ON GRADING:</B></P><DIV CLASS=in><LI><P>We will deduct points for memory leaks and zombies!</P></LI></DIV><A NAME=submitting><H3>Submitting your files</H3></A><P>Submission of your homework is via email, the general idea is tosend an email message with all your files as attachments. There is an automated email submission system that will respond to yoursubmission right away, so you will have a record that we got yourfiles. </P><P>All projects must be submitted via email to <AHREF=mailto:netprog-submit@cs.rpi.edu><I>netprog-submit@cs.rpi.edu</I></A>. Thesubject line of the submission message should contain a single numberindicating the project number (3 for HW2). You mustinclude your files as attachments, feel free to send a zip-file or atar file.<P><B>Don't send compiled code!</B></P><P>You can expect a return email indicating receipt of your projectsubmission immediately. This receipt will include a list of all thefiles that were successfully extracted by the submission script -please look over the receipt carefully to make sure your submissionworked.</P><P><B>Multiple Submissions: </B> You can resubmit up to 10 times foreach project, we will always grade the last submission received unlessyou tell us otherwise.</P><A NAME=notes><H3>Notes, Hints and Links</H3></A><UL>  <LI><P>Read the <A HREF=../../rfcs/rfc1350.html>RFC</A>!</P></LI>  <LI><P>There is a TFTP server running on monte.cs.rpi.edu (on port  69) that you   can play with using any tftp client. The server can send 3  different files, named <CODE>small</CODE>, <CODE>medium</CODE> and  <CODE>large</CODE>. There are copies of these file on the CS  machines at <CODE>~hollingd/tftp</CODE>.</P></LI> </UL></BODY></HTML>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -