Network Application Development
Network Application Development
项目类别:计算机

Hello, dear friend, you can consult us at any time if you have any questions, add  WeChat:  zz-x2580


Course Work 1 – Network Application Development


Coursework Weight: 60%

In this coursework, you will develop a number of small networking-based applications. These

are designed to increase your competency in developing socket-based applications, as well as

increasing your familiarity with a number of key technologies and measures. These are in

widespread use, and commonly deployed to evaluate networks and to provide services over

them.

Coursework 1 is split into a number of smaller tasks: ICMP Ping Client, Traceroute Client, Web

Server and Web Proxy. Importantly, the tasks build upon each other; the work you do in Task

1.1 will be fundamental to Task 1.2, and similarly, the work completed in Task 2.1 will greatly

assist you in Task 2.2. Marks will be awarded for meeting certain criteria within each task.

These are outlined in more detail within each task description. You are encouraged to

progress as far as possible with each task. Do note however, that Task 1 and Task 2 are

independent; attempting both of them is advised, even if you do not fully complete each.

Submission and Assessment

The submission for all work completed in this practical is due by the end of Week 12. Please

submit 4 distinct Python scripts, named according to each task. Even though you can reuse

code from earlier tasks in the later tasks, it will simplify the marking procedure if you submit

each solution independently.

During the marking session (scheduled for Week 13), you will be expected to demonstrate

the functionality of each of these scripts. You will mainly be assessed on functionality, but

expect to be able to walk-through and explain your code. As we will also be providing you

with a few small snippets of code (to use in your own solution), you will not be expected to

explain these in great detail. However, a general understanding of how these functions work

will be beneficial to your overall learning and comprehension. There will also be a small

proportion of marks available for a consistent code style and useful commenting. Resilient

code, using try and except statements to catch errors is also preferred, and will be rewarded

accordingly.

Task 1.1: ICMP Ping

The first task is to recreate the ping client discussed in Lecture 3: Delay, Loss & Throughput.

Remember that ping is a tool used to measure delay and loss in computer networks. It does

this by sending messages to another host. Once a message has reached that host, it is sent

back to the sender. By measuring the amount of time taken to receive that response, we can

determine the delay in the network. Similarly, by tracking the responses returned from our

messages, we can determine if any have been lost in the network.

ping traditionally uses Internet Control Message Protocol (ICMP) messages to achieve this

behaviour. More details can be found in RFC777. For this task, we will be sending echo request

messages (with an ICMP type code of 8). These requests are useful to us because on reaching the

client, the client will respond with an echo reply message (with an ICMP type code of 0). By

timing the period of time elapsed between sending the request and receiving the reply, we

can accurately determine the network delay between the two hosts.

Remember, you are recreating ping without the use of external libraries; they are explicitly

prohibited!

Implementation Tips

There are a number of aspects to consider when writing your implementation. Carefully think

about the logic required; use a whiteboard if need be. A ping client sends one ICMP echo

request message at a time and waits until it receives a response. Measuring the time between

sending the message and receiving it will give us the network delay incurred in transit.

Repeating this process provides us with a number of delay measurements over time, showing

any deviation that may occur.

To assist you in your implementation, we have provided skeleton code for this task. This can

be found on the SCC. 203 Moodle page. It contains suggested functions, as well as an overview

of functionality to be implemented by each. These are given as comments and are to be

treated as guidance only. Note that you may have to change the parameters passed to each

function as you advance with the task. The following Python libraries will also be useful to

your implementation:

Note that to run a privileged socket, such as socket.SOCK_RAW, your script must be run with

elevated privileges (such as sudo). Note that an alternative solution using unprivileged

sockets, such as socket.SOCK_DGRAM, is also acceptable.

We have provided you with a checksum function (included in the skeleton code) which can

be freely used in your solutions without penalty. It is important that when passing a packet

to this function, the checksum field must contain a dummy value of 0. Once the checksum has

been calculated, it can be immediately inserted in the packet to send.

留学ICU™️ 留学生辅助指导品牌
在线客服 7*24 全天为您提供咨询服务
咨询电话(全球): +86 17530857517
客服QQ:2405269519
微信咨询:zz-x2580
关于我们
微信订阅号
© 2012-2021 ABC网站 站点地图:Google Sitemap | 服务条款 | 隐私政策
提示:ABC网站所开展服务及提供的文稿基于客户所提供资料,客户可用于研究目的等方面,本机构不鼓励、不提倡任何学术欺诈行为。