1 / 25

The Socket Interface

The Socket Interface. Chapter 21. Application Program Interface (API) Interface used between application programs and TCP/IP protocols Will look at one example that is a de facto standard Things to keep in mind Application/protocol interaction not in the standards

jorryn
Download Presentation

The Socket Interface

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. The Socket Interface Chapter 21

  2. Application Program Interface (API) • Interface used between application programs and TCP/IP protocols • Will look at one example that is a de facto standard • Things to keep in mind • Application/protocol interaction not in the standards • Distinguish between interface and protocols • In practice, details of interface depend on OS • Example is from BSD UNIX operating system • Is a widely accepted, de facto standard • Operations listed are NOT part of the TCP/IP standards

  3. UNIX I/O Paradigm • Unix is a process oriented OS • Applications execute as a user level process • Application interacts with OS via system calls • Act just like procedure calls • I/O is open-read-write-close • Call open to get file descriptor for file or device • Call read or write to do I/O • Call close to indicate done with object

  4. Adding Network I/O to UNIX • Originally, all I/O was open-read-write-close • Needed to add network protocols to UNIX • Interactions more complex • Passive server code as well as active client code • Specify datagram address when send vs when open • Abandoned the above paradigm • Additions made I/O interface more complex • Needed general mechanism for any protocol interface

  5. Socket Abstraction • Socket is basis for network I/O • Mechanism that provides an endpoint for communication • Create when needed; get integer to reference • Application can choose address binding method • TCP connection • Both endpoints must be specified • Use for UDP • Remote endpoint can be left unspecified • Pass as argument each time message is sent

  6. Creating a Socket • Use socket function to create a socket result = socket(pf, type, protocol) • pf specifies protocol family • type specifies communication type • Reliable stream; connectionless datagram; raw • protocol specifies a specific protocol in the family • Need more than just family and type • Ex: pipe in UNIX family cannot do packet delivery • Programmer must know protocol family well

  7. Socket Inheritance & Termination • Two system calls used to start new application programs • fork • Creates separate copy of currently executing process • New copy inherits all open file descriptors & sockets • exec • Desired application program loaded into the process • Still retains access to inherited sockets (and FDs)

  8. Both old and new processes share the existing sockets • OS keeps a count associated with each socket • Knows how many applications are using it • Programmer must ensure it is done in a meaningful way • To close a socket: close(socket) • Or, open sockets closed upon process termination • close actually decrements count; destroy socket when it reaches zero

  9. Specifying a Local Address • Upon creation, sockets have no association to local or destination addresses • TCP/IP • No local protocol port number has been assigned • No destination port or IP address has been specified • Client may not care what local address is • Server process at well-know port will care • Uses bind function to establish specific local addrs

  10. Connecting Sockets to Destination Addresses • Initially, sockets are unconnected • Not associated with any remote destination • Function connect binds a permanent destination • Form: connect(socket, destaddr, addrlen) • Semantics depend upon underlying protocol • Reliable stream service: build TCP connection • Connectionless service: stores dest address locally

  11. Sending Data Through a Socket • Sockets are used to transmit data • Five possible functions • write • write(socket, buffer, length) • buffer contains the address of the data to be sent • Works with connected sockets only • writev • writev(socket, iovector, vectorlen) • iovector contains a sequence of pointers to blocks of bytes • Works with connected sockets only

  12. send • send(socket, message, length, flags) • message gives the address of the data • flags controls the transmission • Works with connected sockets only • sendto • sendto(socket, message, length, flags, destaddr, addrlen) • destaddr specifies the socket address structure • sendmsg • sendmsg(socket, messagestruct, flags) • messagestruct is a structure with the required information • Used when sendto makes the program inefficient or hard to read

  13. Receiving Data Through a Socket • Analogous five input functions • read(descriptor, buffer, length) • readv(descriptor, iovector, vectorlen) • recv(socket, buffer, length, flags) • recfrom(socket, buffer, length, flags, fromaddr, addrlen) • recmsg(socket, messagestruct, flags)

  14. Text gives examples of many socket functions and library routines • Can read over at your convenience

  15. How a Server Accepts Connections • Once a socket is established, the server waits for a connection • Uses function accept to do so • newsock = accept(socket, addr, addrlen) • When a request arrives: • addr and addrlen filled in • New socket created that has destination connected to client • Original socket still remains open • Call to accept returns

  16. Server can handle connections one of two ways • Iteratively • Server handles request, closes new socket, calls accept • Concurrently • Master creates slave to handle request at new socket • Closes its copy of the new socket • Calls accept • Slave closes socket when it finishes, and then terminates • Multiple processes will be using same local protocol port • Ok because pair of endpoints defines a connection • Master server has wildcard in foreign destination • All other processes have a specific foreign dest

  17. Socket Library Calls • Socket API also offers set of library routines • Perform useful functions related to networking • System calls pass control to computer’s OS • Library routines are like other program procedures Figure 21.5

  18. Many socket library routines provide database services • Determine names of machines & network services • Determine protocol port numbers • Find out other related information • Sections 21.19 - 21.25 examine groups of library routines

  19. Example Client & Server • Text gives example C program using the socket API to access TCP/IP protocols • Implements simple whois client & server • Client is an application that a user invokes • Two arguments: name of remote machine and user • Creates socket, uses TCP, binds socket to whois port • Server only slightly more complex • Listens on well-know whois port • Returns requested info from UNIX password file

  20. Summary • API for TCP/IP depends on details of OS • Because TCP/IP protocol SW resides inside OS • Interface not specified by protocol standard • Examined socket API • Originally designed for BSD UNIX • Widely used by many vendors (like Microsoft) • Uses UNIX open-read-write-close paradigm

  21. To use TCP, application program must: • Create socket • Bind addresses to it • Accept incoming connections • Communicate using read or write primitives • Close when finished • Many library routines available, also • Socket interface is popular and widely supported • If not have socket facilities in OS, often provide socket library • Underlying OS will use different set of system calls

More Related