CHAPTER 8 ELEMENTARY UDP SOCKETS - Doug …blough.ece.gatech.edu/4110/ElementaryUDPSockets.pdf ·...
Transcript of CHAPTER 8 ELEMENTARY UDP SOCKETS - Doug …blough.ece.gatech.edu/4110/ElementaryUDPSockets.pdf ·...
![Page 1: CHAPTER 8 ELEMENTARY UDP SOCKETS - Doug …blough.ece.gatech.edu/4110/ElementaryUDPSockets.pdf · CHAPTER 8 ELEMENTARY UDP SOCKETS ... datagram protocol. ... IPV4 socket address structure](https://reader030.fdocuments.in/reader030/viewer/2022012313/5b5918b07f8b9a31668cb64e/html5/thumbnails/1.jpg)
1
CHAPTER 8 ELEMENTARY UDP SOCKETS
User Datagram Protocol is a connectionless, “unreliable” datagram protocol. Function calls for a typical UDP Client/server
- Client does not establish a connection with the server.
- Server does not accept a connection from a client.- recvfrom function returns the protocol address of the client so server can send a response to correct client.
![Page 2: CHAPTER 8 ELEMENTARY UDP SOCKETS - Doug …blough.ece.gatech.edu/4110/ElementaryUDPSockets.pdf · CHAPTER 8 ELEMENTARY UDP SOCKETS ... datagram protocol. ... IPV4 socket address structure](https://reader030.fdocuments.in/reader030/viewer/2022012313/5b5918b07f8b9a31668cb64e/html5/thumbnails/2.jpg)
2
![Page 3: CHAPTER 8 ELEMENTARY UDP SOCKETS - Doug …blough.ece.gatech.edu/4110/ElementaryUDPSockets.pdf · CHAPTER 8 ELEMENTARY UDP SOCKETS ... datagram protocol. ... IPV4 socket address structure](https://reader030.fdocuments.in/reader030/viewer/2022012313/5b5918b07f8b9a31668cb64e/html5/thumbnails/3.jpg)
3
recvfrom and sendto functions
sockfd - Descriptor.*buff - Pointer to buffer to read or write.nbytes - Number of Bytes to read or write.flags - Set to 0 for now
to
sendto
socket address structure containing the protocoladdress (IP address and port # ) of where data isto be sent.
addrlen Size of socket address structure (an integer value).
recvfrom
from
*addrlen ← ( pointer to integer value )
socket address structure that is filled in byrecvfrom with the protocol address (IP addressand port # ) of where data came from.
![Page 4: CHAPTER 8 ELEMENTARY UDP SOCKETS - Doug …blough.ece.gatech.edu/4110/ElementaryUDPSockets.pdf · CHAPTER 8 ELEMENTARY UDP SOCKETS ... datagram protocol. ... IPV4 socket address structure](https://reader030.fdocuments.in/reader030/viewer/2022012313/5b5918b07f8b9a31668cb64e/html5/thumbnails/4.jpg)
4
[ from p. 240 ]
![Page 5: CHAPTER 8 ELEMENTARY UDP SOCKETS - Doug …blough.ece.gatech.edu/4110/ElementaryUDPSockets.pdf · CHAPTER 8 ELEMENTARY UDP SOCKETS ... datagram protocol. ... IPV4 socket address structure](https://reader030.fdocuments.in/reader030/viewer/2022012313/5b5918b07f8b9a31668cb64e/html5/thumbnails/5.jpg)
5
UDP echo Server
Redo echo client - server from chapter 5 but using UDP
UDPClient
UDPServer
fgets
fputs
sendto recvfrom
recvfrom sendto
![Page 6: CHAPTER 8 ELEMENTARY UDP SOCKETS - Doug …blough.ece.gatech.edu/4110/ElementaryUDPSockets.pdf · CHAPTER 8 ELEMENTARY UDP SOCKETS ... datagram protocol. ... IPV4 socket address structure](https://reader030.fdocuments.in/reader030/viewer/2022012313/5b5918b07f8b9a31668cb64e/html5/thumbnails/6.jpg)
6
Server Main Function
Lines 7-12: Note now we use SOCK_DGRAM to mean UDP
INADDR_ANY = 0SERV_PORT = 9877
Line 13dg_echo does the server processing
Server dg_echo function
Line 8-12:
Loop reads next datagram and sends back.
![Page 7: CHAPTER 8 ELEMENTARY UDP SOCKETS - Doug …blough.ece.gatech.edu/4110/ElementaryUDPSockets.pdf · CHAPTER 8 ELEMENTARY UDP SOCKETS ... datagram protocol. ... IPV4 socket address structure](https://reader030.fdocuments.in/reader030/viewer/2022012313/5b5918b07f8b9a31668cb64e/html5/thumbnails/7.jpg)
7
![Page 8: CHAPTER 8 ELEMENTARY UDP SOCKETS - Doug …blough.ece.gatech.edu/4110/ElementaryUDPSockets.pdf · CHAPTER 8 ELEMENTARY UDP SOCKETS ... datagram protocol. ... IPV4 socket address structure](https://reader030.fdocuments.in/reader030/viewer/2022012313/5b5918b07f8b9a31668cb64e/html5/thumbnails/8.jpg)
8
![Page 9: CHAPTER 8 ELEMENTARY UDP SOCKETS - Doug …blough.ece.gatech.edu/4110/ElementaryUDPSockets.pdf · CHAPTER 8 ELEMENTARY UDP SOCKETS ... datagram protocol. ... IPV4 socket address structure](https://reader030.fdocuments.in/reader030/viewer/2022012313/5b5918b07f8b9a31668cb64e/html5/thumbnails/9.jpg)
9
Server dg_echo function cont.
Note:
- This dg-echo function never terminates.
- This is an iterative server which is typical for UDP.
A concurrent server calls fork function, TCP is typically concurrent.
- Each UDP socket has a receive buffer. ( Aside: size is controlled by a socket option SO_RCVBUF ).
Difference between UDP and TCP implementations of our example
![Page 10: CHAPTER 8 ELEMENTARY UDP SOCKETS - Doug …blough.ece.gatech.edu/4110/ElementaryUDPSockets.pdf · CHAPTER 8 ELEMENTARY UDP SOCKETS ... datagram protocol. ... IPV4 socket address structure](https://reader030.fdocuments.in/reader030/viewer/2022012313/5b5918b07f8b9a31668cb64e/html5/thumbnails/10.jpg)
10
![Page 11: CHAPTER 8 ELEMENTARY UDP SOCKETS - Doug …blough.ece.gatech.edu/4110/ElementaryUDPSockets.pdf · CHAPTER 8 ELEMENTARY UDP SOCKETS ... datagram protocol. ... IPV4 socket address structure](https://reader030.fdocuments.in/reader030/viewer/2022012313/5b5918b07f8b9a31668cb64e/html5/thumbnails/11.jpg)
11
![Page 12: CHAPTER 8 ELEMENTARY UDP SOCKETS - Doug …blough.ece.gatech.edu/4110/ElementaryUDPSockets.pdf · CHAPTER 8 ELEMENTARY UDP SOCKETS ... datagram protocol. ... IPV4 socket address structure](https://reader030.fdocuments.in/reader030/viewer/2022012313/5b5918b07f8b9a31668cb64e/html5/thumbnails/12.jpg)
12
UDP echo Client Main Function
Lines 9-12: IPV4 socket address structure is filled in with the IP address, and port number of server.
Lines 13: UDP socket is created
Lines14:
Call dg_cli
dg_cli function
Lines 7: Read a line from standard input using fgets. Lines 8: Send the line to server using sendto.
Lines 9: Read back server’s ECHO using recvfrom.
Lines 10: Print the echoed line to standard output using fputs.
Note: Our client does not call bind, it is NOT NECESSARY
![Page 13: CHAPTER 8 ELEMENTARY UDP SOCKETS - Doug …blough.ece.gatech.edu/4110/ElementaryUDPSockets.pdf · CHAPTER 8 ELEMENTARY UDP SOCKETS ... datagram protocol. ... IPV4 socket address structure](https://reader030.fdocuments.in/reader030/viewer/2022012313/5b5918b07f8b9a31668cb64e/html5/thumbnails/13.jpg)
13
![Page 14: CHAPTER 8 ELEMENTARY UDP SOCKETS - Doug …blough.ece.gatech.edu/4110/ElementaryUDPSockets.pdf · CHAPTER 8 ELEMENTARY UDP SOCKETS ... datagram protocol. ... IPV4 socket address structure](https://reader030.fdocuments.in/reader030/viewer/2022012313/5b5918b07f8b9a31668cb64e/html5/thumbnails/14.jpg)
14
![Page 15: CHAPTER 8 ELEMENTARY UDP SOCKETS - Doug …blough.ece.gatech.edu/4110/ElementaryUDPSockets.pdf · CHAPTER 8 ELEMENTARY UDP SOCKETS ... datagram protocol. ... IPV4 socket address structure](https://reader030.fdocuments.in/reader030/viewer/2022012313/5b5918b07f8b9a31668cb64e/html5/thumbnails/15.jpg)
15
LACK OF FLOW CONTROL WITH UDP
Modify client dg _ cli function to send a fixed number of datagrams
Now writes 2,000 times a 1,400 BYTE UDP datagram to server.
Modify server dg_echo function to receive datagrams and count the number received
( No longer echo datagrams back to client )
Line 9: Adds ability to execute the function recvfrom_int when type cntrl C.
This function prints out how many we got.
![Page 16: CHAPTER 8 ELEMENTARY UDP SOCKETS - Doug …blough.ece.gatech.edu/4110/ElementaryUDPSockets.pdf · CHAPTER 8 ELEMENTARY UDP SOCKETS ... datagram protocol. ... IPV4 socket address structure](https://reader030.fdocuments.in/reader030/viewer/2022012313/5b5918b07f8b9a31668cb64e/html5/thumbnails/16.jpg)
16
![Page 17: CHAPTER 8 ELEMENTARY UDP SOCKETS - Doug …blough.ece.gatech.edu/4110/ElementaryUDPSockets.pdf · CHAPTER 8 ELEMENTARY UDP SOCKETS ... datagram protocol. ... IPV4 socket address structure](https://reader030.fdocuments.in/reader030/viewer/2022012313/5b5918b07f8b9a31668cb64e/html5/thumbnails/17.jpg)
17
![Page 18: CHAPTER 8 ELEMENTARY UDP SOCKETS - Doug …blough.ece.gatech.edu/4110/ElementaryUDPSockets.pdf · CHAPTER 8 ELEMENTARY UDP SOCKETS ... datagram protocol. ... IPV4 socket address structure](https://reader030.fdocuments.in/reader030/viewer/2022012313/5b5918b07f8b9a31668cb64e/html5/thumbnails/18.jpg)
18
![Page 19: CHAPTER 8 ELEMENTARY UDP SOCKETS - Doug …blough.ece.gatech.edu/4110/ElementaryUDPSockets.pdf · CHAPTER 8 ELEMENTARY UDP SOCKETS ... datagram protocol. ... IPV4 socket address structure](https://reader030.fdocuments.in/reader030/viewer/2022012313/5b5918b07f8b9a31668cb64e/html5/thumbnails/19.jpg)
19
![Page 20: CHAPTER 8 ELEMENTARY UDP SOCKETS - Doug …blough.ece.gatech.edu/4110/ElementaryUDPSockets.pdf · CHAPTER 8 ELEMENTARY UDP SOCKETS ... datagram protocol. ... IPV4 socket address structure](https://reader030.fdocuments.in/reader030/viewer/2022012313/5b5918b07f8b9a31668cb64e/html5/thumbnails/20.jpg)
20
3882 – 1970 = 1912 dropped due to full socket buffer82 datagrams received => 1994 datagrams6 datagrams were never received
Repeat this test several times and receive: 37, 108, 30, 108, 114
We can change the socket’s receive buffer using SO_RCVBUF socketoption
Default size in UDP for a BSD/OS is 41,600 bytes => room for only
41,600 = 29 of our datagrams
1400 Can change to 240 K bytes size
Now we receive 115, 168, 179, 145, and 133 in Stevens example runs.
Not much bigger than 37, 108, 30, 108, 114 from before buffer size change.
![Page 21: CHAPTER 8 ELEMENTARY UDP SOCKETS - Doug …blough.ece.gatech.edu/4110/ElementaryUDPSockets.pdf · CHAPTER 8 ELEMENTARY UDP SOCKETS ... datagram protocol. ... IPV4 socket address structure](https://reader030.fdocuments.in/reader030/viewer/2022012313/5b5918b07f8b9a31668cb64e/html5/thumbnails/21.jpg)
21