Download csci4220-week01 - Computer Science at RPI

yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project

Rensselaer Polytechnic Institute
CSCI-4220 – Network Programming
David Goldschmidt, Ph.D.
Early computers were highly centralized
 Bottleneck
 Single point of failure
 Users must physically go
to the computer
Proliferation of low-cost computers
connected via a network helped
get past the above disadvantages
A computer network is an interconnected
collection of autonomous computers and
 Processes communicate
with one another across
the network
 Such communication is
often transparent to
Hierarchical networks:
 Nodes are not equal
 Nodes interconnect in
a strict pattern
 Single points of failure exist!
Heterarchical networks:
 Nodes are equal(ish)
 Nodes connected to produce multiple paths
The Internet (1969) is a network that’s
 Global
 Decentralized
 Redundant
 Made up of many different types of machines
 Both hierarchical and heterarchical
 Constantly changing
 Humungous
We use a formal network model to organize
and abstract various aspects of computer
(and other) networks
 Effectively hides the (messy)
implementation details
 Defines how communication occurs
across the network
 Often uses a layered approach
A layered model divides tasks/responsibilities
into pieces that are organized into layers
 Each piece is “solved” independently
 Well-defined (and well-documented) interfaces
between each layer are critically important
 Each layer often logically “connects” to the
same layer of another instance
Use a layered model to design an operating
system by dividing it into N levels or layers
 Layer 0 is the hardware
 Layer 1 is the kernel
 Layer N is the top-level
user interface (GUI)
 Each layer uses functions
and services of the layer
(or layers) beneath it
What’s the OSI Reference Model?
 The International Standards
Organization (ISO) proposal
for the standardization of
the various protocols used
in computer networks
 A seven-layer protocol stack
In reality, not
all layers are
always used....
The Internet
uses only
four layers:
 Application
 Transport
 Network
 Physical
Each layer on the client side logically
communicates with the same layer on
the server side
intermediate router
Each layer prepends or appends its
information in a header or trailer
HTTP Request
TCP Hdr | HTTP Request
IP Hdr | TCP Hdr | HTTP Request
Ethernet Hdr | IP Hdr | TCP Hdr | HTTP Request | Cksum
A protocol is an agreed-upon convention
that defines how communication occurs
between two (or more?) endpoints
 All endpoints must “understand” and
correctly implement the protocol
 Protocols must be formally defined,
unambiguous, and well-documented
 Protocols should address error conditions
and unexpected scenarios
In a layered model, two types of protocols:
 Interface protocols describe communication
between layers (on the same endpoint)
 Peer-to-peer protocols describe communication
between two endpoints at the same layer
A server is a process that provides access
to a centralized resource or service
 The term “server” might also refer to the
machine on which the server is running
Client/server communication:
 Server waits for incoming requests from clients
 A client is a process that sends request(s) to a
server and (usually) waits for a response
Servers typically run 24/7 and are more
complex (more interesting) than clients
Types of servers:
 An iterative server handles one request at a time
 A concurrent server can handle multiple client
requests (almost) simultaneously