Outline UNIX Sockets
Outline UNIX Sockets
CS 640
Berkeley Sockets
Networking protocols are implemented as part of the OS
The networking API exported by most OSs is the socket interface Originally provided by BSD 4.1c ~1982.
Socket()
Bind() Client Listen() Socket() Accept() Block until connect Recv() Connection Establishmt. Data (request) Connect() Send()
Process request
Send()
Socket()
Client Bind() Socket() Recvfrom()
Bind()
Block until Data from client Process request Sendto() Data (reply) Recvfrom()
CS 640 4
Data (request)
Sendto()
Socket call
Means by which an application attached to the network int socket(int family, int type, int protocol) Family: address family (protocol family)
AF_UNIX, AF_INET, AF_NS, AF_IMPLINK
Bind call
Binds a newly created socket to the specified address
Int bind(int socket, struct sockaddr *address, int addr_len)
Socket: newly created socket handle Address: data structure of address of local system
IP address and port number (demux keys) Same operation for both connection-oriented and connectionless servers
Can use well known port or unique port
CS 640
Listen call
Used by connection-oriented servers to indicate an application is willing to receive connections Int(int socket, int backlog) Socket: handle of newly creates socket Backlog: number of connection requests that can be queued by the system while waiting for server to execute accept call.
CS 640
Accept call
After executing listen, the accept call carries out a passive open (server prepared to accept connects).
Int accept(int socket, struct sockaddr *address, int addr_len)
It blocks until a remote client carries out a connection request. When it does return, it returns with a new socket that corresponds with new connection and the address contains the clients address
CS 640 8
Connect call
Client executes an active open of a connection
Int connect(int socket, struct sockaddr *address, int addr_len)
Call does not return until the three-way handshake (TCP) is complete Address field contains remote systems address Client OS usually selects random, unused port
CS 640
Send(to), Recv(from)
After connection has been made, application uses send/recv to data
Int send(int socket, char *message, int msg_len, int flags)
Send specified message using specified socket
CS 640
10
Socket Implimentation
Protocol implementation
Process per protocol
Use a separate process to implement each protocol Messages are passes between processes
Buffer use
Applications use buffers as do protocols
Copies are VERY expensive Message abstraction enables pointers to be used and minimal copies
CS 640 11
Client and server can be on same system Think about error handling methods Refer to Stevens Baby steps!!
CS 640 12