User Datagram Protocol - PowerPoint PPT Presentation

About This Presentation
Title:

User Datagram Protocol

Description:

User Datagram Protocol. An initial look at using the UDP transport protocol for ... sendto( sock, buf, BUFSIZ, 0, (sockaddr*)&peer, plen ); close( sock ) ... – PowerPoint PPT presentation

Number of Views:66
Avg rating:3.0/5.0
Slides: 13
Provided by: cru6
Learn more at: https://www.cs.usfca.edu
Category:

less

Transcript and Presenter's Notes

Title: User Datagram Protocol


1
User Datagram Protocol
  • An initial look at using the UDP transport
    protocol for sending and receiving network
    packets

2
The Client/Server Paradigm
  • A great many network applications employ this
    asymmetrical program-design idea

client application runs on station B
server application runs on station A
request
time
response
3
The sockets API for server
struct sockaddr_in saddr 0 int salen
sizeof( saddr ) saddr.sin_family AF_INET
saddr.sin_port htons( port ) saddr.sin_addr
htonl( INADDR_ANY ) sock socket( AF_INET,
SOCK_DGRAM, IPPROTO_UDP ) bind( sock,
(sockaddr)saddr, salen ) struct
sockaddr_in peer 0 int plen sizeof( peer
) char buf BUFSIZ 0 recvfrom( sock,
buf, BUFSIZ, 0, (sockaddr)peer, plen )
sendto( sock, buf, BUFSIZ, 0, (sockaddr)peer,
plen ) close( sock )
server
4
The sockets API for client
struct hostent pp gethostbyname( peername,
NLEN ) struct sockaddr_in peer 0
int plen sizeof( peer ) peer.sin_family
AF_INET peer.sin_port htons( port )
peer.sin_addr.s_addr (uint32_t)pp-gth_addr
sock socket( AF_INET, SOCK_DGRAM, IPPROTO_UDP
) char msg MSGSIZ Hello, world! \n
sendto( sock, msg, MSGSIZ, 0, (sockaddr)peer,
plen ) char buf BUFSIZ 0 recvfrom(
sock, buf, BUFSIZ, 0, (sockaddr)peer, plen )
close( sock )
client
5
udpserver.cpp and udpclient.cpp
  • This pair of network application-programs
    provides us with a simple illustration of the
    basic paradigm
  • First, launch udpserver on station A
  • Then launch udpclient on station B
  • We can watch the ethernet frames being sent and
    received using our nicwatch

6
The packet format
Ethernet Frame Header
Internet Protocol Header
UDP Header
applications message
This message is written to the socket by
the application
This header is added by the transport layer
This header is added by the network layer
This header is added by the link layer
7
The UDP header
32 bits
Source port
Destination port
UDP Checksum
UDP Length
The UDP Length field is the total number of bytes
of data, plus the 8 bytes that comprise this UDP
Header structure
The UDP Checksum field is computed using an
algorithm based upon ones-complement addition of
the 16-bit words in the entire UDP segment (its
data and its header), along with an extra
structure known as the UDP Pseudo-Header
8
The IP header
32 bits
Header length
Total Length (in bytes)
Type of Service
IP version
Identification
Fragment offset
D
M
Time-to-Live
Header Checksum
Protocol ID-number
Source IP-address
Destination IP-address
Options
9
The Frame header
14 bytes
Destination MAC-address (6 bytes)
Source MAC-address (6 bytes)
Type/Length (2 bytes)
An integer which describes the type of this
packet, or its length in bytes
The unique hardware-address for the network
interface which should receive this packet
The unique hardware-address for the network
interface which is transmitting this packet
Used for filtering packets that are not
intended for a particular host interface
Needed when sending back replies to
requests, and for error-notifications
10
Algorithm
Rough idea for a simplified traceroute
algorithm int ttl 1 do send UDP message
toward host using ttl receive response from
router or from host if Resource temporarily
unavailable, break if No route to Host,
then show who sent it while ( ttl lt 30
)
Implementing this basic traceroute algorithm
would require us to modify the value of the
Time-to-Live field in an outgoing packets
IP-header, but doing that directly is prohibited
by our lack of access to kernel data
11
Using setsockopt()
  • There is a socket-option at the IP-Level which
    allows an application program to adjust the
    Time-to-Live value assigned to any outgoing UDP
    packets IP header

unsigned char ttl 5 // maximum of five
hops int tlen sizeof( ttl ) // length of
the option data if ( setsockopt( sock, SOL_IP,
IP_TTL, ttl, tlen ) lt 0 ) perror(
setsockopt TTL ) exit(1)
12
Demo tweakttl.cpp
  • This program allows a user to specify the
    destination hostname, the port-number, and the
    desired Time-to-Live value
  • For example
  • ./tweakttl stargate 54321 5
  • You can watch the outgoing packet, and any ICPM
    reply-message, with nicwatch
Write a Comment
User Comments (0)
About PowerShow.com