lector: aliyev h.u. lecture №7 design of client-server communication software. udp-based network...

22
Lector: Aliyev H.U. Lecture №7 Design of client-server communication software. UDP-based network programming TASHKENT UNIVERSITY OF INFORMATION TECHNOLOGIES THE DEPARTMENT OF DATA COMMUNICATION NETWORKS AND SYSTEMS

Upload: bertha-hoover

Post on 13-Jan-2016

214 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Lector: Aliyev H.U. Lecture №7 Design of client-server communication software. UDP-based network programming TASHKENT UNIVERSITY OF INFORMATION TECHNOLOGIES

Lector: Aliyev H.U.

Lecture №7 Design of client-server communication

software.UDP-based network programming

TASHKENT UNIVERSITY OF INFORMATION TECHNOLOGIES

THE DEPARTMENT OFDATA COMMUNICATION NETWORKS AND SYSTEMS

Page 2: Lector: Aliyev H.U. Lecture №7 Design of client-server communication software. UDP-based network programming TASHKENT UNIVERSITY OF INFORMATION TECHNOLOGIES

Introduction • In lecture 6, we looked at socket programming in .NET, and saw how we can use the

Socket class to connect to remote hosts using different protocols. In the last chapter, we looked at the TcpClient and TcpListener classes, which provide a higher-level implementation for connecting over TCP. The Microsoft .NET Framework also provides a special class called UdpClient specifically for implementing the User Datagram Protocol (UDP). In this chapter we'll look at the basics of the UDP protocol, and then see how to use the UdpClient class.

• In the previous lecture, we saw the 'three-phase handshake' that TCP uses to ensure that data is transmitted correctly. While this does make TCP far more reliable, it also adds a lot of overhead. UDP has none of this overhead, so it's much faster. This makes it well suited for multi-media transmissions such as video streams, where the precise order that packets arrive in may not be critical.

• In fact, UDP is an exceptionally simple protocol-the specification (RFC 768) is only three pages long! (This compares to 85 pages for the TCP specification, RFC 793.)

• In this lesson we'll look at:• A basic introduction to UDP• The advantages and disadvantages of the UDP protocol• Implementation of the UDP protocol in .NET using the UdpClient class• Higher-level UDP-based protocols

Page 3: Lector: Aliyev H.U. Lecture №7 Design of client-server communication software. UDP-based network programming TASHKENT UNIVERSITY OF INFORMATION TECHNOLOGIES

Connectionless-oriented client-server architecture

Page 4: Lector: Aliyev H.U. Lecture №7 Design of client-server communication software. UDP-based network programming TASHKENT UNIVERSITY OF INFORMATION TECHNOLOGIES

Overview of the UDP Protocol• The User Datagram Protocol (UDP) is a simple, connection-less, datagram-

oriented protocol and provides a fast but not necessarily reliable transport service. It supports and is often used for one-to-many communications, using broadcast or multicast IP datagrams.

• Internet Protocol (IP) is the basic protocol of the Internet. Transmission Control Protocol (TCP) and UDP are both transport-level protocols built on top of the underlying IP protocol. The following figure shows how the OSI model maps to the TCP/IP architecture and the TCP/IP protocol suite:

Page 5: Lector: Aliyev H.U. Lecture №7 Design of client-server communication software. UDP-based network programming TASHKENT UNIVERSITY OF INFORMATION TECHNOLOGIES

The differences between TCP and UDP

Characteristics UDP TCP

Connection-oriented N Y

Use of session N Y

Reliability N Y

Acknowledgement N Y

Sequencing N Y

Flow control N Y

Secure Less More

Data checksum Optionally Y

Overhead Less More

Speed Fast Slower

Topology One-to-oneOne-to-many

One-to-one

Header 8 bytes 20 bytes

Page 6: Lector: Aliyev H.U. Lecture №7 Design of client-server communication software. UDP-based network programming TASHKENT UNIVERSITY OF INFORMATION TECHNOLOGIES

UDP Terminology• Before we examine how UDP works, there is some basic terminology that we need to be familiar with. In

the following section, we'll briefly define some of the major terms related to UDP.• Packets• In data communication, a packet is a sequence of binary digits, representing data and control signals,

which is transmitted and switched across the host. Within the packet, this information is arranged in a specific format.

• Datagrams• A datagram is a self-contained, independent packet of data, carrying sufficient data to be routed from

source to destination without further information, so no exchanges between the source and destination computers and the transporting network are required.

• MTU• MTU stands for Maximum Transmission Unit. The MTU is a characteristic of the link layer that describes

the maximum number of bytes of data that can be transferred in a single packet. In other words, the MTU is the largest packet that a given network medium can carry. Ethernet, for example, has a fixed MTU of 1,500 bytes. In UDP, if the size of a datagram is larger than the MTU, IP performs fragmentation, breaking the datagram up into smaller pieces (fragments), so that each fragment is smaller than the MTU.

• Ports• UDP uses ports to map incoming data to a particular process running on a computer. UDP routes the

packet at the appropriate location using the port number specified in the UDP header of the datagram. Ports are represented by 16-bit numbers, and therefore range from 0 to 65,535. Ports are also referred to as the endpoints of logical connections, and are divided into three categories:

• Well-Known Ports-From 0 to 1,023• Registered Ports-From 1,024 to 49,151 and Dynamic/Private Ports-49,152 to 65,535.

Page 7: Lector: Aliyev H.U. Lecture №7 Design of client-server communication software. UDP-based network programming TASHKENT UNIVERSITY OF INFORMATION TECHNOLOGIES

How UDP Works• When a UDP-based application sends data to another

networked host, UDP adds an eight-byte header containing the destination and source port number, along with the total length of the data and a checksum. IP adds its own header on top of the UDP datagram to form an IP datagram

Page 8: Lector: Aliyev H.U. Lecture №7 Design of client-server communication software. UDP-based network programming TASHKENT UNIVERSITY OF INFORMATION TECHNOLOGIES

How UDP Works• The checksum is used to check whether the data has properly arrived at the

destination without being corrupted. The checksum covers both the UDP header and data. A pad byte is used if the checksum of the datagram is odd. If the checksum transmitted is zero, the receiver detects a checksum error and the datagram is discarded. The checksum is optional, but it is recommended always to keep it enabled.

• In the next step, the IP layer adds 20 bytes of header that include the TTL, the source and destination IP addresses, along with other information. This is known as IP encapsulation.

• As we mentioned above, the maximum size of a packet is 65,507 bytes. If the size of the packet exceeds the default size or the maximum size of the MTU, the IP layer breaks it into segments. These segments are called fragments, and the process of breaking the data into segments is known as fragmentation. The IP header contains all the information about the fragments.

• When the sender application ‘throws' a datagram onto the network, the datagram is routed to the destination IP address specified in the IP header. While passing through the router, the TTL (time-to-live) value in the IP header is decreased by one.

• When the datagram arrives at the correct destination and port, the IP layer checks whether the datagram is fragmented or not from the IP header. If it is fragmented, the datagram is reassembled using the information available in the header. Finally, the application layer retrieves the filtered data by removing the header.

Page 9: Lector: Aliyev H.U. Lecture №7 Design of client-server communication software. UDP-based network programming TASHKENT UNIVERSITY OF INFORMATION TECHNOLOGIES

Advantages of UDP

• No connection establishment. UDP is a connection-less protocol, so the overhead of making connections can be avoided. As UDP does not use any handshaking signals, the delay in making connections can be avoided. This is why DNS prefers UDP over TCP-DNS would be much slower if it ran over TCP.

• Speed. UDP is fast compared to TCP. Because of this, many applications prefer UDP over TCP. The features that make TCP more robust than UDP (such as handshaking signals) also make it slower.

• Topology support. UDP supports both one-to-one and one-to-many connections, whereas TCP supports only one-to-one communication.

• Overheads. TCP has higher overhead requirements; UDP has comparatively low overhead requirements. TCP uses substantially more OS resources than UDP does, and as a result UDP is widely used in environments where servers handle many simultaneous clients.

• Header size. UDP has only eight-byte headers for every segment, whereas TCP has 20-byte headers, making UDP less consuming of network bandwidth.

Page 10: Lector: Aliyev H.U. Lecture №7 Design of client-server communication software. UDP-based network programming TASHKENT UNIVERSITY OF INFORMATION TECHNOLOGIES

Disadvantages of UDP• Compared to TCP, UDP has the following disadvantages:• Lack of handshaking signals. Before sending a segment, UDP does not use handshaking

signals between sending and receiving the transport layer. The sender therefore has no way of knowing whether the datagram reaches the end system. As a result, UDP cannot guarantee that the data will actually be delivered at the destination (for example, in cases where the end system is off or the network is down).

• In contrast, TCP is a connection-oriented service and provides communication between a networked host using packets. TCP uses handshaking signals to check whether the transportation of data was successful.

• Use of sessions. To make TCP connection-oriented, sessions are maintained between hosts. TCP uses session IDs to keep track of connections between two hosts. UDP doesn't have any support for sessions due to its connection-less nature.

• Reliability. UDP does not guarantee that only one copy of the data will be delivered to the destination. To send large amounts of data to the end system, UDP breaks it into small segments. UDP does not guarantee that these segments will be delivered to the destination in the same order as they were created at the source. In contrast, TCP uses sequence numbers along with port numbers and frequent acknowledgement packets, which guarantee sequenced delivery of data.

• Security. TCP is more secure than UDP. In many organizations, firewalls and routers do not allow UDP packets. This is because hackers can use UDP ports, as explicit connections aren't required.

• Flow control. UDP doesn't have flow control; as a result, a poorly designed UDP application can tie up a big chunk of network bandwidth.

Page 11: Lector: Aliyev H.U. Lecture №7 Design of client-server communication software. UDP-based network programming TASHKENT UNIVERSITY OF INFORMATION TECHNOLOGIES

When we Use UDP

• Many applications on the Internet use UDP. UDP is known as a 'best effort service' protocol. Looking at the advantages and disadvantages of UDP we can conclude that UDP is beneficial:

• For broadcasting or multicasting purposes where the application wants to communicate with multiple hosts

• Where the datagram size is small and the sequence of fragments is not important

• Where connection setup is not required• When the application doesn't want to send important bulk data (as

UDP has no flow control)• If retransmission of packets is not required• Where low overhead on the operating system is required• Where network bandwidth is crucial

Page 12: Lector: Aliyev H.U. Lecture №7 Design of client-server communication software. UDP-based network programming TASHKENT UNIVERSITY OF INFORMATION TECHNOLOGIES

UDP in .NET• In .NET, the UDP protocol can be implemented using:• The UdpClient class• The Socket class• The Winsock control• The Winsock unmanaged API

Page 13: Lector: Aliyev H.U. Lecture №7 Design of client-server communication software. UDP-based network programming TASHKENT UNIVERSITY OF INFORMATION TECHNOLOGIES

The UdpClient Class• The Microsoft .NET Framework provides the UdpClient class for

implementing the UDP protocol on a network. As with the TcpClient and TcpListener classes, this class is built upon the Socket class but hides unnecessary members that aren't required for implementing a UDP-based application.

• Using UdpClient is quite simple. First, create an instance of UdpClient. Next, connect to the remote host by calling its Connect() method. These two steps can be achieved in one line of code by specifying the remote IP address and remote port number in the UdpClient's constructor. We said earlier that UDP is a connection-less protocol; so, you might be wondering, why do we need to connect? In fact, the Connect() method does not actually establish a connection to the remote host prior to sending and receiving data. When you send a datagram, the destination needs to be known; the specified IP address and port number serve this purpose.

Page 14: Lector: Aliyev H.U. Lecture №7 Design of client-server communication software. UDP-based network programming TASHKENT UNIVERSITY OF INFORMATION TECHNOLOGIES

UDP programming in .NET

Page 15: Lector: Aliyev H.U. Lecture №7 Design of client-server communication software. UDP-based network programming TASHKENT UNIVERSITY OF INFORMATION TECHNOLOGIES

UdpClient Methods and Properties

Page 16: Lector: Aliyev H.U. Lecture №7 Design of client-server communication software. UDP-based network programming TASHKENT UNIVERSITY OF INFORMATION TECHNOLOGIES

UDPClient based programming

• The basic procedure for sending data with the UDPClient class is shown in the following diagram:

Page 17: Lector: Aliyev H.U. Lecture №7 Design of client-server communication software. UDP-based network programming TASHKENT UNIVERSITY OF INFORMATION TECHNOLOGIES

UDPClient based programming

• The four steps for sending data using UDP are:• -Create a UdpClient instance• -Connect to the remote host (optional)• -Send the data• -Close the connection

Page 18: Lector: Aliyev H.U. Lecture №7 Design of client-server communication software. UDP-based network programming TASHKENT UNIVERSITY OF INFORMATION TECHNOLOGIES

UDPClient based programming• Before we look at the Send() method in detail, let's take a quick look at an example that shows this

general process:• // Example: Sending Data. • private static void Send(string datagram) • { // Remote IP address • IPAddress remoteAddress = IPAddress.Parse("127.0.0.1");• // Port we want to connect to int remotePort = 5001; • // ** STEP 1 ** Create the UdpClient instance • UdpClient sender = new UdpClient();• try • { // ** STEP 2 ** Connect to remote host• sender.Connect(remoteAddress, remotePort); • Console.WriteLine("Sending datagram: {0}", datagram); • byte [] bytes = Encoding.ASCII.GetBytes(datagram);• // ** STEP 3 ** Send data to connected host • sender.Send(bytes, bytes.Length);• // ** STEP 4 ** Close the connection • sender.Close();• }• catch (Exception e)• { • Console.WriteLine(e.ToString());• } • }

Page 19: Lector: Aliyev H.U. Lecture №7 Design of client-server communication software. UDP-based network programming TASHKENT UNIVERSITY OF INFORMATION TECHNOLOGIES

Higher-level UDP-based Protocols in different service application design

Application-layer protocol Description/Use

RTF (Real-time Protocol) Real time media

NFS (Network File System) Remote file server

SNMP (Simple Network Management Protocol)

Network management

RIP (Routing Information Protocol) Routing protocol

DNS (Domain Name Service) Hostname resolution

TFTP (Trivial File Transfer Protocol) File transfer application

RPC (Remote Procedure Call) Typical client-server model

LDAP (Lightweight Directory Access Protocol)

Directory services

Page 20: Lector: Aliyev H.U. Lecture №7 Design of client-server communication software. UDP-based network programming TASHKENT UNIVERSITY OF INFORMATION TECHNOLOGIES

Higher-level UDP-based Protocols• Real-time Protocol (RTP)• RTP is an application-layer protocol designed for delivering real-time media such as audio/video over

unicast or multicast private and public IP networks. One example is Microsoft NetMeeting, which uses RTP to send real-time information across the Internet.

• The RTP-based application implements RTP by using UDP protocol and by adding some functionality. The added functionality provides sequence numbering, payload identification, source identification, and time-stamping.

• Network File System (NFS)• Another popular application that uses UDP is Network File System, which provides transparent file

access to files and file-systems across the network. The advantage of NFS over FTP (File Transfer Protocol) is that it provides transparent access to files. That is, NFS can access the portion of the file that is referenced by an application or process.

• NFS is built using Sun RFC, and uses the reserved UDP port number 2049 to perform file operations.• Simple Network Management Protocol (SNMP)• As its name indicates, Simple Network Management Protocol (SNMP) is a network-management

protocol widely used in networks. SNMP allows administrators to monitor and control remote hosts and gateways on a network. The SNMP service can handle one or more requests from the host. It communicates between a management program run by an administrator and the network management agent running on a host. SNMP uses ports 161 and 162 for the manager and agent respectively.

• Domain Name Service (DNS)• The Domain Name Service is a distributed database used by TCP/IP applications to map hostnames to IP

addresses. UDP is the preferred protocol for DNS applications, and it uses port 53 to send DNS queries to a name server.

• Trivial File Transfer Protocol (TFTP)• TFTP is an application-layer protocol useful for transferring files between remote hosts. This protocol is

intended to be used when bootstrapping diskless systems. It uses UDP port number 69 for its file transfer activity.

Page 21: Lector: Aliyev H.U. Lecture №7 Design of client-server communication software. UDP-based network programming TASHKENT UNIVERSITY OF INFORMATION TECHNOLOGIES

Conclusion

• In this lecture, we discussed the basics of the UDP protocol and saw how it compares with the TCP protocol. We covered how to implement the UDP protocol in .NET using the UdpClient class.

• We looked at the members of the UdpClient class, and saw how to use them within our programs.Lastly, we discussed some higher-level UDP-based protocols, which provide a demonstration of the sort of tasks that UDP is ideally suited to perform.

Page 22: Lector: Aliyev H.U. Lecture №7 Design of client-server communication software. UDP-based network programming TASHKENT UNIVERSITY OF INFORMATION TECHNOLOGIES

Q&A?