Computer Systems: A Programmer's Perspective (3rd Edition)
Computer Systems: A Programmer's Perspective (3rd Edition)
3rd Edition
ISBN: 9780134092669
Author: Bryant, Randal E. Bryant, David R. O'Hallaron, David R., Randal E.; O'Hallaron, Bryant/O'hallaron
Publisher: PEARSON
bartleby

Concept explainers

Question
Book Icon
Chapter 11, Problem 11.6HW

A.

Program Plan Intro

IP addresses:

  • The IP address denotes an unsigned integer that is 32-bit.
  • The IP addresses is been stored by network programs in IP address structure.
  • The addresses present in IP address structure are stored in network byte order.
  • An unsigned 32-bit integer is transformed from host byte order to network byte order by “htonl” function.
  • An unsigned 32-bit integer is transformed from network byte order host byte order by “ntohl” function.
  • The IP address is presented to humans in a form known as “dotted-decimal” notation.
    • Each byte is been represented by its corresponding decimal value and is separated by a period from other bytes.

Passing program arguments to server:

  • The arguments for “GET” requests are passed in the URI.
  • The character “?” separates filename from the arguments.
  • The character “&” separates each argument.
  • The arguments do not allow spaces in it.

Server passes arguments to child:

  • The server calls “fork” to create a child process and calls “execve” to run program in child’s context once it receives a request.
  • The child process sets CGI environment variable values.
  • The “adder” program can reference it at run time using “getenv” function of linux.

Output is sent by child:

  • The dynamic content of a CGI program is to be sent to standard output.
  • A CGI program sends dynamic content to standard output.
  • It uses “dup2” function for redirecting standard output to connected descriptor associated with client.
  • The result written to standard output by CGI program, it goes directly to client.

A.

Expert Solution
Check Mark

Explanation of Solution

Modified C code:

//Define method

void clienterror(int fd, char *cause, char *errnum, char *shortmsg, char *longmsg);

//Define method

void echo(int connfd);

//Define main method

int main(int argc, char **argv)

{

//Declare variables

int listenfd, connfd;

//Call method

Getnameinfo((SA *) &clientaddr, clientlen, hostname, MAXLINE,port, MAXLINE, 0);

//Display message

printf("Accepted connection from (%s, %s)\n", hostname, port);

//Call method

echo(connfd);

//Close

Close(connfd);

}

//Define method

void echo(int connfd)

{

//Declare variable

size_t n;

//Declare array

char buf[MAXLINE];

//Declare variable

rio_t rio;

//Call method

Rio_readinitb(&rio, connfd);

//Loop

while ((n = Rio_readlineb(&rio, buf, MAXLINE)) != 0)

{

//If condition satisfies

if (strcmp(buf, "\r\n") == 0)

//Break

break;

//Call method

Rio_writen(connfd, buf, n);

}

}

Explanation:

  • The method “echo” declares the variables first.
  • It handles one HTTP response/request transaction.
  • The value is been read using method “readinitb” and is stored.
  • The value is been written into buffer using “written” method.
  • The comparison is made until new line occurs.

B.

Program Plan Intro

IP addresses:

  • The IP address denotes an unsigned integer that is 32-bit.
  • The IP addresses is been stored by network programs in IP address structure.
  • The addresses present in IP address structure are stored in network byte order.
  • An unsigned 32-bit integer is converted from host byte order to network byte order by “htonl” function.
  • An unsigned 32-bit integer is converted from network byte order host byte order by “ntohl” function.
  • The IP address is presented to humans in a form known as “dotted-decimal” notation.
    • Each byte is been represented by its corresponding decimal value and is separated by a period from other bytes.

Passing program arguments to server:

  • The arguments for “GET” requests are passed in the URI.
  • The character “?” separates filename from the arguments.
  • The character “&” separates each argument.
  • The arguments do not allow spaces in it.

Server passes arguments to child:

  • The server calls “fork” to create a child process and calls “execve” to run program in child’s context once it receives a request.
  • The child process sets CGI environment variable values.
  • The “adder” program can reference it at run time using “getenv” function of linux.

Output is sent by child:

  • The dynamic content of a CGI program is to be sent to standard output.
  • A CGI program sends dynamic content to standard output.
  • It uses “dup2” function for redirecting standard output to connected descriptor associated with client.
  • The result written to standard output by CGI program, it goes directly to client.

B.

Expert Solution
Check Mark

Explanation of Solution

Request to TINY for static content:

GET / HTTP/1.1

Host: localhost:5000

User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:53.0) Gecko/20100101 Firefox/53.0

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

Accept-Language: en-US,en;q=0.5

Accept-Encoding: gzip, deflate

Connection: keep-alive

Explanation:

  • The given code denotes a request to “TINY” for static content.
  • It echoes each and every request line.
  • It echoes each and every request header.
  • It takes a particular “Accept-Language” and “Accept-Encoding” for the content.

C.

Program Plan Intro

IP addresses:

  • The IP address denotes an unsigned integer that is 32-bit.
  • The IP addresses is been stored by network programs in IP address structure.
  • The addresses present in IP address structure are stored in network byte order.
  •  An unsigned 32-bit integer is converted from host byte order to network byte order by “htonl” function.
  • An unsigned 32-bit integer is converted from network byte order host byte order by “ntohl” function.
  • The IP address is presented to humans in a form known as “dotted-decimal” notation.
    • Each byte is been represented by its corresponding decimal value and is separated by a period from other bytes.

Passing program arguments to server:

  • The arguments for “GET” requests are passed in the URI.
  • The character “?” separates filename from the arguments.
  • The character “&” separates each argument.
  • The arguments do not allow spaces in it.

Server passes arguments to child:

  • The server calls “fork” to create a child process and calls “execve” to run program in child’s context once it receives a request.
  • The child process sets CGI environment variable values.
  • The “adder” program can reference it at run time using “getenv” function of linux.

Output is sent by child:

  • The dynamic content of a CGI program is to be sent to standard output.
  • A CGI program sends dynamic content to standard output.
  • It uses “dup2” function for redirecting standard output to connected descriptor associated with client.
  • The result written to standard output by CGI program, it goes directly to client.

C.

Expert Solution
Check Mark

Explanation of Solution

Version of HTTP:

  • The version of HTTP used by browser is HTTP 1.1.
  • The output from “TINY” is been inspected for determining HTTP version of browser.
  • The “TINY” denotes an iterative server that listens for connection requests on ports.
  • The “TINY” executes infinite server loop; it accepts a connection request repeatedly.
  • It performs the transaction and closes its end of connection.
  • Hence, version of HTTP is “HTTP 1.1”.

D.

Program Plan Intro

IP addresses:

  • The IP address denotes an unsigned integer that is 32-bit.
  • The IP addresses is been stored by network programs in IP address structure.
  • The addresses present in IP address structure are stored in network byte order.
  •  An unsigned 32-bit integer is converted from host byte order to network byte order by “htonl” function.
  • An unsigned 32-bit integer is converted from network byte order host byte order by “ntohl” function.
  • The IP address is presented to humans in a form known as “dotted-decimal” notation.
    • Each byte is been represented by its corresponding decimal value and is separated by a period from other bytes.

Passing program arguments to server:

  • The arguments for “GET” requests are passed in the URI.
  • The character “?” separates filename from the arguments.
  • The character “&” separates each argument.
  • The arguments do not allow spaces in it.

Server passes arguments to child:

  • The server calls “fork” to create a child process and calls “execve” to run program in child’s context once it receives a request.
  • The child process sets CGI environment variable values.
  • The “adder” program can reference it at run time using “getenv” function of linux.

Output is sent by child:

  • The dynamic content of a CGI program is to be sent to standard output.
  • A CGI program sends dynamic content to standard output.
  • It uses “dup2” function for redirecting standard output to connected descriptor associated with client.
  • The result written to standard output by CGI program, it goes directly to client.

D.

Expert Solution
Check Mark

Explanation of Solution

Meaning of HTTP headers:

  • The details of each HTTP header is shown below:
    • Accept:14.1:
      • It can be used for specifying certain media types that are acceptable for response.
      • Accept headers are used to indicate that request is limited specifically to a small set of desired types.
      • It has same impact as in case of an in-line image request.
    • Accept-Encoding: 14.3:
      • The request header field is almost similar to “Accept”.
      • It restricts the content-coding that are acceptable in response.
    •  Accept-Language: 14.4:
      • The “Accept-Language” request header is similar to that of “Accept”.
      • It restricts set of natural languages preferred as response to request.
    • Connection: 14.10:
      • The connection header field allows sender to specify options that are desired for particular connection.
      • It must not be communicated by proxies over further connections.
    • Host: 14.23:
      • The host request header field would specify internet host and port number of resource being requested.
      • The host field value denotes origin server’s naming authority or gateway given by original URL.
      • It allows origin server or gateway in differentiating between ambiguous URLs.
      • The root “/” server’s URL is used for multiple host names with single IP address.
    • User-Agent: 14.43:
      • The user-agent request header has information about user agent initiating the request.
      • It is used for tracing protocol violations, automated acknowledgment of user agents for avoiding limitations of user agent.
      • The requests are been added with the field.
      • The field contains multiple product tokens and comments that identifies agent.
      • It includes sub products that forms a significant part of user agent.
      • The product tokens are listed in order of their significance for application identification.

Want to see more full solutions like this?

Subscribe now to access step-by-step solutions to millions of textbook problems written by subject matter experts!
Students have asked these similar questions
GoLang Create a simple HTTP/1.1 server in Go programming language. The server will serve files from a directory, and the client will be the browser. It will run on port 8080 and will handle HTTP get and head requests. It will either send a 200 or 404 response. The response will have three headers which will be the server, last-modified, and content length. Do NOT use the net/http package.
What is the output of the below code? Select one: O a. Parse error: syntax error. O b. 120 O c. 80 O d. 40
Please do not use a python code already on the internet. The following code must be written in python for this HW assignment. I will provide a skeleten for the code and you must write some lines of code to satisfy the objective of the prorgram. you need to develop a web server that handles one HTTP request on at a time. the  web server should acceptand parse the HTTP request, get the requested file from the server’s file system,  and create an HTTP responsemessage consisting of the requested file preceded by header lines, and then send the response directly tothe client. If the requested file is not present in the server, the server should send an HTTP “404 NotFound” message back to the client.  Dont need the hole code just right the information and code it to the skeleten pictures below.
Knowledge Booster
Background pattern image
Computer Science
Learn more about
Need a deep-dive on the concept behind this application? Look no further. Learn more about this topic, computer-science and related others by exploring similar questions and additional content below.
Similar questions
SEE MORE QUESTIONS
Recommended textbooks for you
Text book image
Database System Concepts
Computer Science
ISBN:9780078022159
Author:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:McGraw-Hill Education
Text book image
Starting Out with Python (4th Edition)
Computer Science
ISBN:9780134444321
Author:Tony Gaddis
Publisher:PEARSON
Text book image
Digital Fundamentals (11th Edition)
Computer Science
ISBN:9780132737968
Author:Thomas L. Floyd
Publisher:PEARSON
Text book image
C How to Program (8th Edition)
Computer Science
ISBN:9780133976892
Author:Paul J. Deitel, Harvey Deitel
Publisher:PEARSON
Text book image
Database Systems: Design, Implementation, & Manag...
Computer Science
ISBN:9781337627900
Author:Carlos Coronel, Steven Morris
Publisher:Cengage Learning
Text book image
Programmable Logic Controllers
Computer Science
ISBN:9780073373843
Author:Frank D. Petruzella
Publisher:McGraw-Hill Education