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 / wcolient URL: Url> Port: 2023 Robin Polfathuparamoid Page 1 of
5where wcclient is the client executable, uri 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 requested 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 b. 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/2.1 /rn
Host: ww. google.com ln Connection: Closelrln rn d. The above GET request lines are packed as a
single string and written to the webserver by client using wri te 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 response f. If the HTTP response status code is 200 , the retumed web
page from the web server is cached (stored as a file). Verify manually to see if the returned page
is same as the browser returned pag.
Programming Assignment 3 CSCE 3530 Introduction to Comput.pdf
1. 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 / wcolient URL: Url> Port: 2023 Robin Polfathuparamoid Page 1 of
5where wcclient is the client executable, uri 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 requested 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 b. 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/2.1 /rn
Host: ww. google.com ln Connection: Closelrln rn d. The above GET request lines are packed as a
single string and written to the webserver by client using wri te 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 response f. If the HTTP response status code is 200 , the retumed web
page from the web server is cached (stored as a file). Verify manually to see if the returned page
is same as the browser 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 YYY 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 code4. 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
2. modified. If the user responds with a 'Yes', the user inputs the date and time to check if the page
was modified since the input date and time b. Do Step 3a for the connection and once the
connection is made, a GET request 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 request the updated page from example.com website
GET/HTTP/1.1In Host: ww. example.com r If-Modified-Since: Thu, 16 Oct 201907:18:26 GMT rn
Connection: Clogelr lnrn 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. 92023 Rotin Pottathimarambil Page 3 of
5Please create a zip archive of your assignment folder and upload the zip file to Canvas on or
before due date. Client-side input/output: ./weclient URL: www google.com Port: 80 Response:
200 Action: Page cached as filename - 20230308101001 URL: www. dmoz.org Port: 80
Response: 400 Action: Not cached URL: ww. example.com Port: 80 Response: 200 Action: Page
cached as filename - 20230308101020 URL: 1cio.us Port: 80 Response: 200 Action: Page cached
as filename - 20230308101044 URL: wWW. example.com Port: 80 Response: 200 Action: Page
found in cache, filename - 20230308101020 Check if modified: Yes Date: Thu, 16 Oct 2019
07:18:26 GMT Response: 200 Action: Updated web page cached as filename - 20230308101110,
deleted old page with filename - 20230308101020 URL: Ww. example.com Port: 80 Response:
200 Action: Page found in cache, filename - 20230308101110 Check if modified: Yes Date: Thu,
18 Oct 201907:18:26 GMT Response: 304 Action: Not cached URL: www, example,com Port: 80
Response: 200 Action: Page found in cache, filename - 20230308111110 Check if modified: No
URL: quit cya!Figure 1. Overall Architecture.