0
Socket Programming

          Srinidhi Varadarajan
Client-server paradigm
Client:
                                   application
                                   transport...
Application Layer Programming

API: application programming interface
 defines interface between application and
 transpor...
Socket Interface. What is it?
 Gives a file system like abstraction to the
 capabilities of the network.

 Each transport ...
Socket Abstraction
 The socket is the basic abstraction for network
 communication in the socket API
  – Defines an endpoi...
What do you need for socket communication ?

    Basically 4 parameters
    –   Source Identifier (IP address)
    –   Sou...
Creating a socket
 int socket(int domain, int type, int protocol)


Protocol Family:                     Usually
  PF_INET...
Binding a socket
int bind (int socket, struct sockaddr *address, int addr_len)



  This call is executed by:
   – Server ...
Socket Descriptors
 Operating system maintains a set of
 socket descriptors for each process
 – Note that socket descripto...
Socket Descriptors
  Socket        Socket Data
 Descriptor      Structure
   Table      proto family:
0:            PF_INE...
TCP Server Side: Listen
int listen (int socket, int backlog)


 This server side call specifies the number
 of pending con...
TCP Server Side: Passive Open
int accept (int socket, struct sockaddr *address, int *addr_len)


   This call is executed ...
TCP Client Side: Active Open
int connect (int socket, struct sockaddr *address, int *addr_len)

   This call is executed b...
Sockets: Summary
   Client:
int socket(int domain, int type, int protocol)
int connect (int socket, struct sockaddr *addre...
Message Passing
 int send (int socket, char *message, int msg_len, int
           flags) (TCP)
 int sendto (int socket, vo...
Summary of Basic Socket Calls
    CLIENT        Connect      SERVER
             (3-way handshake)
   connect()           ...
Network Byte Order
 Network byte order is most-significant
 byte first
 Byte ordering at a host may differ
 Utility functi...
Some Other “Utility” Functions
 gethostname() -- get name of local host
 getpeername() -- get address of remote
 host
 get...
Some Other “Utility” Functions
 inet_addr() -- convert “dotted”
 character string form of IP address to
 internal binary f...
Address Data Structures
struct sockaddr {
  u_short    sa_family;       // type of address
  char       sa_data[14];     /...
Upcoming SlideShare
Loading in...5
×

Socket Programming

3,015

Published on

Published in: Technology, Education
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
3,015
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
246
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

Transcript of "Socket Programming"

  1. 1. Socket Programming Srinidhi Varadarajan
  2. 2. Client-server paradigm Client: application transport initiates contact with server network data link (“speaks first”) physical typically requests service request from server, for Web, client is implemented in browser; for e-mail, in mail reader reply Server: provides requested service application transport to client network data link physical e.g., Web server sends requested Web page, mail server delivers e-mail
  3. 3. Application Layer Programming API: application programming interface defines interface between application and transport layer sockets: Internet API – two processes communicate by sending data into socket, reading data out of socket
  4. 4. Socket Interface. What is it? Gives a file system like abstraction to the capabilities of the network. Each transport protocol offers a set of services. The socket API provides the abstraction to access these services The API defines function calls to create, close, read and write to/from a socket.
  5. 5. Socket Abstraction The socket is the basic abstraction for network communication in the socket API – Defines an endpoint of communication for a process – Operating system maintains information about the socket and its connection – Application references the socket for sends, receives, etc. Network Process Process A B Ports (Sockets)
  6. 6. What do you need for socket communication ? Basically 4 parameters – Source Identifier (IP address) – Source Port – Destination Identifier – Destination Port In the socket API, this information is communicated by binding the socket.
  7. 7. Creating a socket int socket(int domain, int type, int protocol) Protocol Family: Usually PF_INET or UNSPEC PF_UNIX Communication semantics: SOCK_STREAM or SOCK_DGRAM The call returns a integer identifier called a handle
  8. 8. Binding a socket int bind (int socket, struct sockaddr *address, int addr_len) This call is executed by: – Server in TCP and UDP It binds the socket to the specified address. The address parameter specifies the local component of the address, e.g. IP address and UDP/TCP port
  9. 9. Socket Descriptors Operating system maintains a set of socket descriptors for each process – Note that socket descriptors are shared by threads Three data structures – Socket descriptor table – Socket data structure – Address data structure
  10. 10. Socket Descriptors Socket Socket Data Descriptor Structure Table proto family: 0: PF_INET Address Data 1: service: Structure 2: SOCK_STREAM address family: . . local address: . AF_INET remote address: host IP: 128.173.88.85 . . . port: 80
  11. 11. TCP Server Side: Listen int listen (int socket, int backlog) This server side call specifies the number of pending connections on the given socket. When the server is processing a connection, “backlog” number of connections may be pending in a queue.
  12. 12. TCP Server Side: Passive Open int accept (int socket, struct sockaddr *address, int *addr_len) This call is executed by the server. The call does not return until a remote client has established a connection. When it completes, it returns a new socket handle corresponding to the just- established connection
  13. 13. TCP Client Side: Active Open int connect (int socket, struct sockaddr *address, int *addr_len) This call is executed by the client. *address contains the remote address. The call attempts to connect the socket to a server. It does not return until a connection has been established. When the call completes, the socket “socket” is connected and ready for communication.
  14. 14. Sockets: Summary Client: int socket(int domain, int type, int protocol) int connect (int socket, struct sockaddr *address, int addr_len) Server: int socket(int domain, int type, int protocol) int bind (int socket, struct sockaddr *address, int addr_len) int listen (int socket, int backlog) int accept (int socket, struct sockaddr *address, int *addr_len)
  15. 15. Message Passing int send (int socket, char *message, int msg_len, int flags) (TCP) int sendto (int socket, void *msg, int len, int flags, struct sockaddr * to, int tolen ); (UDP) int write(int socket, void *msg, int len); /* TCP */ int recv (int socket, char *buffer, int buf_len, int flags) (TCP) int recvfrom(int socket, void *msg, int len, int flags, struct sockaddr *from, int *fromlen); (UDP) int read(int socket, void *msg, int len); (TCP)
  16. 16. Summary of Basic Socket Calls CLIENT Connect SERVER (3-way handshake) connect() accept() new connection write() Data read() read() Data write() close() close()
  17. 17. Network Byte Order Network byte order is most-significant byte first Byte ordering at a host may differ Utility functions – htons(): Host-to-network byte order for a short word (2 bytes) – htonl(): Host-to-network byte order for a long word (4 bytes) – ntohs(): Network-to-host byte order for a short word – ntohl(): Network-to-host byte order for a long word
  18. 18. Some Other “Utility” Functions gethostname() -- get name of local host getpeername() -- get address of remote host getsockname() -- get local address of socket getXbyY() -- get protocol, host, or service number using known number, address, or port, respectively getsockopt() -- get current socket options setsockopt() -- set socket options ioctl() -- retrieve or set socket information
  19. 19. Some Other “Utility” Functions inet_addr() -- convert “dotted” character string form of IP address to internal binary form inet_ntoa() -- convert internal binary form of IP address to “dotted” character string form
  20. 20. Address Data Structures struct sockaddr { u_short sa_family; // type of address char sa_data[14]; // value of address } sockaddr is a generic address structure struct sockaddr_in { u_short sa_family; // type of address (AF_INET) u_short sa_port; // protocol port number struct in_addr sin_addr; // IP address char sin_zero[8]; // unused (set to zero) } sockaddr_in is specific instance for the Internet address family
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×