Assignment 1 FINAL
Version 3, 16 March, 2018
Due Friday 23 March, 2018, 8pm via Blackboard.
The submission links will open a week or so before the assignment is due, and by that time we should have ironed any bugs out in the specification.
Note that each part will have a separate submission link – this makes it easier to divide the marking job among the tutors.
Revision History
v1 – first draft
v2 – some clarifications around use of libraries on page
v2.2 Numbering corrections in part B, clarifications in B(v)
v3. Testing URLs added for part C.
Part A
A client requests a webpage from a remote server on a remote island via a slow satellite link 20,000km above the earth in geostationary orbit.
Calculate the time for the request to be completed.
Here are some abbreviations used below: bps= bits per second, k=103, M=106
There is a Client, C, a server V, a DNS server, D. These are connected with three switches, S1, S2, S3 and 5 transmission links. Note that L2 and L3 are radio links to/from the satellite.
List of Links
Link Name | Connected to | Connected to | Transmission | Length | propagation | ||||
Rate | Speed | ||||||||
L1 | C | S1 | 100 Mbps | 100m | 2.5 x 108 | m/s | |||
L2 | S1 | S2 | 10kbps | 20,000km | 3 x 108 m/s | ||||
L3 | S2 | S3 | 10kbps | 20,000km | 3 x 108 m/s | ||||
L4 | S3 | V | 100 Mbps | 100m | 2.5 x 108 | m/s | |||
L5 | S1 | D | 100 Mbps | 100m | 2.5 x 108 | m/s | |||
List of Packet Switching Routers | |||||||||
Router | Links on Ports | Processing Delay | |||||||
Name | |||||||||
S1 | L1, L2, L5 | 100 microseconds | |||||||
S2 | L2, L3 | 1 millisecond | |||||||
S3 | L3, L4 | 100 microseconds |
Assume no other packets in queues, only packets as part of this question.
Terminal Devices:
C = Client, requests web page, assume no processing delays, connected to link L1
D = DNS server, assume no processing delays – responds immediately to DNS lookup, connected to link L5
V = Web Server, assume no processing delays, connected to link L4 Packet Lengths:
for DNS lookup/response, TCP packets: SYN, ACK, SYN/ACK, FIN/ACK, assume a packet length of 100 bytes (800 bits)., including all headers, preamble, etc.
For HTTP GET packet and HTTP response packets, assume a packet length of 1000 bytes (8000 bits), including all headers, preamble, etc.
SCENARIO
At time t=0s, a program on the Client, C, starts the process of requesting a webpage from server.
The following transactions happen sequentially
- C sends a DNS request to D
- D sends a response with V’s IP address to C
- C sends a TCP request (SYN) to open a connection to V
- V acknowledges (SYN/ACK) the TCP request and opens the connections
- C sends a HTTP GET request to V (which includes the ACK back to V for its SYN)
- V sends the web page to C, which requires 5 packets , which includes the HTTP response plus the HTML file.
- after receiving each data packet, C sends an ACK message back to V. Note that V does not need to wait for an ACK before sending the next data packet.
- After receiving the last data packet acknowledgement, V sends a TCP FIN packet to close the connection.
- After receiving FIN, C sends one FIN/ACK packet back to V
- After receiving FIN/ACK, V sends a final ACK packet back to C.
- When this final ACK packet is received at C, the connection is finally closed.
At what time do the following events occur? Give all time in seconds, milliseconds or microseconds. “receive” means receives the last bit of the packet.
C starts to send its first bit at t=0s
- At what time does D receive the DNS request?
- At what time does C receive the DNS response?
- At what time does V receive the TCP “SYN” request?
- At what time does V receive the HTTP GET packet?
- At what time does C receive the fifth (last) packet of the HTTP response?
- At what time is the connection finally closed?
HAND IN: Answers to the above questions, online via Blackboard. (50 marks)
A template answer sheet, which you can use, will be provided by Friday 16 March.
The hand-in BlackBoard page will also be opened by then.
Part B
Look at the Wireshark capture file Assignment1.pcapng, which shows connecting to an email server from my home PC.
The email client first sends an email message to the Optus Email Server. The email client then reads an email message from the same server Answer the following questions:
- What application layer protocol is used to send the email message to the server?
- When sending the message, what is the IP address and port number of the mail client?
- When sending the message, what is the IP address and port number of the mail server?
- When sending the message, what is the “Subject:” field of the email message?
- When sending the message, what is the first line of the body of the message?
- What application layer protocol is used to read the email message from the server?
- When reading the message, what is the IP address and port number of the mail client? (h When reading the message, what is the IP address and port number of the mail server?
- When reading the message, what is the username and password that are used to login to the server?
- Packet 53 shows the client making a “CAPA” request, and packet 55 shows the server response. Which IETF RFC explains the meaning of the response tags in packet 55(CAPA, TOP, UIDL, etc.). If more than one, you can just list the first one which includes most of the codes, but there is no penalty if you list all.
HAND IN: Answers to the above questions, online via Blackboard. (50 Marks) A template answer sheet, which you can use, will be provided by Friday 16 March. The hand-in BlackBoard page will also be opened by then.
Part C
Write a program in a programming language of your choice, such as Python, Java, or C to do the following.
- Request a URL from the user (or it could be entered on the command line when the program is invoked).
This URL could be just a domain name or include the resource location.
You do NOT need to include in this name, this can be assumed.
- Request the designated web page, and analyse the response.
Print out a response to the screen, or to a text file, and ensure that you can capture the response so that it can be uploaded with your assignment source code.
The formatting of the response should follow the following template. The exact formatting is not so important but the information should be in the following Order.
HTTP Protocol Analyzer, Written by <Your name>, <your student-iD>
URL Requested: xxxxxxxxxxxxxxxxxx
IP Address, # Port of the Server: xxx.xxx.xxx.xxx , yyyy
IP Address # Port of this Client: xxx.xxx.xxx.xxx , yyyy
Reply Code: 304
Reply Code Meaning: Not Modified.
Date: Fri, 02 Mar 2018 12:01:02 AEST (please convert times to AEST if they are in GMT, otherwise leave them as they are)
Last-Modified: similar format (if appropriate to the response and supplied, otherwise just leave out, or write “not specified” or similar)
Content-Encoding: (if appropriate to the response, you should advertise at least compress, deflate and gzip accepted, if no content-encoding response, leave out or write “none”)
Moved to: (if appropriate to the response)
Optional Extension
For cases where the file has moved permanently (301) or temporarily (302), and the next destination is also a http:// URL, then look up the new location and repeat the above information. Keep doing this for multiple redirections. If the next destination is https:// then you won’t be able to open it directly with a normal socket.
Unmarked Challenge.
If you find this assignment easy and wish to extend yourself, you can try doing a similar program for. No extra marks, and you’ll need to explore yourself how to use the secure socket libraries.
LIBRARY RESTRICTIONS
You should use socket libraries directly to open the client TCP connection, and communicate between client and server.
You should NOT use higher level libraries or packages or programs which retrieve data from HTTP servers, such as the “Requests” library or the “urllib” library, or “http” package or similar.
You CAN use text-parsing functions which are part of “urllib”, i.e. the “urllib.parse” module.
HAND IN:
- Source Code for your program.
- Your output for the following URLs: (note some are abc.net…, some abc.com…)
Marking Scheme: (Total Marks /100)
30 Marks: Code appears to run producing output that shows program can connect to a webserver with response 200. (for these marks, it is sufficient to simply echo the response from the server)
30 Marks: Code correctly shows responses in the correct order for responses 200, 301, 302, 304, 404 (you probably won’t see any 304 codes unless you explicitly try to generate these, which is not necessary)
40 Marks: Extension Successfully Implemented
NOTE: The assignments are NOT auto-marked, so you don’t need to be character perfect in the responses, but you should have the indicated information in the same order.
No comments:
Post a Comment