CN-Unit-2 Study Notes
CN-Unit-2 Study Notes
SYLLABUS
Application Layer: Principles of Network Applications, The Web and HTTP, Electronic
Mail in the Internet, DNS - The Internet’s Directory Service, Socket Programming:
Creating Network Applications
Course Educational Objectives:
● Expose the student to the important principles behind the working of various layers of a
network.
Course Outcomes:
After successful completion of the Unit the student will be able to:
1. Llist the various components in the Internet and their functions
Reference Book:
James F. Kurose and Keith W. Ross, Computer Networking: A Top-Down Approach, 6/e,
Pearson, 2012 (Text Book, PPT)
Application Layer
• The applications have been the driving force behind the Internet’s success, motivating people in
homes, schools, governments, and businesses to make the Internet an integral part of their daily
activities.
• Some of the Network applications are E-mail, instant messaging, P2P file sharing, multi-user
network games, streaming stored video clips, internet telephone, real-time video conference,
social networking.
Fig: Communication for a network application takes place between end systems
at the application layer
Client-Server Architecture
• There is an always-on host, called the server, which provides services to requests from many
other hosts, called clients.
• A classic example is the Web application for which an always-on Web server services requests
from browsers running on client hosts.
• When a Web server receives a request for an object from a client host, it responds by sending
the requested object to the client host.
o In the client-server architecture, clients do not directly communicate with each other.
o The client-server architecture is that the server has a fixed, well-known address, called
an IP address.
o In a client-server application, a single-server host is incapable of keeping up with all the
requests from clients.
• For this reason, a data center, housing a large number of hosts, is often used to create a
powerful virtual server.
• A data center can have hundreds of thousands of servers, which must be powered and
maintained.
P2P Architecture
• There is minimal or no reliance on dedicated servers in data centers.
COMPUTER SCIENCE AND ENGINEERING
GITAM SCHOOL OF TECHNOLOGY
• The application exploits direct communication between connected hosts, called peers.
• The peers are instead desktops and laptops controlled by users, with most of the peers residing
in homes, universities, and offices.
• Because the peers communicate without passing through a dedicated server, the architecture is
called peer-to-peer.
• Most popular and traffic-intensive applications are based on P2P architectures that include file
sharing (e.g., BitTorrent), peer-assisted download acceleration, Internet Telephony (e.g., Skype),
and IPTV.
• Some applications have hybrid architectures, combining both client-server and P2P elements.
• One of the most compelling features of P2P architectures is
➢ Self-scalability: New peers bring new service capacity, as well as new service demands.
➢ P2P architectures are also cost effective, since they normally don’t require significant server
infrastructure and server bandwidth.
• Future P2P applications face three major challenges:
➢ ISP Friendly: Most residential ISPs (including DSL and cable ISPs) have been
dimensioned for “asymmetrical” bandwidth usage, for much more downstream than upstream
traffic. But P2P video streaming and file distribution applications shift upstream traffic from
servers to residential ISPs, thereby future P2P applications need to be designed so that they
are friendly to ISPs.
➢ Security: Because of their highly distributed and open nature, P2P applications can be a
challenge to secure.
➢ Incentives: The success of future P2P applications also depends on convincing users to
volunteer bandwidth, storage, and computation resources to the applications.
COMPUTER SCIENCE AND ENGINEERING
GITAM SCHOOL OF TECHNOLOGY
Processes Communicating
• In general, the programs, running in multiple end systems, communicate with each other. -In the
jargon of operating systems, it is not actually programs but processes that communicate.
• A process can be thought of as a program that is running within an end system.
➢ When processes are running on the same end system, they can communicate with
each other with inter-process communication, using rules that are governed by the
end system’s operating system.
• Processes on two different end systems communicate with each other by exchanging messages
across the computer network.
➢ The process that initiates the communication (that is, initially contacts the other process
at the beginning of the session) is labelled as the client.
➢ The process that waits to be contacted to begin the session is the server.
Addressing Processes
• A process running on one host to send packets to a process running on another host, the receiving
process needs to have an address.
• To identify the receiving process, two pieces of information need to be specified:
(1) The address of the host and
(2) An identifier that specifies the receiving process in the destination host.
• In the Internet, the host is identified by its IP address- a 32-bit quantity.
• In addition to knowing the address of the host, the sending process must also identify the
receiving process running in the host, as a host could be running many network applications.
➢ A destination port number serves this purpose.
• Popular applications have been assigned specific port numbers.
➢ A Web server is identified by port number 80.
➢ A mail server process (using the SMTP protocol) is identified by port number 25.
Throughput
-The context of a communication session between two processes along a network path, is the rate
at which the sending process can deliver bits to the receiving process.
-Transport-layer protocol could provide, guaranteed available throughput at some specified rate.
-Applications that have throughput requirements are said to be bandwidth-sensitive applications.
➢ Many current multimedia applications are bandwidth sensitive.
-Elastic applications can make use of as much, or as little, throughput as happens to be available.
➢ Electronic mail, file transfer, and Web transfers are all elastic applications.
Timing
- A transport-layer protocol can also provide timing guarantees.
-With throughput guarantees, timing guarantees can come in many shapes and forms.
-A long delay between taking an action and seeing the response from the environment
makes the application feel less realistic.
➢ A service would be appealing to interactive real-time applications, such as Internet
telephony, virtual environments, teleconferencing, and multiplayer games, all of which
requires tight timing constraints on data delivery in order to be effective.
Security
-A transport protocol can provide an application with one or more security services.
➢ In the sending host, a transport protocol can encrypt all data transmitted by the sending
process, and in the receiving host, the transport-layer protocol can decrypt the data before
delivering the data to the receiving process.
-A transport protocol can also provide other security services in addition to confidentiality, including
data integrity and end-point authentication.
TCP Services
-The TCP service model includes a connection-oriented service and a reliable data transfer service.
➢ Connection-oriented service:
• TCP has the client and server which exchange transport layer control information
with each other before the application-level messages begin to flow. This is called
handshaking procedure.
• After the handshaking phase, a TCP connection is said to exist between the sockets
of the two processes.
• The connection is a full-duplex connection in which the two processes can send
messages to each other at the same time.
• When the application finishes sending messages, it must tear down the connection.
➢ Reliable data transfer service:
• The communicating processes can rely on TCP to deliver all data sent without error
and in the proper order.
➢ TCP also includes a congestion-control mechanism. The TCP congestion-control mechanism
throttles a sending process when the network is congested between sender and receiver.
UDP Services
-UDP is a no-frills, lightweight transport protocol, providing minimal services.
-UDP is connectionless, so there is no handshaking before the two processes start to communicate.
-It provides an unreliable data transfer service—that is, when a process sends a message into a
UDP socket, UDP provides no guarantee that the message will ever reach the receiving process.
-UDP does not include a congestion-control mechanism.
COMPUTER SCIENCE AND ENGINEERING
GITAM SCHOOL OF TECHNOLOGY
The transport protocols used by some popular Internet applications and their underlying
transport protocol are:
Application-Layer Protocols
-An application-layer protocol defines how an application’s processes, running on different end
systems, pass messages to each other.
-In particular, an application-layer protocol defines:
➢ The types of messages exchanged, for example, request messages and response
messages.
➢ The syntax of the various message types, such as the fields in the message and
how the fields are delineated.
➢ The semantics of the fields, that is, the meaning of the information in the fields
➢ Rules for determining when and how a process sends messages and responds to
messages.
-It is important to distinguish between network applications and application-layer protocols.
-An application-layer protocol is only one piece of a network application.
➢ The Web application consists of many components, including a standard for document
formats (that is, HTML), Web browsers (for example, Firefox and Microsoft Internet
Explorer), Web servers (for example, Apache and Microsoft servers), and an application-
layer protocol.
-The Web was the first Internet application that caught the general public’s eye which dramatically
changed, and continues to change.
-It elevated the Internet from just one of many data networks to essentially the one and only data
network.
-Web operates on demand.
➢ Users receive what they want, when they want it.
Overview of HTTP
-The Hyper Text Transfer Protocol (HTTP), the Web’s application-layer protocol,
is at the heart of the Web.
-It is defined in [RFC 1945] and [RFC 2616].
-HTTP is implemented in two programs: a client program and a server program.
-The client program and server program, executing on different end systems, talk to each other by
exchanging HTTP messages.
-A Web page consists of objects.
➢ An object is simply a file such as an HTML file, a JPEG image, a Java applet, or a video
clip that is addressable by a single URL.
➢ Consider the page consists of a base HTML file and 10 JPEG images, and that all 11 of
these objects reside on the same server.
-Each URL has two components: the hostname of the server and the object’s path name.
-For example, the URL http://www.someSchool.edu/someDepartment/picture.gif
➢ www.someSchool.edu for a hostname and /someDepartment/picture.gif for a path name.
-HTTP defines how Web clients request Web pages from Web servers and how servers transfer
Web pages to clients.
-HTTP uses TCP as its underlying transport protocol.
➢ The HTTP client first initiates a TCP connection with the server.
➢ Once the connection is established.
➢ The client sends HTTP request messages into its socket interface and receives HTTP response
messages from its socket interface.
➢ Similarly, the HTTP server receives request messages from its socket interface and sends
response messages into its socket interface.
-An HTTP server maintains no information about the clients, HTTP is said to be a stateless protocol.
COMPUTER SCIENCE AND ENGINEERING
GITAM SCHOOL OF TECHNOLOGY
The use of non-persistent connections, where each TCP connection is closed after the server sends
the object. TCP connection transports exactly one request message and one response message.
Response Time
-The round-trip time (RTT), is defined as the time it takes for a small packet to travel from client to
server and then back to the client.
-The RTT includes packet-propagation delays, packet queuing delays in intermediate routers and
switches, and packet-processing delays.
-To initiate a TCP connection between the browser and the Web server; it involves a “three-way
handshake.
➢ The first two parts of the three-way handshake take one RTT.
➢ After completing the first two parts of the handshake, the client sends the HTTP request
message.
➢ Once the request message arrives at the server, the server sends the HTML file into the
TCP connection.
➢ This HTTP request/response eats up another RTT.
➢ Thus, roughly, the total response time is two RTTs plus the transmission time at the server
of the HTML file.
COMPUTER SCIENCE AND ENGINEERING
GITAM SCHOOL OF TECHNOLOGY
• The method field can take on several different values, including GET, POST, HEAD, PUT,
and DELETE.
• The majority of HTTP request messages use the GET method.
• The GET method is used when the browser requests an object, the browser is requesting
the object /somedir/page.html.
-The header lines
➢ Host: www.someschool.edu specifies the host on which the object resides.
➢ The Connection: close header line specifies the browser is telling the server that it doesn’t
want to bother with persistent connections; it wants the server to close the connection after
sending the requested object.
➢ The User-agent: header line specifies the user agent, that is, the browser type
• Here the user agent is Mozilla/5.0, a Firefox browser.
➢ The Accept-language header indicates that the user prefers to receive a French version of
the object, if such an object exists on the server it will return; otherwise, the server sends its
default version.
-The entity body is empty with the GET method, but is used with the POST method.
-An HTTP client often uses the POST method when the user fills out a form.
-The HEAD method is similar to the GET method. When a server receives a request with the HEAD
method, it responds with an HTTP message but it leaves out the requested object.
➢ Application developers often use the HEAD method for debugging.
COMPUTER SCIENCE AND ENGINEERING
GITAM SCHOOL OF TECHNOLOGY
-The PUT method allows a user to upload an object to a specific path (directory) on a specific Web
server.
-The DELETE method allows a user, or an application, to delete an object on a Web server.
• 400 Bad Request: This is a generic error code indicating that the request could not
be understood by the server.
• 404 Not Found: The requested document does not exist on this server.
• 505 HTTP Version Not Supported: The requested HTTP protocol version is not
supported by the server.
➢ A cookie file kept on the user’s end system and managed by the user’s browser.
➢ A back-end database at the Web site.
-Example:
➢ Suppose a client visits Amazon.com for the first time.
➢ When the request comes into the Amazon Web server, the server creates a unique
identification number and creates an entry in its back-end database that is indexed by
the identification number.
➢ The Amazon Web server then responds to client browser, including in the HTTP
response a Set-cookie: header, which contains the identification number.
➢ When client browser receives the HTTP response message, it sees the Setcookie:
header.
➢ The browser then appends a line to the special cookie file that it manages.
➢ As client continues to browse the Amazon site, each time it requests a Web page,
the browser consults the cookie file, extracts the identification number for this site, in
the HTTP request.
➢ The Amazon server is able to track client’s activity at the Amazon site.
➢ Although the Amazon web site does not necessarily know client’s name, it
knows exactly which pages user visited, in which order, and at what times.
➢ If the client returns to Amazon’s site, even one week later, the browser will continue
to put the header line (Cookie:1678) in the request messages.
COMPUTER SCIENCE AND ENGINEERING
GITAM SCHOOL OF TECHNOLOGY
Web Caching
-A Web cache also called a proxy server is a network entity that satisfies HTTP
requests on the behalf of an origin Web server.
-The Web cache has its own disk storage and keeps copies of recently requested objects in
this storage.
-Once a browser is configured, each browser request for an object is first directed to the
Web cache and a copy is stored in the cache.
-Example:
➢ The browser establishes a TCP connection to the Web cache and sends an HTTP
request for the object to the Web cache.
➢ The Web cache checks to see if it has a copy of the object stored locally.
• If it does, the Web cache returns the object within an HTTP response message
to the client browser.
COMPUTER SCIENCE AND ENGINEERING
GITAM SCHOOL OF TECHNOLOGY
• If the Web cache does not have the object, the Web cache opens a TCP
connection to the origin server.
• The Web cache then sends an HTTP request for the object into the cache-to-
server TCP connection.
➢ After receiving cache request, the origin server sends the object within an HTTP
response to the Web cache.
➢ When the Web cache receives the object, it stores a copy in its local storage and
sends a copy, within an HTTP response message, to the client browser.
HTTP/2
The primary goals for HTTP/2 are to reduce perceived latency by enabling request and response
multiplexing over a single TCP connection, provide request prioritization and server push, and
provide efficient compression of HTTP header fields.
• HTTP/2 Motivation: HTTP/1.1's persistent TCP connections caused HOL blocking. Browsers
used multiple parallel TCP connections to work around this issue.
Head of Line (HOL) blocking: occurs when a web page has a large video clip and numerous small
objects. With a slow bottleneck link, the video clip causes delays for small objects queued behind
it.
COMPUTER SCIENCE AND ENGINEERING
GITAM SCHOOL OF TECHNOLOGY
• HTTP/2 Solution (Framing): Reduces the need for parallel TCP connections by breaking
messages into frames and interleaving them, significantly reducing user perceived delay.
Includes binary frame encoding for efficiency.
The ability to break down an HTTP message into independent frames, inter leave them, and then
reassemble them on the other end is the single most important enhancement of HTTP/2.
• Message Prioritization: Developers assign weights (1-256) to messages, and the server
prioritizes higher weight responses. Clients can specify message dependencies.
• Server Push: Enables sending additional objects to the client without explicit requests,
reducing latency.
• HTTP/3 and QUIC: QUIC, a new transport protocol over UDP and supports features like
message multiplexing, is used for HTTP/3. This streamlined design incorporates HTTP/2
features and leverages QUIC's advantages.
-A high-level view of the Internet mail system; it has three major components:
➢ User agents
➢ Mail servers
➢ Simple Mail Transfer Protocol (SMTP).
-User agents allow users to read, reply to, forward, save, and compose messages.
➢ Microsoft Outlook and Apple Mail are examples of user agents for e-mail.
-Mail servers form the core of the e-mail infrastructure which consists of outgoing message
Queue, mailbox.
-SMTP is the principal application-layer protocol for Internet electronic mail.
➢ It uses the reliable data transfer service of TCP to transfer mail from the sender’s mail
server to the recipient’s mail server.
➢ SMTP has two sides: a client side, which executes on the sender’s mail server, and a
server side, which executes on the recipient’s mail server.
➢ Both the client and server sides of SMTP run on every mail server.
COMPUTER SCIENCE AND ENGINEERING
GITAM SCHOOL OF TECHNOLOGY
SMTP
-SMTP defined in RFC 5321, is the heart of Internet electronic mail.
-SMTP transfers messages from senders’ mail servers to the recipients’ mail servers.
-Messages must be sent in 7-bit ASCII.
-The basic operation of SMTP, Suppose Alice wants to send Bob a simple ASCII message.
➢ Alice invokes her user agent for e-mail, provides Bob’s e-mail address composes a
message, and instructs the user agent to send the message.
➢ Alice’s user agent sends the message to her mail server, and it is placed in a
message queue.
➢ The client side of SMTP, running on Alice’s mail server, sees the message in the
message queue.
➢ It opens a TCP connection to an SMTP server, running on Bob’s mail server.
➢ After some initial SMTP handshaking, the SMTP client sends Alice’s message
into the TCP connection.
➢ At Bob’s mail server, the server side of SMTP receives the message.
➢ Bob’s mail server then places the message in Bob’s mailbox.
➢ Bob invokes his user agent to read the message at his convenience.
-SMTP does not normally use intermediate mail servers for sending mail, even when the two
mail servers are located at opposite ends of the world.
A closer look at how SMTP transfers a message from a sending mail server to a
receiving mail server. First, the client SMTP establishes a TCP connection to port 25 at the
server SMTP (running on the receiving mail server host. During this SMTP handshaking phase,
the SMTP client indicates the e-mail address of the sender (the person who generated the
message) and the e-mail address of the recipient. Once the SMTP client and server have
introduced themselves to each other, the client sends the message. SMTP can count on the
reliable data transfer service of TCP to get the message to the server without errors. The
COMPUTER SCIENCE AND ENGINEERING
GITAM SCHOOL OF TECHNOLOGY
client then repeats this process over the same TCP connection if it has other messages to
send to the server; otherwise, it instructs TCP to close the connection.
POP3
-POP3 is an extremely simple mail access protocol.
-It is defined in [RFC 1939], which is short and quite readable.
-POP3 begins when the user agent opens a TCP connection to the mail server (the server) on port
110.
-With the TCP connection established, POP3 progresses through three phases:
➢ Authorization
➢ Transaction
➢ Update.
-During the first phase, authorization, the user agent sends a username and a password to
authenticate the user.
➢ There are two possible responses: +OK used by the server to indicate that the previous
command was fine; and -ERR, used by the server to indicate that something was wrong with the
previous command.
-During the second phase, transaction, the user agent retrieves messages; also, during this phase,
the user agent can mark messages for deletion, remove deletion marks.
-The third phase, update, occurs after the client has issued the quit command, ending the POP3
session; at this time, the mail server deletes the messages that were marked for deletion.
-A user agent using POP3 can often be configured (by the user) to “download and delete” or to
“download and keep.”
-In the download-and-delete mode, the user agent will issue the list, retr, and dele commands.
➢ In this download-and-delete mode the recipient cannot access his mail messages from
multiple machines if want to access.
-In the download-and-keep mode, the user agent leaves the messages on the mail server after
downloading them.
COMPUTER SCIENCE AND ENGINEERING
GITAM SCHOOL OF TECHNOLOGY
IMAP
-An IMAP server will associate each message with a folder
➢ When a message first arrives at the server, it is associated with the recipient’s INBOX folder.
➢ The recipient can then move the message into a new, user-created folder, read the message,
delete the message, and so on.
➢ The IMAP protocol provides commands to allow users to create folders and move messages
from one folder to another.
➢ IMAP also provides commands that allow users to search remote folders for messages
matching specific criteria.
-Another important feature of IMAP is that it has commands that permit a user agent to obtain
components of messages.
➢ This feature is useful when there is a low-bandwidth connection (for example, a slow-speed
modem link) between the user agent and its mail server.
Web-Based E-Mail
-More and more users today are sending and accessing their e-mail through their Web
Browsers.
-The user communicates with its remote mailbox via HTTP rather than the POP3 or IMAP protocol.
People prefer the more mnemonic hostname identifier, while routers prefer fixed length,
hierarchically structured IP addresses.
•
COMPUTER SCIENCE AND ENGINEERING
GITAM SCHOOL OF TECHNOLOGY
gethostbyname() is the function call that an application calls in order to perform the translation.
• DNS operates through query and reply messages using UDP datagrams on port 53.
• DNS queries involve multiple servers globally distributed.
• A simple centralized design for DNS is not feasible due to scalability issues.
• Issues with centralized design: single point of failure, high traffic volume, distant database,
and maintenance.
• DNS uses a hierarchical structure and a distributed database., to handle the vast number
of hosts on the Internet.
• DNS uses three classes of servers: Root DNS servers, top level domain (TLD) DNS servers,
and authoritative DNS servers.
• Root DNS servers provide IP addresses for TLD servers. TLD servers provide IP addresses
for authoritative DNS servers Authoritative DNS servers store DNS records for specific
organizations.
• A local DNS server, specific to an ISP, also plays a crucial role in DNS queries. It cache
DNS information to reduce query traffic and improve performance.
When a host makes a DNS query, the query is sent to the local DNS server, which acts a proxy,
forwarding the query into the DNS server hierarchy.
COMPUTER SCIENCE AND ENGINEERING
GITAM SCHOOL OF TECHNOLOGY
• DNS extensively utilizes caching to enhance performance. These are stored temporarily
and it allows DNS servers to quickly respond to subsequent queries for the same hostname.
To obtain the canonical name for the mail server, a DNS client would query for an MX record; to
obtain the canonical name for the other server, the DNS client would query for the CNAME
record.
COMPUTER SCIENCE AND ENGINEERING
GITAM SCHOOL OF TECHNOLOGY
• DNS messages have a header section with several fields, including query/reply flags,
recursion flags, and more.
• DNS messages consist of a question section, answer section (resource records), authority
section, and additional section.
A 1 bit query/reply flag indicates whether the message is a query (0) or a reply (1). A 1 bit
authoritative flag is set in a reply message when a DNS server is an authoritative server for a
queried name.
A 1 bit recursion desired flag is set when a client (host or DNS server) desires that the DNS server
perform recursion when it doesn’t have the record.
A 1 bit recursion available field is set in a reply if the DNS server supports recursion.
DNS Messages
The only types of DNS messages are DNS queries and reply messages. They have the same
format:
• first 12 bytes in the header section: 16-bit number identifying the query, which will be
copied into the reply query so that the client can match received replies with sent queries.
1 bit query/reply flag (0 query, 1 reply). 1 bit flag authoritative flag set in reply
messages when DNS server is an authoritative for a queried name. 1 bit recursion flag if
the client desires that the server performs recursion when it doesn't have a record, 1 bit
recursion-available field is set in the reply if the DNS server supports recursion
• question section: information about the query: name field containing the name being
queried, type field
• answer section: resource records for the name originally queried: Type, Value, TTL.
Multiple RRs can be returned if the server has multiple IP addresses
• authority section: records for other authoritative servers.
• additional section: other helpful records: canonical hostnames...
COMPUTER SCIENCE AND ENGINEERING
GITAM SCHOOL OF TECHNOLOGY
A registrar is a commercial entity that verifies the uniqueness of the domain name, enters the
domain name into the DNS database (as discussed below), and collects a small fee from you for
its services.
• To register a domain name, you need to provide registrar with DNS server names and IP
addresses. Registrar enters Type NS and Type A resource records for authoritative DNS
servers into TLD servers.
• Additional resource records, like Type A and Type MX, must be added for Web and mail
servers.
UDPClient.py
Code for the client side of the application:
from socket import *
serverName = ‘hostname’
serverPort = 12000
clientSocket = socket(socket.AF_INET, socket.SOCK_DGRAM)
message = raw_input(’Input lowercase sentence:’)
clientSocket.sendto(message,(serverName, serverPort))
modifiedMessage, serverAddress = clientSocket.recvfrom(2048)
print modifiedMessage
clientSocket.close()
UDPServer.py
Code for the server side of the application:
from socket import *
serverPort = 12000
COMPUTER SCIENCE AND ENGINEERING
GITAM SCHOOL OF TECHNOLOGY
TCPClient.py
Code for the client side of the application:
serverName = ’servername’
serverPort = 12000
clientSocket = socket(AF_INET, SOCK_STREAM)
clientSocket.connect((serverName,serverPort))
sentence = raw_input(‘Input lowercase sentence:’)
clientSocket.send(sentence)
modifiedSentence = clientSocket.recv(1024)
print ‘From Server:’, modifiedSentence
clientSocket.close()
TCPServer.py
Code for the server side of the application:
from socket import *
serverPort = 12000
serverSocket = socket(AF_INET,SOCK_STREAM)
serverSocket.bind((‘’,serverPort))
serverSocket.listen(1)
print ‘The server is ready to receive’
while 1:
connectionSocket, addr = serverSocket.accept()
sentence = connectionSocket.recv(1024)
capitalizedSentence = sentence.upper()
connectionSocket.send(capitalizedSentence)
connectionSocket.close()
COMPUTER SCIENCE AND ENGINEERING
GITAM SCHOOL OF TECHNOLOGY