Coursework In2011
Coursework In2011
This coursework assesses your ability to use what you have learnt about
networking to build functioning software that interacts with network services.
This includes the following:
Because this is a second year unit, we will assume that you have the following
skills from the first year:
You will not get marks for these but you need to know them to do this course-
work. If you do not feel confident about these please revise your notes from last
year and talk to the staff running your practical sessions or your personal tutor.
1
1 Tasks
• Download the 2D#4 RFC and read it carefully.
• Download the starting git repository, unzip it and carefully read the code.
• Complete TemporaryNode.java so that it can:
2
2 Mark Scheme
This is individual coursework.
The programs that you submit must be your work. You must not use generate
AI tools to create the code for you. You must not share your code with other
students. You must not make your code available to other students such as by
making it a publicly accessible github repository.
When using the test network, your code may interact with other student’s
programs. This is acceptable as a form of testing.
Part of the assessment of your two objects will be automated. Your objects
will be used in a larger system. For this it is vital that you:
• Submit Java files that build on the course virtual lab machines.
TemporaryNode.java
• Connect to the 2D#4 network (3)
• Find the full node with the hashID closest to the given hashID (3)
• Store a (key, value) pair correctly handling all responses (3)
FullNode.java
• Connect to the 2D#4 network and notify other full nodes of your node’s
address (1)
• Accepting incoming connections (3)
3
Wireshark Does your recording show all of the features working correctly (5)
Robustness and Quality A final (13) marks will be awarded for code quality
and robustness. This includes handling of error conditions, network faults and
protocol errors.
3 Deadline
Sunday March 24th 2024 17:00
4
4 Hints
• There will be a number of nodes running on the virtual lab network. Use
these to test that your code works and to record your program working.
• When understanding the RFC, you can use netcat to interact with the
nodes running on the test lab. If you don’t know how to start then see
if you can try to do what TemporaryNode.java and FullNode.java need
to do by hand using netcat. Once you understand the protocol it should
be straight-forward to write the code.
• There are three testing programs which show how the objects you are
creating can be used. You don’t have to use these but they may make
your testing easier.
• You can also use netcat to send the contents of a file via a TCP connection
which allows you to automate testing to some degree.
• The course virtual lab machines has a command sha256sum which allows
you to compute the SHA-256 sum of any file.