Survey
* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the work of artificial intelligence, which forms the content of this project
CSS434 Networking
Textbook Ch3
Professor: Munehiro Fukuda
CSS434 Networking
1
Outline
OSI 7 layers
Physical/data link layers (layer 1 & 2)
Network layer – IP (layer 3)
Transport layer – TCP UDP (layer 4)
Application layer – RSH (layer 7)
Socket examples
CSS434 Networking
2
OSI 7 Layers
Site
A
7
Application
6
Presentation
5
Session
4
Transport
3
Network
2
1
Data link
Physical
Site
B
Application protocol
Presentation protocol
Application
Presentation
Session protocol
Transport protocol
Network protocol
Data link protocol
Physical protocol
Session
rsh, ftp, Telnet
Dealing with heterogeneity
And cryptography
Dialog control
(rarely supported)
Transport
UDP, TCP
Network
IP
Data link
IEEE802.2
connection or connectionless
Ethernet
Physical
Network
CSS434 Networking
3
OSI Protocol Summary
Layer
Application
Presentation
Session
Transport
Network
Data link
Physical
Description
Protocols that are designed to meet the communication requirements of
specific applications, often defining the interface to a service.
Protocols at this level transmit data in a network representation that is
independent of the representations used in individual computers, which may
differ. Encryption is also performed in this layer, if required.
At this level reliability and adaptation are performed, such as detection of
failures and automatic recovery.
This is the lowest level at which messages (rather than packets) are handled.
Messages are addressed to communication ports attached to processes,
Protocols in this layer may be connection-oriented or connectionless.
Transfers data packets between computers in a specific network. In a WAN
or an internetwork this involves the generation of a route passing through
routers. In a single LAN no routing is required.
Responsible for transmission of packets between nodes that are directly
connected by a physical link. In a WAN transmission is between pairs of
routers or between routers and hosts. In a LAN it is between any pair of hosts.
The circuits and hardware that drive the network. It transmits sequences of
binary data by analogue signalling, using amplitude or frequency modulation
of electrical signals (on cable circuits), light signals (on fibre optic circuits)
or other electromagnetic signals (on radio and microwave circuits).
CSS434 Networking
Examples
HTTP, FTP , SMTP,
CORBA IIOP
Secure Sockets
(SSL),CORBA Data
Rep.
TCP, UDP
IP, ATM virtual
circuits
Ethernet MAC,
ATM cell transfer,
PPP
Ethernet base- band
signalling, ISDN
4
Physical/Data Link Layer
Example: CSMA/CD and Token Ring
1 listen
3. detect
Ⅹ
2 transmit
1. Free token
2. Attach
3. busy token
IEEE802.3: CSMA/CD (Carrier sense
multiple access with collision detection)
1.
Listening to the shared medium
2.
Transmitting a data packet
3.
Detecting collision on the medium
4.
Deferring and retransmitting a packet
in 2k–time base collision window
IEEE802.5: Token Ring
1.
Receiving a free token from my (left)
neighbor
2.
Attaching a data packet to the token
3.
Forwarding the token to my (right)
neighbor
4.
Detaching a packet from the token if it
is addressed here
4. Detach
CSS434 Networking
5
Network Layer
Example: IP
Transportation layer
Datagram
Class A
fragmentation
SDL
reassembly
SDL
IP packet ID and size
Destination IP address
Source IP address
IP packet ID and size
Destination IP address
Source IP address
0 Net #
Host #
Octet 2 – 4
(1,677,716)
Octet 1
0-127
Class B
10
Octet 1
128-191
Net #
Host #
Octet 2
Octet 3 – 4
(65,536)
Net #
Host#
Class C
110
Data link layer
Best-effort deliver semantics
Octet 1
128-191
Octet 2 – 3
Octet 4
(256)
Class D: for broadcasting
CSS434 Networking
6
Transport Layer:
Example1: UDP
client
server
socket()
Create a sock descriptor
socket()
bind()
Bind it to an IP address
bind()
recvfrom()
sendto()
Blocks until data received
recvfrom()
User Datagram Protocol
Connectionless
May be lost
No FIFO order
Multicast feature
Unix datagram
Example: TFTP, rwho
sendto()
CSS434 Networking
7
Transport Layer:
Example2: TCP
client
server
Transport Control Protocol
Connection-oriented
Bind it to an IP address
Reliable
bind()
FIFO order
Declare this is connection-oriented liseten()
No Multicast feature
Unix stream socket
Wait for a connection
accept()
Example: ftp, http, rsh all
Connection established
connect()
Blocks until connection established major applications
socket()
Create a sock descriptor
socket()
write()
read()
read()
wrte()
CSS434 Networking
8
Application Layer
Example: RSH
Client
shell
Server
TCP connection
request
Command
rsh ls- l
inetd
rshd
TCP connection
Inherited all the way
To a child
shell
Command
ls -l
CSS434 Networking
9
Summary of TCP/IP Layers
Message
Layers
Application
Messages (UDP) or Streams (TCP)
Transport
UDP or TCP packets
Internet
IP datagrams
Network interface
Network-specific frames
Underlying network
CSS434 Networking
10
Socket Programming: Socket.h
#include <iostream>
extern "C"
{
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>
#include <unistd.h>
#include <string.h>
}
// for sockets
// for gethostbyname( )
// for close( )
// for bzero( )
#define NULL_FD -1
#define MAXSIZE 20
class Socket {
public:
Socket( int );
~Socket( );
int getClientSocket( char[] );
int getServerSocket( );
private:
int port;
int clientFd;
int serverFd;
};
CSS434 Networking
11
Socket Programming:
Socket.cpp (Client)
#include "Socket.h"
Socket::Socket( int port )
: port( port ), clientFd( NULL_FD ),
serverFd( NULL_FD ) {
}
Socket::~Socket( ) {
if ( clientFd != NULL_FD )
close( clientFd );
if ( serverFd != NULL_FD )
close( serverFd );
}
int Socket::getClientSocket( char ipName[] ) {
// Fill in the structure "sendSockAddr" with the server address.
sockaddr_in sendSockAddr;
bzero( (char*)&sendSockAddr, sizeof( sendSockAddr ) );
sendSockAddr.sin_family
= AF_INET; //Address Family Internet
sendSockAddr.sin_addr.s_addr =
inet_addr( inet_ntoa( *(struct in_addr*)*host->h_addr_list ) );
sendSockAddr.sin_port
= htons( port );
// Open a TCP socket (an Internet strem socket).
if( ( clientFd = socket( AF_INET, SOCK_STREAM, 0 ) ) < 0 ) {
cerr << "Cannot open a client TCP socket." << endl;
return NULL_FD;
}
// Connect to the server.
while ( connect( clientFd, (sockaddr*)&sendSockAddr,
sizeof( sendSockAddr ) ) < 0 );
// Get the host entry corresponding to ipName
struct hostent* host = gethostbyname( ipName );
// Connected
if( host == NULL ) {
return clientFd;
cerr << "Cannot find hostname." << endl;
}
return NULL_FD;
}
CSS434 Networking
12
Socket Programming:
Socket.cpp (Server)
int Socket::getServerSocket( ) {
if ( serverFd == NULL_FD ) { // Server not ready
sockaddr_in acceptSockAddr;
// Open a TCP socket (an internet stream socket).
if( ( serverFd = socket( AF_INET, SOCK_STREAM, 0 ) ) < 0 ) {
cerr << "Cannot open a server TCP socket." << endl;
return NULL_FD;
}
// Bind our local address so that the client can send to us
bzero( (char*)&acceptSockAddr, sizeof( acceptSockAddr ) );
acceptSockAddr.sin_family
= AF_INET; // Address Family Internet
acceptSockAddr.sin_addr.s_addr = htonl( INADDR_ANY );
acceptSockAddr.sin_port
= htons( port );
if( bind( serverFd, (sockaddr*)&acceptSockAddr,
sizeof( acceptSockAddr ) ) < 0 ) {
cerr << "Cannot bind the local address to the server socket." << endl;
return NULL_FD;
}
}
listen( serverFd, 5 );
// Read to accept new requests
int newFd = NULL_FD;
sockaddr_in newSockAddr;
socklen_t newSockAddrSize = sizeof( newSockAddr );
}
if( ( newFd =
accept( serverFd, (sockaddr*)&newSockAddr, &newSockAddrSize ) ) < 0 ) {
cerr << "Cannot accept from another host." << endl;
return NULL_FD;
}
return newFd;
CSS434 Networking
13
Socket Programming: Main
#include "Socket.h"
#define PORT 10000 // You are given a specific pot from the instructor
int main( int argc, char *argv[] ) {
Socket sock( PORT );
int fd;
}
if ( argc == 1 ) { // I'm a server
while ( true ) {
if ( ( fd = sock.getServerSocket( ) ) == NULL_FD )
return -1;
char recvMessage[MAXSIZE];
read( fd, recvMessage, MAXSIZE );
cout << recvMessage << endl;
close( fd );
}
}
if ( argc == 2 ) { // I'm a client
if ( ( fd = sock.getClientSocket( argv[1] ) ) == NULL_FD )
return -1;
char sendMessage[MAXSIZE];
cin >> sendMessage;
write( fd, sendMessage, MAXSIZE );
}
return 0;
CSS434 Networking
14
Exercises (No turn-in)
1.
2.
3.
Why do we need layered network protocols?
When implementing TCP with datagram, what do we have
to take care of?
Compare UDP and TCP for the implementation of each of
the following application-level or presentation-level
protocols (textbook p142, Q3.7):
1.
2.
3.
4.
5.
Telnet
FTP
Rwho, finger
HTTP
RPC or RMI
CSS434 Networking
15