Data and Computer Communications: Tenth Edition by William Stallings
Data and Computer Communications: Tenth Edition by William Stallings
Communications
Tenth Edition
by William Stallings
Data and Computer Communications, Tenth
Edition by William Stallings, (c) Pearson
Education - Prentice Hall, 2013
Protocol Architecture, TCP/IP, and
Internet-Based Applications
CHAPTER 2
To destroy communication completely, there
must be no rules in common between
transmitter and receiverneither of alphabet
nor of syntax.
On Human Communication,
Colin Cherry
The Need for a Protocol
Architecture
1.) The source must either
activate the direct
communications path or inform
the network of the identity of the
desired destination system
2.) The source system must
ascertain that the destination
system is prepared to receive
data
3.) The file transfer application on
the source system must ascertain
that the file management program
on the destination system is
prepared to accept and store the
file for this particular user
4.) A format translation function
may need to be performed by one
or the other system if the file
formats used on the two systems
are different
To transfer data
several tasks
must be
performed:
Functions of Protocol
Architecture
Breaks logic into subtask modules which
are implemented separately
Modules are arranged in a vertical stack
Each layer in the stack performs a
subset of functions
Relies on next lower layer for primitive
functions
Provides services to the next higher layer
Changes in one layer should not require
changes in other layers
Key Features of a Protocol
A protocol is a set of rules or conventions
that allow peer layers to communicate
The key features of a protocol are:
Syntax
Semantics
Timing
Format of data
blocks
Control
information for
coordination and
error handling
Speed matching
and sequencing
A Simple Protocol Architecture
Agents involved:
Applications
Computers
Networks
Examples of
applications include
file transfer and
electronic mail
These execute on
computers that
support multiple
simultaneous
applications
Communication Layers
Communication tasks are
organized into three
relatively independent
layers:
Network access layer
Concerned with the
exchange of data between a
computer and the network
to which it is attached
Transport layer
Collects mechanisms in a
common layer shared by all
applications
Application layer
Contains logic to support
applications
Computer C
Port, or
Service access
point (SAP)
Network address
Network access
Transport
1 2
Applications
Network
accesss protocol
( ) ( )
3
( )
4
( )
Figure 2.1 Protocol Architectures and Networks
Communications
network
Network access
Computer A
Computer B
Transport
Applications
1 2
( ) ( )
Network access
Transport
Applications
1 2 3
( ) ( ) ( )
T
r
a
n
s
p
o
r
t p
r
o
to
c
o
l
A
p
p
lic
a
tio
n
p
r
o
to
c
o
l
from
A
to
B
from
1
1 2
to
2
data
from
1
to
2
data
data
Entity Y
N
e
t
w
o
r
k
a
c
c
e
s
s
T
r
a
n
s
p
o
r
t
A
p
p
l
i
c
a
t
i
o
n
"this is to me"
( )
( ) ( )
from
A
to
B
from
1
1 2
to
2
data
f
r
o
m
A
t
o
B
f
r
o
m
1
t
o
2
d
a
t
a
f
r
o
m
A
t
o
B
f
r
o
m
1
t
o
2
d
a
t
a
from
1
to
2
data
data
Entity X
Computer A
Computer B
N
e
t
w
o
r
k
a
c
c
e
s
s
T
r
a
n
s
p
o
r
t
A
p
p
l
i
c
a
t
i
o
n
"to computer B"
"to port 2 on computer B"
( )
( ) ( )
Communications
Network
Figure 2.2 Protocols in a Simplified Architecture
TCP/IP Protocol Architecture
Provides ccess to the
TCP/IP environment for
users and also provides
distributed information
services.
Application
Transfer of data between
end points. May provide
error control, flow control,
congestion control, reliable
delivery.
Transport
Shield higher layers from
details of physical network
configuration. Provides
routing. May provide QoS,
congestion control.
Internet
Logical interface to network
hardware. May be stream or
packet oriented. May
provide reliable delivery.
Network Access/
Data Link
Transmission of bit stream;
specifies medium, signal
encoding technique, data
rate, bandwidth, and
physical connector.
Physical
Figure 2.3 The TCP/IP Layers and Example Protocols
Twisted pair, optical fiber, satellite,
terrestrial microwave
Ethernet, WiFi, ATM, frame relay
IPv4, IPv6
TCP, UDP
SMTP, FTP, SSH, HTTP
ARP
ICMP,
OSPF,
RSVP
Physical Layer
Covers the physical interface between
computer and network
Concerned with issues like:
Characteristics of transmission medium
Nature of the signals
Data rates
Network Access/Data Link Layer
Covers the exchange of data between an
end system and the network that it is
attached to
Concerned with:
Access to and routing data across a network
for two end systems attached to the same
network
I
n
t
e
r
n
e
t
L
a
y
e
r
Internet Layer
Implements
procedures
needed to allow
data to travel
across multiple
interconnected
networks
Uses the
Internet
Protocol (IP)
to provide
routing
function
Implemented
in end
systems and
routers
Host-to-Host (Transport) Layer
May provide reliable
end-to-end service
or merely an end-to-
end delivery service
without reliability
mechanisms
Transmission
Control Protocol
Most commonly
used protocol to
provide this
functionality
TCP
Application Layer
Contains the logic needed to support the
various user applications
A separate module is needed for each
different type of application that is peculiar
to that application
Router J
TCP
IP
Physical Physical
IP
NAP 1 NAP 2
Physical Physical
Network Access
Protocol #1
Host A
App X
App Y
TCP
IP
Network Access
Protocol #2
Host B
App Y
App X
Network 1 Network 2
Global internet
address
1 2 2 4 6 3
Subnetwork attachment
point address
Logical connection
(e.g., virtual circuit)
Logical connection
(TCP connection)
Port
Figure 2.4 TCP/IP Concepts
TCP/IP Address Requirements
Two levels of addressing are needed:
User data
TCP
header
IP
header
Network
header
Application
byte stream
TCP
segment
IP
datagram
Network-level
packet
Figure 2.5 Protocol Data Units (PDUs) in the TCP/IP Architecture
Transmission Control Protocol
(TCP)
TCP is the transport layer protocol for most
applications
TCP provides a reliable connection for transfer
of data between applications
A TCP segment is the basic protocol unit
TCP tracks segments between entities for
duration of each connection
Figure 2.6 TCP and UDP Headers
Source Port Destination Port
Checksum Urgent Pointer
Sequence Number
Acknowledgement Number
Options + Padding
Reserved Flags Window
Header
length
0 Bit: 4 8 16 31
2
0
o
c
t
e
t
s
Source Port Destination Port
Segment Length Checksum
0 Bit: 16 31
8
o
c
t
e
t
s
(a) TCP Header
(b) UDP Header
User Datagram Protocol
(UDP)
Alternative to TCP
Does not guarantee delivery, preservation of
sequence, or protection against duplication
Enables a procedure to send messages to other
procedures with a minimum of protocol
mechanism
Adds port addressing capability to IP
Used with Simple Network Management Protocol
(SNMP)
Includes a checksum to verify that no error occurs
in the data
(a) IPv4 Header
(b) IPv6 Header
Figure 2.7 IP Headers
Version DS ECN IHL Total Length
Identification Flags Fragment Offset
Time to Live Protocol Header Checksum
Options + Padding
Source Address
Destination Address
0 Bit: 4 8 16 19 31
2
0
o
c
t
e
t
s
14
Version DS
DS = Differentiated services field
ECN = Explicit congestion notification field
Note: The 8-bit DS/ECN fields were formerly
known as the Type of Service field in the IPv4
header and the Traffic Class field in the IPv6
header.
ECN Flow Label
Payload Length Next Header Hop Limit
Source Address
Destination Address
0 Bit: 4 10 12 16 24 31
4
0
o
c
t
e
t
s
(a) IPv4 Header
(b) IPv6 Header
Figure 2.7 IP Headers
Version DS ECN IHL Total Length
Identification Flags Fragment Offset
Time to Live Protocol Header Checksum
Options + Padding
Source Address
Destination Address
0 Bit: 4 8 16 19 31
2
0
o
c
t
e
t
s
14
Version DS
DS = Differentiated services field
ECN = Explicit congestion notification field
Note: The 8-bit DS/ECN fields were formerly
known as the Type of Service field in the IPv4
header and the Traffic Class field in the IPv6
header.
ECN Flow Label
Payload Length Next Header Hop Limit
Source Address
Destination Address
0 Bit: 4 10 12 16 24 31
4
0
o
c
t
e
t
s
BGP = Border Gateway Protocol
FTP = File Transfer Protocol
HTTP = Hypertext Transfer Protocol
ICMP = Internet Control Message Protocol
IGMP = Internet Group Management Protocol
IP = Internet Protocol
MIME = Multipurpose Internet Mail Extension
OSPF = Open Shortest Path First
RSVP = Resource ReSerVation Protocol
SMTP = Simple Mail Transfer Protocol
SNMP = Simple Network Management Protocol
SSH = Secure Shell
TCP = Transmission Control Protocol
UDP = User Datagram Protocol
Figure 2.8 Some Protocols in the TCP/IP Protocol Suite
FTP HTTP
TCP
SMTP
MIME
SSH SNMP
UDP
IGMP OSPF
BGP
IP
RSVP ICMP
Figure 2.9 A Protocol Architecture as a Framework for Standardization
Application
Layer
Physical
Layer
Layer N
Layer N
Service to Layer N+1
(functional description
for internal use)
Addressing
(port or service
access point)
Protocol with peer
Layer N
(precise syntax and
semantics for
interoperability)
Service Primitives and
Parameters
Services between adjacent layers
Expressed as:
s
Specify the function to be performed
Used to pass data and control information
Table 2.1
Service Primitive Types
(a) Confirmed Service
Request
Response
Indication
Confirm
Service user Service user Service provider
Figure 2.10 Time Sequence Diagrams for Service Primitives
(b) Nonconfirmed Service
Request
Indication
Service user Service user Service provider
Traditional Internet-Based
Applications
Three common applications that have been
standardized to operate on top of TCP are:
Provides a mechanism for transferring messages among separate
hosts
Simple Mail Transfer Protocol (SMTP)
Used to send files from one system to another under user
command
Both text and binary files are accommodated
File Transfer Protocol (FTP)
Provides a secure remote logon capability
Secure Shell (SSH)
Table 2.2
Multimedia Terminology
T
e
x
t
S
o
u
n
d
G
r
a
p
h
i
c
s
M
o
t
i
o
n
MEDIA TYPE
APPLICATION
Figure 2.11 A Multimedia Taxonomy
TECHNOLOGIES
MM e-mail
Computer architecture
Operating system
User interface
Compression
Synchronization
Database
Communications/networking
Protocols
Quality of service
Collaborative work systems
MM conferencing
Streaming audio/video
VoIP
Media Types
audio generally
encompasses sounds that
are produced by the human
speech mechanism
image supports the
communication of individual
pictures, charts, or
drawings
video service carries
sequences of pictures in
time
text is information that can
be entered via a keyboard
and is directly readable and
printable
Table 2.3
Domains of Multimedia Systems
and Example Applications
Domain Example Application
Information management Hypermedia, multimedia-capable databases, content-
based retrieval
Entertainment Computer games, digital video, audio (MP3)
Telecommunication Videoconferencing, shared workspaces, virtual
communities
Information
publishing/delivery
Online training, electronic books, streaming media
Multimedia Applications
Information systems
Information kiosks,
electronic books that
include audio and video,
and multimedia expert
systems
Communication
systems
Support collaborative work,
such as videoconferencing
Entertainment
systems
Computer and network
games and other forms of
audiovisual entertainment
Business systems
Business-oriented
multimedia presentations,
video brochures, and online
shopping
Educational systems
Electronic books with a
multimedia component,
simulation and modeling
applets, and other teaching
support systems
Multimedia Technologies
Some technologies that are relevant to the
support of multimedia applications are:
Compression
JPG for still
images
MPG for
video
Communications/networking
Refers to the
transmission
and
networking
technologies
that can
support high-
volume
multimedia
traffic
Protocols
RTP
SIP
Quality of service (QoS)
Can deal
with priority,
delay
constraints,
delay
variability
constraints,
and other
similar
requirements
Sockets Programming
Concept was developed in the 1980s in the
UNIX environment as the Berkeley Sockets
Interface
De facto standard application programming
interface (API)
Basis for Window Sockets (WinSock)
Enables communication between a client and
server process
May be connection oriented or
connectionless
The Socket
Formed by the concatenation of a port value and an IP
address
Unique throughout the Internet
Used to define an API
Generic communication interface for writing programs that use
TCP or UDP
Stream sockets
All blocks of data sent between a pair of sockets are guaranteed
for delivery and arrive in the order that they were sent
Datagram sockets
Delivery is not guaranteed, nor is order necessarily preserved
Raw sockets
Allow direct access to lower-layer protocols
Table
2.4
Core
Socket
Functions
(Table can be found
on page 54 in
textbook)
Format Function Parameters
socket( )
Initialize a socket domain Protocol family of the socket to be created
(AF_UNIX, AF_INET, AF_INET6)
type Type of socket to be opened (stream, datagram,
raw)
protocol Protocol to be used on socket (UDP, TCP, ICMP)
bind( )
Bind a socket to a
port address
sockfd Socket to be bound to the port address
localaddress Socket address to which the socket is bound
addresslength Length of the socket address structure
listen( )
Listen on a socket
for inbound
connections
sockfd Socket on which the application is to listen
queuesize Number of inbound requests that can be queued
at any time
accept( )
Accept an
inbound
connection
sockfd Socket on which the connection is to be
accepted
remoteaddress Remote socket address from which the
connection was initiated
addresslength Length of the socket address structure
connect( )
Connect
outbound to a
server
sockfd Socket on which the connection is to be
opened
remoteaddress Remote socket address to which the
connection is to be opened
addresslength Length of the socket address structure
send( )
recv( )
read( )
write( )
Send and receive
data on a stream
socket (either
send/recv or
read/write can be
used)
sockfd Socket across which the data will be sent or read
data Data to be sent, or buffer into which the read
data will be placed
datalength Length of the data to be written, or amount of
data to be read
sendto( )
recvfrom( )
Send and receive
data on a
datagram socket
sockfd Socket across which the data will be sent or read
data Data to be sent, or buffer into which the read
data will be placed
datalength Length of the data to be written, or amount of
data to be read
close( )
Close a socket sockfd Socket which is to be closed
socket()
bind()
listen()
accept()
blocks until
connection
from client
accept() creates
a new socket to
serve the new
client request
socket()
connect()
send() receive()
process
request
connection
establishment
Open communication
endpoint
Open communication
endpoint
Set up connection
to server
Send/receive data
Send/receive data
Shutdown
Register well-known
address with system
Establish client's connection;
request queue size
Accept first client connection
request on the queue
data (request)
data (reply)
Figure 2.12 Socket System Calls for Connection-Oriented Protocol
Server Client
send()
close()
receive()
close()
(Figure 2.13 can be
found on page 57 in
textbook)
(Figure 2.14 can be
found on page 58 in
textbook)
1 #include <stdio.h>
2 #include <sys/types.h>
3 #include <sys/socket.h>
4 #include <netinet/in.h>
5 #include <netdb.h>
6 void error(char *msg)
7 {
8 perror(msg);
9 exit(0);
10 }
11 int main(int argc, char *argv[])
12 {
13 int sockfd, portno, n;
14 struct sockaddr_in serv_addr;
15 struct hostent *server;
16 char buffer[256];
17 if (argc < 3) {
18 fprintf(stderr,"usage %s hostname port\n", argv[0]);
19 exit(0);
20 }
21 portno = atoi(argv[2]);
22 sockfd = socket(AF_INET, SOCK_STREAM, 0);
23 if (sockfd < 0)
24 error("ERROR opening socket");
25 server = gethostbyname(argv[1]);
26 if (server == NULL) {
27 fprintf(stderr,"ERROR, no such host\n");
28 exit(0);
29 }
30 bzero((char *) &serv_addr, sizeof(serv_addr));
31 serv_addr.sin_family = AF_INET;
32 bcopy((char *)server->h_addr,
33 (char *)&serv_addr.sin_addr.s_addr,
34 server->h_length);
35 serv_addr.sin_port = htons(portno);
36 if (connect(sockfd,(struct sockaddr *)&serv_addr,sizeof(serv_addr)) < 0)
37 error("ERROR connecting");
38 printf("Please enter the message: ");
39 bzero(buffer,256);
40 fgets(buffer,255,stdin);
41 n = write(sockfd,buffer,strlen(buffer));
42 if (n < 0)
43 error("ERROR writing to socket");
44 bzero(buffer,256);
45 n = read(sockfd,buffer,255);
46 if (n < 0)
47 error("ERROR reading from socket");
48 printf("%s\n",buffer);
49 return 0;
50 }
Figure 2.14 Sockets Client
Summary
The need for a protocol
architecture
Simple protocol
architecture
TCP/IP protocol
architecture
TCP/IP layers
Operation of TCP and IP
TCP and UDP
IP and IPv6
Protocol interfaces
Standardization within a
protocol architecture
Standards and protocol
layers
Service primitives and
parameters
Traditional internet-
based applications
Multimedia
Media types
Multimedia applications
Multimedia technologies
Sockets programming
The socket
Sockets interface calls