Friday 1 January 2016

SMU ASSIGNMENT OF WEBSITE DISIGN BSC IT 3RD SEM

                                                         [FALL 2015]ASSIGNMENT
PROGRAM
BSc IT
SEMESTER
THIRD
SUBJECT CODE &
NAME
BT0078, Website Design

Q. No. 1. Explain the dial up connection and its types.
Answer: To access the Internet via a phone line, the concept is: Connect your computer to the telephone system using either a regular phone line (with a modem) or an ISDN line (which requires special equipment). To start work, you run a communication program to dial the phone and establish a connection with a remote Internet host. Once the connection is established, you log in to the server by typing your user name and password. At this point, there are three possible types of dial-up connections:
a) Shell account access
b) TCP/IP account access
c) Dial-up or on-demand TCP/IP link through your LAN
a) Conventional Dial-up Shell Account:With this type of account, you actually do your work on the remote computer. You establish an interactive session with another computer which is an Internet host. Your desktop assumes the role of an ASCII terminal. With shell access, your providers computer is considered a part of the Internet, but your computer is not. The only program that runs on your computer is the terminal emulator. When you connect to your provider, you type commands to its system, which tell it what functions you want to do. The program on your providers computer that receives and acts on the commands is known as a shell. The shell and the programs it runs for you send back to your computer some text that is displayed on the screen. A terminal emulator only supports a text-based interface, not a graphical interface. You are usually limited to running one client at a time
b) Protocol dial-up (TCP/IP Account): A protocol dialup account lets your computer behave like it is connected directly to another computer on the Internet, when it is really connected over a phone line whenever you dialup and it enables you to run software, such as a graphical Web browser like Microsoft Internet Explorer or Netscape Navigator, that functions in your computers native environment instead of forcing you to deal with plain text programs like the text only browser Lynx and UNIX. This means when you have a protocol dialup (TCP/IP) account, during the time you are connected your computer is a full-fledged Internet host. The client programs you use as many clients as you want at the same time. For example, you could start four programs, a web client, a gopher client, a mail client, and switch back and forth from one to the other. This type of connection is also known as TCP/IP type of account and it uses the TCP/IP protocol to perform data transfer on the Internet.
c) Dial-Up or On-Demand TCP/IP link through your LAN: A dial-up link from your LAN is the intermediate step between individual dial-up and a dedicated high speed link. It is therefore somewhat like dial-up and somewhat like having a direct link. The main difference between this type of connection and the one to your individual computer is that the TCP/IP software runs on the LAN server, and your connection is to the server. A TCP/IP connection through a LAN, either on a dial-up connection or a direct connection, is the most common type of IP connection, much more common than a personal dial-up IP connection.

Q. No. 2. Describe the following in context of validating XML documentswith DTDs
1. Concept of data validation
2. Writing document type definition (DTD) files
3. Internal and external DTDs
4. Validating parsers
5. The NMTOKEN and NMTOKENS Type
Answer: The Concept of Data Validation
The main requirement of the data validation is to determine whether all documents confirm to the rule it describes. Application programs that process the data in the collection of XML documents can be written to assume the particular document form. Without such structural restrictions, developing such applications would be difficult.
Writing Document Type Definition (DTD) Files
A Document Type Definition (DTD) is a set of structural rules called declarations, which specify a set of elements that can appear in the document as well as how and where these elements may appear. Not all XML documents need a DTD. DTDs are used when the same tag set definition is used by a collection of documents, perhaps by a collection of users, and the collection must have a consistent and uniform structure.
The purpose of a DTD is to define a standard form for a collection of XML documents. This form is specified as the tag and attributes sets, as well as rules that define how they can appear in a document. DTDs also provide entity definitions. All documents in the collection can be tested against the DTD to determine whether they conform to the rules it describes.
Internal and External DTDs
A DTD can be embedded in the XML document whose syntax rules it describes, in which case it is called an internal DTD. The alternative is to have the DTD stored in a separate file, in which case it is called an external DTD. Because external DTDs allow use with more than one XML document, they are preferable.
If the DTD is included in the XML code, it must be introduced with <!DOCTYPE rootname [ and terminated with ]>. For example, the structure of the planes XML document with its DTD included is as follows:
<?xml version = 1.0 encoding =utf-8 ?>
<!DOCTYPE planes [
<!-- the DTD for planes -->
]>
<!--The planes XML Document -->
When you use an external DTD, the XML document includes a DOCTYPE declaration as its second line. This declaration has the following form:
<!DOCTYPE XML_document_root_name SYSTEM DTD_file_name>
<!--The XML Document -->
Validating Parsers
All modern browsers have a built-in XML parser that can be used to read and manipulate XML. The parser reads XML into memory and converts it into an XML DOM object that can be accessed with JavaScript. There are some differences between Microsoft's XML parser and the parsers used in other browsers. The Microsoft parser supports loading of both XML files and XML strings (text), while other browsers use separate parsers. However, all parsers contain functions to traverse XML trees, access, insert, and delete nodes (elements) and their attributes.
The NMTOKEN and NMTOKENS Type
An XML name token is very close to an XML name. It must consist of the same characters as an XML name. Furthermore, like an XML name, an XML name token may not contain whitespace. However, a name token differs from an XML name in that any of the allowed characters can be the first character in a name token, while only letters, ideographs, and the underscore can be the first character of an XML name. Thus 12 and .cshrc are valid XML name tokens although they are not valid XML names. Every XML name is an XML name token, but not all XML name tokens are XML names.
Example:
<!ATTLIST journal year NMTOKEN #REQUIRED>
This still doesn't prevent the document author from assigning the year attribute values like "99" or "March", but it at least eliminates some possible wrong values, especially those that contain whitespace such as "1990 C.E." or "Sally had a little lamb."
A NMTOKENS type attribute contains one or more XML name tokens separated by whitespace. For example, you might use this to describe the date’s attribute of a performances element, if the dates were given in the form 08-26-2000, like this:
    <performances dates="08-21-2001 08-23-2001 08-27-2001">
Kat and the Kings
        </performances>
The appropriate declaration is:
              <!ATTLIST performances dates NMTOKENS #REQUIRED>
On the other hand, you could not use this for a list of dates in the form 08/27/2001 because the forward slash is not a legal name character.

Q. No. 3. Explain the following:
1. Declaring XSL style sheets
2. xsl:apply-templates
3. XPath Functions and Predicates
4. Looping - xsl:for-each
Answer: Declaring XSL Stylesheets
XSL documents must conform to the rules of any other XML document, in that the syntax of the document must be well-formed, such as the proper nesting of tags, no empty tags, etc. The stylesheet can contain text that will be reflected exactly in the output document, in addition to XSL instructions that copy the data from the XML document the stylesheet is being applied to. The declaration of the stylesheet, with the processing instructions to the browser is done as follows.
< xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
What this line is doing is declaring the element an xsl:stylesheet element and calling for the XSL elements that are in the http://www.w3.org/TR/WD-xsl namespace. Of course, for the document to be well formed, this tag must be closed at the very end of the document with the close tag:
</xsl:stylesheet>
xsl:apply-templates
The xsl:apply-templatesselects source nodes for processing. The format is given below:
<xsl:apply-templates [select="pattern"][mode="qname"]>
[<xsl:sort>]
</xsl:apply-templates>
If you specify the select attribute, specify a pattern that resolves to a set of source nodes. For each source node in this set, the XSLT processor searches for a template that matches the node. When it finds a matching template, it instantiates it and uses the node as the context node. For example:
<xsl:apply-templates select="/bookstore/book">
When the XSLT processor executes this instruction, it constructs a list of all nodes that match the pattern in the select attribute. For each node in the list, the XSLT processor searches for the template whose match pattern best matches that node. If you do not specify the select attribute, the XSLT processor uses the default pattern, "node()", which selects all child nodes of the current node.
If you specify the mode attribute, the selected nodes are matched only by templates with a matching mode attribute. The value of mode must be a qualified name or an asterisk (*). If you specify an asterisk, it means continue the current mode, if any, of the current template. If you do not specify a mode attribute, the selected nodes are matched only by templates that do not specify a mode attribute.
By default, the new list of source nodes is processed in document order. However, you can use the xsl:sort instruction to specify that the selected nodes are to be processed in a different order.
In the previous example, the XSLT processor searches for a template that matches /bookstore/book. The following template is a match:
<xsl:template match="book">
<tr><td><xsl:value-of select="title"/></td>
<td><xsl:value-of select="author"/><td>
<td><xsl:value-of select="price"/><td></tr>
</xsl:template>
The XSLT processor instantiates this template for each book element.
XPath Functions and Predicates
You can use XML Path Language (Xpath) functions to refine XPath queries and enhance the programming power and flexibility of XPath. The functions are divided into the following groups.



Table: Six Functions
Node-Set
Takes a node-set argument, returns a node-set, or returns/provides information about a particular node within a node-set.
String
Performs evaluations, formatting, and manipulation on string arguments.
Boolean
Evaluates the argument expressions to obtain a Boolean result.
Number
Evaluates the argument expressions to obtain a numeric result.
Microsoft XPath Extension Functions
Microsoft extension functions to XPath that provide the ability to select nodes by XSD type. Also includes string comparison, number comparison, and date/time conversion functions.

Each function in the function library is specified using a function prototype that provides the return type, function name, and argument type. If an argument type is followed by a question mark, the argument is optional; otherwise, the argument is required. Function names are case-sensitive.
A predicate is similar to an If/Then statement. If our predicate is TRUE, then the element will be selected. If the predicate is FALSE, it will be excluded. An XPath predicate is contained within square brackets [], and comes after the parent element of what will be tested.
Example: inventory/drink/lemonade[amount>15]
Besides testing the values of elements, you can also use predicates to check the values of attributes. The form pretty much the same as before, except the attribute belongs to the element before the predicate.
Syntax: element[@element'sAttribute someTestHere]
Looping - xsl:for-each
The <xsl:for-each> element allows you to do looping in XSLT. The XSL <xsl:for-each> element can be used to select every XML element of a specified node-set:
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<body>
<h2>My CD Collection</h2>
<table border="1">
<tr bgcolor="#9acd32">
<th>Title</th>
<th>Artist</th>
</tr>
<xsl:for-each select="catalog/cd">
<tr>
<td><xsl:value-of select="title"/></td>
<td><xsl:value-of select="artist"/></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
The result of the transformation above will look like this:
Title
Artist
Empire Burlesque
Bob Dylan
Hide your heart
Bonnie Tyler
Greatest Hits
Dolly Parton
Still got the blues
Gary More
Eros
Eros Ramazzotti
One night only
Bee Gees




SMU ASSIGNMENT TCP/IP BSC IT 3RD SEM

                                                    [ FALL 2015 ] ASSIGNMENT
PROGRAM
BSC IT
SEMESTER
THIRD
SUBJECT CODE &
NAME
BT0076, TCP/IP

Q. No. 1. Write short note on:
1. Gigabit Ethernet
2. Fiber Distributed Data Interface (FDDI)
Answer: Gigabit Ethernet
As advances in hardware continue to provide faster transmissions across networks, Ethernet implementations have improved in order to capitalize on the faster speeds. Fast Ethernet increased the speed of traditional Ethernet from 10 megabits per second (Mbps) to 100 Mbps. This was further augmented to 1000 Mbps in June of 1998, when the IEEE defined the standard for Gigabit Ethernet (IEEE 802.3z). Finally, in 2005, IEEE created the 802.3-2005 standard introduced 10 Gigabit Ethernet, also referred to as 10GbE. 10GbE provides transmission speeds of 10 gigabits per second (Gbps), or 10000 Mbps, 10 times the speed of Gigabit Ethernet. However, due to the novelty of 10GbE, there are still limitations on the adapters over which 10GbE can be used, and no one implementation standard has yet gained commercial acceptance.
Fiber Distributed Data Interface (FDDI)
The FDDI specifications define a family of standards for 100 Mbps fiber optic LANs that provides the physical layer and media access control sub-layer of the data link layer, as defined by the ISO/OSI Model. Proposed initially by draft-standard RFC 1188, IP and ARP over FDDI networks became a standard in RFC 1390. It defines the encapsulating of IP datagrams and ARP requests and replies in FDDI frames. RFC 2467 extended this standard in order to allow the transmission of IPv6 packets over FDDI networks. Operation on dual MAC stations is described in informational RFC 1329. Fig. shows the related protocol layers.
The 24-bit Organization Code in the SNAP header is set to zero, and the remaining 16 bits are the EtherType (used to indicate which protocol is being transported in an Ethernet frame) from Assigned Numbers, that is: 2048 for IP and 2054 for ARP. The mapping of 32-bit Internet addresses to 48-bit FDDI addresses is done through the ARP dynamic discovery procedure. The broadcast Internet addresses (whose host address is set to all ones) are mapped to the broadcast FDDI address (all ones). IP datagrams are transmitted as series of 8-bit bytes using the usual TCP/IP transmission order called big-endian or network byte order. The FDDI MAC specification (ISO 9314-2 - ISO, Fiber Distributed Data Interface Media Access Control) defines a maximum frame size of 4500 bytes for all frame fields. After taking the LLC/SNAP header into account, and to allow future extensions to the MAC header and frame status fields, the MTU of FDDI networks is set to 4352 bytes.


Q. No. 2. Define and explain address resolution protocol (ARP).Describe ARP packet generation.
Answer: Address Resolution Protocol (ARP) is a network-specific standard protocol. The address resolution protocol is responsible for converting the higher-level protocol addresses (IP addresses) to physical network addresses. It is described in RFC 826.
On a single physical network, individual hosts are known in the network by their physical hardware address. Higher-level protocols address destination hosts in the form of a symbolic address (IP address in this case). When such a protocol wants to send a datagram to destination IP address w.x.y.z, the device driver does not understand this address. Therefore, a module (ARP) is provided that will translate the IP address to the physical address of the destination host. It uses a lookup table (sometimes referred to as the ARP cache) to perform this translation. When the address is not found in the ARP cache, a broadcast is sent out in the network with a special format called the ARP request. If one of the machines in the network recognizes its own IP address in the request, it will send an ARPreply back to the requesting host. The reply will contain the physical hardware address of the host and source route information (if the packet has crossed bridges on its path). Both this address and the source route information are stored in the ARP cache of the requesting host.
ARP is used on IEEE 802 networks as well as on the older DIX Ethernet networks to map IP addresses to physical hardware. To do this, it is closely related to the device driver for that network. In fact, the ARP specifications in RFC 826 only describe its functionality, not its implementation. The implementation depends to a large extent on the device driver for a network type and they are usually coded together in the adapter microcode.
ARP Packet Generation
If an application wants to send data to a certain IP destination address, the IP routing mechanism first determines the IP address of the next hop of the packet (it can be the destination host itself, or a router) and the hardware device on which it should be sent. If it is an IEEE 802.3/4/5 network, the ARP module must be consulted to map the <protocol type, target protocol address> to a physical address.
The ARP module tries to find the address in this ARP cache. If it finds the matching pair, it gives the corresponding 48-bit physical address back to the caller (the device driver), which then transmits the packet. If it does not find the pair in its table, it discards the packet (the assumption is that a higher-level protocol will retransmit) and generates a network broadcast of an ARP request.
See Fig for more details.

clip_image048
Fig.: ARP: Request/reply packet
Hardware address space: Specifies the type of hardware; examples are Ethernet or Packet Radio Net.
Protocol address space: Specifies the type of protocol, same as the EtherType field in the IEEE 802 header (IP or ARP).
Hardware address length: Specifies the length (in bytes) of the hardware addresses in this packet. For IEEE 802.3 and IEEE 802.5, this is 6.
Protocol address length: Specifies the length (in bytes) of the protocol addresses in this packet. For IP, this is 4.
Operation code: Specifies whether this is an ARP request (1) or reply (2).
Source/target hardware address: Contains the physical network hardware addresses. For IEEE 802.3, these are 48-bit addresses.
Source/target protocol address: Contains the protocol addresses. For TCP/IP, these are the 32-bit IP addresses. For the ARP request packet, the target hardware address is the only undefined field in the packet.

Q. No. 3. What is the use of TCP congestion control algorithm? Explain slow start TCP Congestion Control Algorithm.
Answer:The TCP congestion algorithm prevents a sender from overrunning the capacity of the network (for example, slower WAN links). TCP can adapt the sender's rate to network capacity and attempt to avoid potential congestion situations. In order to understand the difference between TCP and UDP, understanding basic TCP congestion control algorithms is very helpful. Several congestion control enhancements have been added and suggested to TCP over the years. This is still an active and ongoing research area, but modern implementations of TCP contain four intertwined algorithms as basic Internet standards:
v  Slow start
v  Congestion avoidance
v  Fast retransmit
v  Fast recovery
Slow Start: Old implementations of TCP start a connection with the sender injecting multiplesegments into the network, up to the window size advertised by the receiver.Although this is OK when the two hosts are on the same LAN, if there are routersand slower links between the sender and the receiver, problems can arise. Someintermediate routers cannot handle it, packets get dropped, and retransmissionresults and performance is degraded.The algorithm to avoid this is called slow start. It operates by observing that therate at which new packets should be injected into the network is the rate at whichthe acknowledgments are returned by the other end. Slow start adds anotherwindow to the sender's TCP: the congestion window, called cwnd. When a newconnection is established with a host on another network, the congestion windowis initialized to one segment (for example, the segment size announced by theother end, or the default, typically 536 or 512).
The sender starts by transmitting one segment and waiting for its ACK. When that ACK is received, the congestion window is incremented from one to two, and two segments can be sent. When each of those two segments is acknowledged, the congestion window is increased to four. This provides an exponential growth, although it is not exactly exponential, because the receiver might delay its ACKs, typically sending one ACK for every two segments that it receives.
At some point, the capacity of the IP network (for example, slower WAN links) can be reached, and an intermediate router will start discarding packets. This tells the sender that its congestion window has gotten too large. See Fig. for an overview of slow start in action.
Congestion Avoidance: The assumption of the algorithm is that packet loss caused by damage is verysmall (much less than 1%). Therefore, the loss of a packet signals congestionsomewhere in the network between the source and destination. There are two indications of packet loss:
v  A timeout occurs.
v  ACKs are received.
Congestion avoidance and slow start are independent algorithms with different objectives. But when congestion occurs, TCP must slow down its transmission rate of packets into the network and invoke slow start to get things going again. In practice, they are implemented together.

clip_image040
Congestion avoidance and slow start require that two variables be maintained for each connection:
v  A congestion window, cwnd
v  A slow start threshold size, ssthresh
The combined algorithm operates as follows:
1. Initialization for a given connection sets cwnd to one segment and ssthresh to 65535 bytes.
2. The TCP output routine never sends more than the lower value of cwnd or the receiver's advertised window.
3. When congestion occurs (timeout or duplicate ACK), one-half of the current window size is saved in ssthresh. Additionally, if the congestion is indicated by a timeout, cwnd is set to one segment.
4. When new data is acknowledged by the other end, increase cwnd, but the way it increases depends on whether TCP is performing slow start or congestion avoidance. If cwnd is less than or equal to ssthresh, TCP is in slow start; otherwise, TCP is performing congestion avoidance.
Slow start continues until TCP is halfway to where it was when congestion occurred (since it recorded half of the window size that caused the problem in step 2), and then congestion avoidance takes over. Slow start has cwnd begin at one segment, and incremented by one segment every time an ACK is received. As mentioned earlier, this opens the window exponentially: send one segment, then two, then four, and so on. Congestion avoidance dictates that cwnd be incremented by segsize*segsize / cwnd each time an ACK is received, where segsize is the segment size and cwnd is maintained in bytes. This is a linear growth of cwnd, compared to slow start's exponential growth. The increase in cwnd should be at most one segment each round-trip time (regardless of how many ACKs are received in that round-trip time), while slow start increments cwnd by the number of ACKs received in a round-trip time. Many implementations incorrectly add a small fraction of the segment size (typically the segment size divided by 8) during congestion avoidance. This is wrong and should not be emulated in future releases. See Fig. for an example of TCP slow start and congestion avoidance in action.
clip_image042

Q. No. 4. Write note on:
1. The Hierarchical Namespace
2. Fully Qualified Domain Names (FQDNs)
Answer: The Hierarchical Namespace:
Consider the typical internal structure of a large organization. Because the chief executive cannot do everything, the organization will probably be partitioned into divisions, each of them having autonomy within certain limits. Specifically, the executive in charge of a division has authority to make direct decisions, without permission from the chief executive Domain names which are formed in a similar way, and will often reflect the hierarchical delegation of authority used to assign them. For example, consider the name: myHost.myDept.myDiv.myCorp.com.
In this example, we know that there is a single host name myHost, which exists within the myDept.myDiv.myCorp subdomain. The myDept.myDiv.myCorp subdomain is one of the subdomains of myDiv.myCorp.com subdomain, which is in turn one of the subdomains of myCorp.com. Finally, myCorp.com is a subdomain of com. This hierarchy is better illustrated in Fig.

clip_image002
                                 FIG. DNS Hierarchical Namespace

Fully Qualified Domain Names (FQDNs)
When using the Domain Name System, it is common to work with only a part of the domain hierarchy, such as the myDivision.myCorp.com domain. The Domain Name System provides a simple method of minimizing the typing necessary in this circumstance. If a domain name ends in a dot (for example, myDept.myDiv.myCorp.com.), it is assumed to be complete. This is called a fullyqualified domain name (FQDN) or an absolute domain name. However, if it does not end in a dot (for example, myDept.myDiv), it is incomplete and the DNS resolver may complete this by appending a suffix such as .myCorp.com to the domain name. The rules for doing this are implementation-dependent and locally configurable.
Generic Domains
The top-level names are called the generic Top-Level Domains (gTLDs), and can be three characters or more in length. Table shows some of the top-level domains of today's Internet domain namespace.
Table 1 Current Generic Domains:

Domains name
Meaning
aero
The air transport industry
biz
Business use
cat
The Catalan culture
com
Commercial organizations
coop
Cooperatives
edu
Educational organization
gov
U.S. governmental agencies
Info
Informational sites
int
International organization
jobs
Employment sites
mil
The U.S. military
mobi
Mobile devices sites
museum
Museums

These names are registered with and maintained by the Internet Corporation for Assigned Names and Numbers (ICANN).
Country Domains
There are also top-level domains named for the each of the ISO 3166 international 2-character country codes (from ae for the United Arab Emirates to zw for Zimbabwe). These are called the country domains or the geographical domains. Many countries have their own second-level domains underneath which parallel the generic top-level domains. For example, in the United Kingdom, the domains equivalent to the generic domains .com and .edu are .co.uk and .ac.uk (ac is an abbreviation for academic). There is a .us top-level domain, which is organized geographically by state (for example, .ny.us refers to the state of New York). See RFC 1480 for a detailed description of the .us domain.

Q. No. 5. Define Remote Execution Command Protocol (REXEC andRSH). Explain its principle of operation.
Answer: Remote Execution Command Daemon (REXECD) is a server that allows the execution of jobs submitted from a remote host over the TCP/IP network. The client uses the REXEC or Remote Shell Protocol (RSH) command to transfer the job across to the server. Any standard output or error output is sent back to the client for display or further processing.

Principle of Operation
REXECD is a server (or daemon). It handles commands issued by foreign hosts and transfers orders to subordinate virtual machines for job execution. The daemon performs automatic login and user authentication when a user ID and password are entered. The REXEC command is used to define the user ID, password, host address, and the process to be started on the remote host. However, RSH does not require you to send a user name and password; it uses a host access file instead. Both server and client are linked over the TCP/IP network. REXEC uses TCP port 512 and RSH uses TCP port 514. See Fig. for more details.
clip_image012
REXEC : REXECD PRINCIPLE

Q. No. 6. Explain the following in context of HTTP:
1. HTTP protocol parameters
2. HTTP message
3. Request
4. Response
Answer:Protocol parameters: We provide some of the HTTP protocol parameters here.
v  HTTP version: HTTP uses a <major>.<minor> numbering scheme to indicate the versions of the protocol. The furthermost connection is performed according to the protocol versioning policy. The <major> number is incremented when there are significant changes in protocol, such as changing a message format. The <minor> number is incremented when the changes do not affect the message format. The version of HTTP messages is sent by an HTTP-Version field in the first line of the message. The HTTP-Version field is in the following format: HTTP-Version = "HTTP" "/" 1*DIGIT "." 1*DIGIT
v  Uniform Resource Identifiers (URIs): Uniform Resource Identifiers are generally referred to as WWW addresses and a combination of Uniform Resource Locators (URLs) and Uniform Resource Names (URNs). In fact, URIs are strings that indicate the location and name of the source on the server.
v  HTTP URL: The HTTP URL scheme enables you to locate network resources through the HTTP protocol. It is based on the URI Generic Syntax and described in RFC 3986. The general syntax of a URL scheme is: HTTP_URL = "http" "//" host [ ":" port ] [ abs_path ]. The port number is optional. If it is not specified, the default value is 80.
HTTP message: HTTP messages consist of the following fields:
v  Message types: A HTTP message can be either a client request or a server response. The following string indicates the HTTP message type:
v  HTTP-message = Request | Response
v  Message header: The HTTP message header field can be one of the following:
- General header
- Request header
- Response header
- Entity header
v   Message body: Message body can be referred to as entity body if there is no transfer coding has been applied. Message body simply carries the entity body of the relevant request or response.
v  Message length Message length indicates the length of the message body if it is included.
v  General header field: General header fields can apply both request and response messages. Currently defined general header field options are as follows:
- Cache-Control
- Connection
- Date
- Pragma
- Transfer-Encoding
- Upgrade
- Via
Request: A request message from a client to a server includes the method to be applied tothe resource, the identifier of the source, and the protocol version in use. Arequest message field is as follows:
Request = Request-Line
*( general-header | request-header | entity-header )
CRLF
[ message-body ]
Response: An HTTP server returns a response after evaluating the client request. Aresponse message field is as follows:
Request = Request-Line
*( general-header | request-header | entity-header )
CRLF
[ message-body ]