Socket Abstraction and Interprocess CommunicationTopicsIntroductionPurposes of IPCIPC using socketsWhat are sockets?Sockets and portsInter Process CommunicationSocket NamesSocket typesFunctions : creationFunctions - bindFunctions -bind (contd.)Functions (contd.) - closeFunctions (contd.) - connectFunctions (contd.) -sendingFunctions(contd.) - receivingFunctions (contd.) -listenFunctions (contd.) - acceptFunctions (contd.) - getsocknameSockets used for datagramsSockets used for streamsSockets on Unix01/14/19 B.R 1Socket Abstraction and Interprocess CommunicationB.RamamurthyCSE42101/14/19 B.R 2TopicsPipes (process level)Sockets (OS level)Distributed System Methods(Java’s) Remote Method Invocation (PL Level)Other communication paradigms01/14/19 B.R 3IntroductionTypical applications today consist of many cooperating processes either on the same host or on different hosts. For example, consider a client-server application. How to share (large amounts of ) data? Share files? How to avoid contention? What kind of system support is available? We want a general mechanism that will work for processes irrespective of their location.01/14/19 B.R 4Purposes of IPCData transferSharing dataEvent notificationProcess control01/14/19 B.R 5IPC using socketsWhat if wanted to communicate between processes that have no common ancestor? Ans: socketsIPC for processes that are not necessarily on the same host.Sockets use names to refer to one another. Means of network IO.01/14/19 B.R 6What are sockets? Socket is an abstraction for an end point of communication that can be manipulated with a file descriptor.It is an abstract object from which messages are sent and received.Sockets are created within a communication domain just as files are created within a file system.A communication domain is an abstraction introduced to bundle common properties of processes communicating through sockets. Example: UNIX domain, internet domain.01/14/19 B.R 7Sockets and portsmessageagreed portany portsocketsocketInternet address = 138.37.88.249Internet address = 138.37.94.248other portsclientserver01/14/19 B.R 8Inter Process CommunicationIP address and port number. About 216 ports are available for use by user processes.UDP and TCP abstraction of the above is a socket.Socket is associated with a protocol.IPC is transmitting a message between a socket in one process to a socket in another process.Messages sent to particular IP and port# can be received by the process whose socket is associated with that IP and port#.Processes cannot share ports with other processes within the computer. Can receive messages on diff ports.01/14/19 B.R 9Socket NamesApplications refer to sockets by name.But within the communication domain sockets are referred by addresses.Name to address translation is usually done outside the operating system.01/14/19 B.R 10Socket typesThe format in which an address is specified is according to a domain: AF_UNIX (address format of UNIX) - a path name within the file system,AF_INET (internet format) : network address, port number etc.Communication style: stream , datagram, raw or sequenced packetsStream : reliable, error-free, connection-oriented comm.Datagram: Connectionless, unreliable, message boundaries preserved.01/14/19 B.R 11Functions : creationSocket creation : socket system call creates sockets on demand.sockid = socket (af, type, protocol);where sockid is an int,af - address family , AF_INET, AF_UNIX, AF_AAPLETALK etc.type - communication type: SOCK_STREAM, SOCK_DGRAM, SOCK_RAW etc.protocol - some domains have multiple protocol, use a 0 for your appl.Example: door1 = socket(AF_UNIX, SOCK_DGRAM,0);01/14/19 B.R 12Functions - bindSocket binding: A socket is created without any association to local or destination address. It is possible to bind the socket to a specific host and in it a specific port number.socerr = bind (sockid, localaddr, addrlength)localaddr - a struct of a specific format for each address domain; addrlength - is the length of this struct; obtained usually by sizeof function.01/14/19 B.R 13Functions -bind (contd.)Example: type sockaddr_un defines localaddr format for unix family.its definition, (you don’t have to define it... it is in un.h file - include this file)struct sockaddr_un { short sun_family; char sun_path[108]; };in your program:#define SocName “testsock”sockaddr_un mysoc;mysoc.sun_family = AF_UNIX;strcpy(mysoc.sun_path, SocName);binderr = bind(sockid, &mysoc, sizeof(mysoc));01/14/19 B.R 14Functions (contd.) - closeclose (socid); closes the specified socket. This is done by a process or thread when it no longer needs the socket connection. Premature closing results in “broken pipe” error.When a socket is created it is represented by a special file (‘s’ in the place where d appears for directory files when you ls -l).The name of the file is the name assigned in the socket bind command.01/14/19 B.R 15Functions (contd.) - connectA socket is created in an unconnected state, which means that the socket is not associated with any destination.An application program should call connect to establish a connection before it can transfer data thru’ reliable stream socket. For datagrams connect is not required but recommended.connect ( sockid, destaddr, addlength);Example: if (connect(sock, &server, sizeof(server)) < 0) ...“sendto” command does not need “connect”01/14/19 B.R 16Functions (contd.) -sendingFive different system calls : send, sendto, sendmsg, write, writevsend, write and writev work only with connected sockets. No parameter for destination address. Prior connect should be present for communication. Example : write (sock, DATA, sizeof(DATA));sendto (socket, message, length, flags, destaddr, addlen);flags allow for special processing of messages. Use 0 in your appln.sendmsg is same as sento except that it allows for different message structure.01/14/19 B.R 17Functions(contd.) - receivingFive different calls are available: read, readv, recv, recvfrom, recvmsgread, readv, and recv are for connection-oriented comm.read(socdescriptor, buffer, length); Example: read(sock, buf, 1024);For your application (project) you may use read.For connectionless, datagram-kind : recvfrom(same set of params as sendto); except that message length and addr length return values.01/14/19 B.R 18Functions (contd.) -listenaccept and listen are connection-oriented communication.These are for AF_INET, SOCK_STREAM type of sockets.listen: To avoid
View Full Document