This document provides an overview of socket programming. It discusses what sockets are, which are endpoints for communication between an application and the TCP/IP protocol stack. Sockets are represented by file descriptors that allow applications to read and write data to the network. It then covers protocols like TCP and UDP, the client-server programming paradigm, and the common socket API. TCP provides reliable, in-order connections, while UDP is unreliable but supports broadcasting. Sample code demonstrates how sockets are created and used in both TCP and UDP client-server applications.
2. Overview
What are sockets ?
What is file descriptor ?
Protocols
Client – Server paradigm
Socket API
TCP(Transmission Control Protocol)
UDP(User Datagram Protocol)
3. What are Sockets ?
• A socket is defined as an endpoint of
communication
• Service access point of TCP/IP protocol stack
• between Application layer and Transport layer
• A file descriptor that lets an application read/write
data from/to the network
• Once configured the application can
• Send data to the socket
• Receive data from the socket
4. What is file descriptor ?
Text Terminal
#x sock
Keyboard
#std
in
s td
#1
Display
ut
o
Program
Internet
#2stden
• E.g. cout writes data to stdout #(1)
cin read data from stdin #(0)
5. A socket is a file descriptor that lets an application read/write from/to the
network
int fd; /*socket descriptor*/
if ((fd = socket(AF_INET, SOCK-STREAM, 0)) < 0) }
fd = socket(AF_INET,
SOCK_STREAM, 0)) < 0) }
perror(“socket”);
exit(1);
• socket returns an integer(socket descriptor)
• fd < 0} indicates that an error occurred
• Socket descriptor s are similar to file descriptors
• AF_INET: associates a socket with the internet protocol family
• SOCK_STREAM: selects the TCP protocol
• SOCK_DGRAM: selects the UDP protocol
6. Protocols
• A protocol is a set of rules of communication. Protocols
are the building blocks of a network architecture.
• Each protocol object has two different interfaces:
service interface: operations on this protocol
peer-to-peer interface: messages exchanged with
peer
• Term “protocol” is overloaded
specification of peer-to-peer interface
module that implements this interface
7. Client - Server paradigm
• Server waits for client to request a connection.
• Client contacts server to establish a connection.
• Client sends request.
• Server sends reply.
• Client and/or server terminate connection.
8. Socket API
Server and client exchange messages over the network through a common
Socket API
CLIENTS
User
space
SERVER
PORTS
TCP/UDP
TCP/UDP
IP
Ethernet
Adapter
SOCKET
API
IP
Ethernet
Adapter
Kernel
space
Hardw
-are
9. Transmission Control Protocol (TCP)
TCP
Telephone call
• Reliable - guarantee delivery
•
Guaranteed delivery
• Byte stream - in - order
delivery
•
In order delivery
•
Connection oriented
•
Setup connection followed
by conversation
• Connection - oriented single socket per connection
• Setup connection followed
by data transfer
Example TCP applications
Web, E-mail, Telnet
10. Review: TCP Client - server interaction
TCP Server
socket( )
bind( )
TCP Client
listen( )
socket( )
connect( )
write( )
Connection establishment
Data request
accept( )
read( )
Data reply
write( )
read( )
close( )
end – of - f
ile
read()
notification
close()
11. User Datagram Protocol (UDP)
UDP
•
•
•
•
•
Post Mail
Single socket to receive
messages
No guarantee of delivery
Not necessarily in – order
delivery
Datagram - independent
packets
Must address each packet
•
•
•
•
•
Single mail box to
receive letters
Unreliable
Not necessarily in order delivery
Letters send
independently
Must address each reply
Example UDP applications
Multimedia, voice over IP
12. Review: UDP Client – server interaction
UDP Server
socket( )
UDP client
bind( )
socket( )
sendto( )
recvfrom( )
close( )
data
requ
est
data reply
recvfrom( )
blocks until datagram
received from a client
sendto()
close( )
13. TCP vs. UDP
• Transmission Control Protocol (TCP)
•
•
•
•
•
One - to - one
Connection - oriented
Reliable
In order delivery
Transmission after connect
• User Datagram Protocol (UDP)
•
•
•
•
•
One to one or many
Connectionless
Unreliable
Unordered delivery
Transmission with destination address
14. Final thoughts
• Make sure to #include the header files
that defines used functions
• Check man – pages and web – site
for additional information