Great Deal! Get Instant $10 FREE in Account on First Order + 10% Cashback on Every Order Order Now

© 2023 Robin Pottathuparambil XXXXXXXXXXPage 1 of 5 Programming Assignment #3 CSCE 3530 – Introduction to Computer Networks Spring 2023 100 Points Due:...

1 answer below »
© 2023 Robin Pottathuparambil XXXXXXXXXXPage 1 of 5

Programming Assignment #3
CSCE 3530 – Introduction to Computer Networks
Spring 2023

100 Points
Due: 03/29/2023, 11:55 PM

Instructions: Compile the C programs in one of the Cell (cell01 – cell06) servers and
make sure it’s working. Comment your code. Create a Makefile to compile the source
code and to clean the executable. Create a readme file that describes how to compile,
execute, and test the code. Create an assignment folder with folder name as euid_PA3
(example: xyz0202_PA3) and add the source file, Makefile, and the readme file to the
folder. Please create a zip archive of your assignment folder and upload the zip file to
Canvas. Not following the above instructions could result in not accepting your
programming assignment. Late submissions are not allowed.

Objective:

Create a web cache that can cache up to six recent webpages and checks if the pages
are up to date.

Requirements:

1. Create a C-based client using TCP sockets
2. The client should run on any Cell (cell01 – cell06) machine
3. The client should be able to accept and service http requests
4. The client should be able to cache up to six recent requested webpages, if
available
5. The client should check if an updated webpage is available using If-Modified-Since
header and replace the old webpage with new webpage in the cache if a updated
webpage is available.
Procedure:
1. Create a C-based client using TCP sockets
2. The client should run on any Cell (cell01 – cell06) machine and the created client
should be able to accept a HTTP website URL using the below format

./wcclient
URL:
Port:
© 2023 Robin Pottathuparambil XXXXXXXXXXPage 2 of 5

where wcclient is the client executable, url is the requested hostname and
port_number is the port number that the web server is listening
3. Once the client gets an URL input from the user, it checks the cache for the
equested page. If the page is not found in the cache, proceed to the below steps
a. The client makes a connection to the requested URL using the connect
system call. The connect system call needs the IP address of the input URL.
Use the gethostbyname system call to find the IP address of the input URL
. Once the connection is made, a GET request is made to the web server by
client program. Figure 1 shows the overall architecture
c. A sample GET request is shown below to request the landing page from
google website

GET / HTTP/1.1\r\n
Host: www.google.com\r\n
Connection: Close\r\n\r\n

d. The above GET request lines are packed as a single string and written to the
webserver by client using write or send system call
e. The client sleeps for a second and then reads (read or recv system call) the
incoming stream of data (response) and stores the received data in a buffer.
The client then checks for the HTTP response status code in the received
esponse
f. If the HTTP response status code is 200, the returned web page from the web
server is cached (stored as a file). Verify manually to see if the returned page
is same as the
owser returned page
g. The client stores the webpage in a file and assigns a filename based on the
time of visit (available in the response header). The filename format is
YYYYMMDDhhmmss. Where YYYY is the year, MM is the month, DD is the
day, hh is the hour in 24-hour format, mm is the minutes, and ss is the
seconds when the website was visited
h. A list file (list.txt) is created which stores the URL of the webpage and the
associated cached web page filename
i. The list file stores six recent URLs. The cached websites that are not listed in
the list file should be deleted from the cache
j. Once the returned web page is cached, the client waits for the next URL input
from the user
k. If the HTTP response status code is not 200, do not cache the web page
instead print the HTTP response status code
© 2023 Robin Pottathuparambil XXXXXXXXXXPage 3 of 5

4. When the user requests a webpage that is in the list.txt file (cache) the client
simply prints that the page is found in cache along with the filename and proceeds
to the below steps
a. The client will ask the user to check if the page was modified. If the user
esponds with a ‘Yes’, the user inputs the date and time to check if the page
was modified since the input date and time
. Do Step 3a for the connection and once the connection is made, a GET
equest along with If-Modified-Since header is sent to the web server to check
if the page is modified since the input date and time
c. A sample GET request with If-Modified-Since header is shown below to
equest the updated page from example.com website

GET / HTTP/1.1\r\n
Host: www.example.com\r\n
If-Modified-Since: Thu, 16 Oct XXXXXXXXXX:18:26 GMT\r\n
Connection: Close\r\n\r\n

d. If the HTTP response status code is 200, the returned web page from the web
server is cached (stored as a new file with filename based on the time of
visit). The old, cached file is deleted. The list file is updated accordingly with
necessary changes
e. If the HTTP response status code is 304, do not cache the web page instead
print the HTTP response status code
f. If the user responds with a ‘No’ to check if the page was modified, then the
client proceeds to ask the user for the next URL
5. The client program should exit or end execution when a quit expression is given as
an input
6. Test web caching by accessing multiple websites. Most websites are not http
websites so only select http websites using this website
7. Most websites do not support If-Modified-Since header, so use this website to
check if a http website supports If-Modified-Since header
8. A sample list.txt is available on Canvas for reference.
Deliverables:
1. Commented client C code
2. A Makefile to compile (make) the source code and to clean (make clean) the
executable
3. A readme file that describes how to compile, execute, and test the code.
4. Create an assignment folder with folder name as euid_PA3 (example:
xyz0202_PA2) and add the source file, Makefile, and the readme file to the folder.
https:
whynohttps.com
https:
en.web-tool.org/check-last-modified
© 2023 Robin Pottathuparambil XXXXXXXXXXPage 4 of 5

Please create a zip archive of your assignment folder and upload the zip file to
Canvas on or before due date.
Client-side input/output:
./wcclient
URL: www.google.com
Port: 80
Response: 200
Action: Page cached as filename XXXXXXXXXX
URL: www.dmoz.org
Port: 80
Response: 400
Action: Not cached
URL: www.example.com
Port: 80
Response: 200
Action: Page cached as filename XXXXXXXXXX
URL: icio.us
Port: 80
Response: 200
Action: Page cached as filename XXXXXXXXXX
URL: www.example.com
Port: 80
Response: 200
Action: Page found in cache, filename – XXXXXXXXXX
Check if modified: Yes
Date: Thu, 16 Oct XXXXXXXXXX:18:26 GMT
Response: 200
Action: Updated web page cached as filename – XXXXXXXXXX,
deleted old page with filename XXXXXXXXXX
URL: www.example.com
Port: 80
Response: 200
Action: Page found in cache, filename – XXXXXXXXXX
Check if modified: Yes
Date: Thu, 18 Oct XXXXXXXXXX:18:26 GMT
Response: 304
Action: Not cached
URL: www.example.com
Port: 80
Response: 200
Action: Page found in cache, filename – XXXXXXXXXX
Check if modified: No
URL: quit
cya!
© 2023 Robin Pottathuparambil XXXXXXXXXXPage 5 of 5
Figure 1. Overall Architecture.

www.example.com XXXXXXXXXX
icio.us XXXXXXXXXX
www.google.com XXXXXXXXXX
Answered 1 days After Mar 26, 2023

Solution

Adyasha answered on Mar 27 2023
27 Votes
SOLUTION.PDF

Answer To This Question Is Available To Download

Related Questions & Answers

More Questions »

Submit New Assignment

Copy and Paste Your Assignment Here