Assignment #3 CS 3357a solution

$24.99

Original Work ?
Category: You will Instantly receive a download link for .ZIP solution file upon Payment

Description

5/5 - (1 vote)

We have seen how to send data over a TCP connection and now we want to explore data transfer using UDP. As you recall from the lectures, UDP is a non­reliable protocol so we are going to need to create a reliable transfer protocol in the application layer. Summary We will once again have two applications (UDP_Client.py and UDP_Server.py) but this time we will be using the UDP protocol, not TCP to communicate across the network. This means we have to create the reliable data transfer protocol (rdt) we saw in our textbook, specifically, we will create rdt2.2 for this assignment. Just to refresh your memory, below are the FSMs for both the client and server we need to create:
We will be using the following format for our Pseudo UDP packet:
ACK SEQ DATA CHKSUM
ACK – Indicates if packet is ACK or not. Valid values (1 or 0) SEQ – Sequence number of packet. Valid values (1 or 0) DATA – Application Data (8 bytes) CHKSUM – MD5 Checksum of packet (32 Bytes) You will need to create the packet, load it with the necessary values and then send it to the server. The server will receive the packet, check to see if it is corrupted and then take appropriate action. This process will exactly mirror rdt2.2 as shown in the textbook, so please make sure you follow it carefully! Procedure You must create two files, UDP_Client.py and UDP_Server.py. The details of each are shown below. UDP_Client – This app must connect to the UDP_Server app via UDP (you can use the local loopback address of 127.0.0.1 along with any port number you wish) then send three separate packets containing the following information: NCC­1701 NCC­1664 NCC­1017 Remember, in order to accomplish this, the client application must also be able to receive data in the form of acknowledgements from the server because we will be using the rdt2.2 process for creating a reliable transfer over UDP. UDP_Server – This app will establish a UDP socket and listen for incoming connections from the client. When a connection is made the server will consume the data and follow the rdt2.2 process as shown in chapter 3 of the course textbook. Remember, in order to accomplish this, the server application must also be able to send acknowledgements because we will be using the rdt2.2 process for creating a reliable transfer over UDP. Other Information The output from the UDP_Server and UDP_Client should display a line of text for each of the following events: Received Packet (with all packet values shown) Packet Checksum Compare Result (ie. Corrupt or not corrupt) Sent Packet (with all packet values shown) I have included sample files for both UDP_Client and UDP_Server to get you started. The sample files show you how to do the following: Create a UDP connection Create a ‘pseudo UDP packet’ Calculate the checksum Fill the packet and send it to the server Receive the packet and unpack it Compare checksums to ensure the packet is not corrupted You will need to do the rest. (The files are tested for Python v3)
Source

Styles Format Font Size
What to Submit You will be submitting the following via OWL : Files UDP_Server.py and UDP_Client.py with documentation for any command line arguments/variables to be set, and Python Version. (We need to know how to run your app!) Two screen captures showing 1. UDP_Client.py output messages during the session 2. UDP_Server.py output messages during the session Grading 100 points Total 100 points Function and design of your client and server apps You will be graded on the following: Design and function of your applications Documentation within your applications (Yes, it is important. No one wants to work on undocumented apps)
Submission Assignment Text This assignment allows submissions using both the text box below and attached documents. Type your submission in the box below and/or use the Browse button or the “select files” button to include other documents. Save frequently while working.
Attachments No attachments yet