Chapter 24 - Socket Interface Introduction API The Socket API Sockets and socket libraries Sockets and UNIX I/O The socket API Summary of socket system.

Slides:



Advertisements
Similar presentations
Domain Name System. DNS is a client/server protocol which provides Name to IP Address Resolution.
Advertisements

CS335 Networking & Network Administration Tuesday, May 25, 2010.
Networks: TCP/IP Socket Calls1 Elementary TCP Sockets Chapter 4 UNIX Network Programming Vol. 1, Second Ed. Stevens.
Socket Programming.
TDC375 Autumn 03/04 John Kristoff - DePaul University 1 Network Protocols Domain Name System (DNS) largely based on slides from D. Comer.
Chapter 29 Structure of Computer Names Domain Names Within an Organization The DNS Client-Server Model The DNS Server Hierarchy Resolving a Name Optimization.
Tutorial 8 Socket Programming
1 Generic Transport Service Primitives Listen –notify Transport layer a call is expected Connect –establish Transport layer connection Send (or Write)
UDP: User Datagram Protocol. UDP: User Datagram Protocol [RFC 768] r “bare bones”, “best effort” transport protocol r connectionless: m no handshaking.
CS 311 – Lecture 18 Outline IPC via Sockets – Server side socket() bind() accept() listen() – Client side connect() Lecture 181CS Operating Systems.
© 2007 Pearson Education Inc., Upper Saddle River, NJ. All rights reserved.1 Computer Networks and Internets with Internet Applications, 4e By Douglas.
Socket Addresses. Domains Internet domains –familiar with these Unix domains –for processes communicating on the same hosts –not sure of widespread use.
CSE/EE 461 Getting Started with Networking. Basic Concepts  A PROCESS is an executing program somewhere.  Eg, “./a.out”  A MESSAGE contains information.
Domain Name System: DNS
TCP/IP Protocol Suite 1 Chapter 17 Upon completion you will be able to: Domain Name System: DNS Understand how the DNS is organized Know the domains in.
Chapter 26 Client Server Interaction Communication across a computer network requires a pair of application programs to cooperate. One application on one.
1 Tutorial on Socket Programming Computer Networks - CSC 458 Department of Computer Science Yukun Zhu (Slides are mainly from Monia Ghobadi, and Amin Tootoonchian,
Network Programming Tutorial #9 CPSC 261. A socket is one end of a virtual communication channel Provides network connectivity to any other socket anywhere.
Chapter 16 – DNS. DNS Domain Name Service This service allows client machines to resolve computer names (domain names) to IP addresses DNS works at the.
Chapter 17 Networking Dave Bremer Otago Polytechnic, N.Z. ©2008, Prentice Hall Operating Systems: Internals and Design Principles, 6/E William Stallings.
9/12/2015B.R1 Socket Abstraction and Interprocess Communication B.Ramamurthy CSE421.
1 Chapter Client-Server Interaction. 2 Functionality  Transport layer and layers below  Basic communication  Reliability  Application layer.
Chapter 31 - Naming with the Domain Name System IP addresses vs. symbolic names Structure of Computer names DNS naming structure DNS server hierarchy An.
Chapter 17 Domain Name System
IP and Errors IP Best Effort Datagrams can be: –Lost –Delayed –Duplicated –Delivered out of order –Corrupted.
Jozef Goetz, Application Layer PART VI Jozef Goetz, Position of application layer The application layer enables the user, whether human.
Chapter 29 Domain Name System (DNS) Allows users to reference computer names via symbolic names translates symbolic host names into associated IP addresses.
Server Sockets: A server socket listens on a given port Many different clients may be connecting to that port Ideally, you would like a separate file descriptor.
 Wind River Systems, Inc Chapter - 13 Network Programming.
FALL 2003CSI 4118 – UNIVERSITY OF OTTAWA1 Part 3.1 Internet Applications Ch. 28,… (Client-Server Concept, Use of Protocol Ports, Socket API, DNS, ,
Dr. John P. Abraham Professor University of Texas Pan American Internet Applications and Network Programming.
Chapter 2 Applications and Layered Architectures Sockets.
The Socket Interface Chapter 21. Application Program Interface (API) Interface used between application programs and TCP/IP protocols Interface used between.
The Socket Interface Chapter 22. Introduction This chapter reviews one example of an Application Program Interface (API) which is the interface between.
1 Kyung Hee University Chapter 18 Domain Name System.
Windows Operating System Internals - by David A. Solomon and Mark E. Russinovich with Andreas Polze Unit OS A: Windows Networking A.2. Windows Sockets.
Outline Socket programming with Windows OSSocket programming with Windows OS C++ UDPSocket classC++ UDPSocket class Socket programming with Windows OSSocket.
CS 158A1 1.4 Implementing Network Software Phenomenal success of the Internet: – Computer # connected doubled every year since 1981, now approaching 200.
CPSC 441 TUTORIAL – FEB 13, 2012 TA: RUITNG ZHOU UDP REVIEW.
1 Computer Networks An Introduction to Computer Networks University of Tehran Dept. of EE and Computer Engineering By: Dr. Nasser Yazdani Lecture 3: Sockets.
TELE202 Lecture 15 Socket programming 1 Lecturer Dr Z. Huang Overview ¥Last Lecture »TCP/UDP (2) »Source: chapter 17 ¥This Lecture »Socket programming.
Introduction to Socket
FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA1 Part 3.1 Internet Applications Ch. 28,… (Client-Server Concept, Use of Protocol Ports, Socket API)
CSE/EE 461 Getting Started with Networking. 2 Basic Concepts A PROCESS is an executing program somewhere. –Eg, “./a.out” A MESSAGE contains information.
Chapter 27 Socket API Interface The interface between an application program and the communication protocols in an operating system is known as the Application.
Socket Programming Tutorial Department of Computer Science Southern Illinois University Edwardsville Fall, 2015 Dr. Hiroshi Fujinoki
Socket Programming Lab 1 1CS Computer Networks.
1 Sockets Programming Socket to me!. 2 Network Application Programming Interface (API) The services provided by the operating system that provide the.
CS 6401 Introduction to Computer Networks 09/21/2010 Outline - UNIX sockets - A simple client-server program - Project 1 - LAN bridges and learning.
The Client-Server Model And the Socket API. Client-Server (1) The datagram service does not require cooperation between the peer applications but such.
Part 4: Network Applications Client-server interaction, example applications.
2: Application Layer1 Chapter 2: Application layer r 2.1 Principles of network applications r 2.2 Web and HTTP r 2.3 FTP r 2.4 Electronic Mail  SMTP,
CSCI 330 UNIX and Network Programming Unit XIV: User Datagram Protocol.
Socket Programming. Computer Science, FSU2 Interprocess Communication Within a single system – Pipes, FIFOs – Message Queues – Semaphores, Shared Memory.
UNIX Sockets Outline UNIX sockets CS 640.
1 Spring Semester 2008, Dept. of Computer Science, Technion Internet Networking recitation #7 Socket Programming.
TCP/IP Protocol Suite 1 Chapter 17 Upon completion you will be able to: Domain Name System: DNS Understand how the DNS is organized Know the domains in.
Domain Name System INTRODUCTION to Eng. Yasser Al-eimad
Lecture 15 Socket Programming CPE 401 / 601 Computer Network Systems slides are modified from Dave Hollinger.
1 Socket Interface. 2 Client-Server Architecture The client is the one who speaks first Typical client-server situations  Client and server on the same.
1 Socket Interface. 2 Basic Sockets API Review Socket Library TCPUDP IP EthernetPPP ARP DHCP, Mail, WWW, TELNET, FTP... Network cardCom Layer 4 / Transport.
Sockets and Beginning Network Programming
Socket Interface 1 Introduction 11 Socket address formats 2 API 12 13
CSI 4118 – UNIVERSITY OF OTTAWA
Interacting With Protocol Software
Transport layer API: Socket Programming
UNIX Sockets Outline Homework #1 posted by end of day
Sockets Programming Socket to me!.
Sockets Programming Socket to me!.
CSI 4118 – UNIVERSITY OF OTTAWA
Presentation transcript:

Chapter 24 - Socket Interface Introduction API The Socket API Sockets and socket libraries Sockets and UNIX I/O The socket API Summary of socket system calls socket close bind Socket address formats listen accept connect send sendto, sendmsg recv, recvfrom, recvmsg Other procedures Sockets and processes Summary

Introduction The socket is one form of interface between application programs and protocol software Widely available - program portability Used by both clients and servers Extension to UNIX file I/O paradigm

API Application interactions with protocol software: Passive listen or active open Protocol to use IP address and port number Interface to protocol is call Application Program Interface (API) Defined by programming/operating system Includes collection of procedures for application program

The Socket API Protocols do not typically specify API API defined by programming system Allows greatest flexibility - compatibility with different programming systems Socket API is a specific protocol API Originated with Berkeley BSD UNIX Now available on Windows 95 and Windows NT, Solaris, etc. Not defined as TCP/IP standard; de factostandard

Sockets and socket libraries BSD UNIX includes sockets as system calls Other vendors (mostly UNIX) have followed suit Some systems have different API Adding sockets would require changing OS Added library procedures - socket library - instead Adds layer of software between application and operating system Enhances portability May hide native API altogether

Sockets and UNIX I/O Developed as extension to UNIX I/O system Uses same file descriptor address space (small integers) Based on open-read-write-close paradigm open - prepare a file for access read/write - access contents of file close - gracefully terminate use of file Open returns a file descriptor, which is used to identify the file to read/write/close

The socket API Socket programming more complex than file I/O Requires more parameters Addresses Protocol port numbers Type of protocol New semantics Two techniques Add parameters to existing I/O system calls Create new system calls Sockets use a collection of new system calls

Summary of socket system calls socket - create a new socket close - terminate use of a socket bind - attach a network address to a socket listen - wait for incoming messages accept - begin using incoming connection connect - make connection to remote host send - transmit data through active connection recv - receive data through active connection

Socket descriptor = socket(protofamily, type, protocol) Returns socket descriptor used in subsequent calls protofamily selects protocol family; e.g.: PF_INET - Internet protocols PF_APPLETALK - AppleTalk protocols type selects type of communication SOCK_DGRAM - connectionless SOCK_STREAM - connection-oriented protocol specifies protocol within protocol family IPPROTO_TCP - selects TCP IPPROTO_UDP - selects UDP

Close close(descriptor) Terminates use of socket descriptor descriptor contains descriptor of socket to be closed

Bind bind(socket, localaddr, address) Initially, socket has no addresses attached bind selects either local, remote or both addresses server binds local port number for incoming messages client binds remote address and port number to contact server

Socket address formats Because sockets can be used for any protocols, address format is generic: struct sockaddr { u_char sa_len; /* total length of address */ u_char sa_family; /* family of the address */ char sa_data[14]; /* address */ } For IP protocols, sa_data hold IP address and port number: struct sockaddr_in { u_char sin_len; /* total length of address */ u_char sin_family; /* family of the address */ u_short sin_port; /* protocol port number */ struct in_addr sin_addr; /* IP address */ char sin_zero[8] /* unused */ } First two fields match generic sockaddr structure Remainder are specific to IP protocols INADDR_ANY interpreted to mean "any" IP address

listen listen(socket, queuesize) Server uses listen to wait for incoming connections socket identifies socket through which connections will arrive (address) New connection requests may arrive while server processes previous request Operating system can hold requests on queue queuesize sets upper limit on outstanding requests

Accept accept(socket, caddress, caddresslen) Server uses accept to accept the next connection request accept call blocks until connection request arrives Returns new socket with server's end of new connection Old socket remains unchanged and continues to field incoming requests caddress returns struct sockaddr client address; format depends on address family of socket caddresslen returns length of address

Connect connect(socket, saddress, saddresslen) Client uses connect to establish connection to server Blocks until connection completed ( accept ed) socket holds descriptor of socket to use saddress is a struct sockaddr that identifies server saddresslen gives length of saddress Usually used with connection-oriented transport protocol Can be used with connectionless protocol Marks local socket with server address Implicitly identifies server for subsequent messages

Send send(socket, data, length, flags) Used to send data through a connected socket socket identifies socket data points to data to be sent length gives length of data (in bytes) flags indicate special options

Sendto, Sendmsg sendto(socket, data, length, flags, destaddress, addresslen) sendmsg(socket, msgstruct, flags) Used for unconnected sockets by explicitly specifying destination sendto adds additional parameters: destaddress - struct sockaddr destination address addresslen - length of destaddress sendmsg combines list of parameters into single structure: struct msgstruct { struct sockaddr *m_addr; /* ptr to destination address */ struct datavec *m_vec; /* pointer to message vector */ int m_dvlength; /* num. of items in vector */ struct access *m_rights; /* ptr to access rights list */ int m_alength; /* num. of items in list */ }

recv recv(socket, buffer, length, flags) Used to receive incoming data through connected socket socket identifies the socket Data copied into buffer At most length bytes will be recv ed flags give special options Returns number of bytes actually recv ed 0 implies connection closed -1 implies error

recvfrom, recvmsg recvfrom(socket, buffer, length, flags, sndraddress, addresslen) recvmsg(socket, msgstruct, flags) Like recvfrom and recvmsg (in reverse!) Address of source copied into sndraddress Length of address in addresslen recvmsg uses msgstruct for parameters

Other procedures getpeername - address of other end of connection getsockname - current address bound to socket setsockopt - set socket options

Sockets and processes Like file descriptors, sockets are inherited by child processes Socket disappears when all processes have close d it Servers use socket inheritance to pass incoming connections to slave server processes

Summary Socket API is de facto standard Originally developed for BSD UNIX Copied to many other systems Sockets are an extension of the UNIX file I/O system Use same descriptor addresses Can (but typically don't) use same system calls Many specific system calls for sockets

Chapter 26(29) - the Domain Name System Introduction Structure of DNS names DNS naming structure Geographic structure Domain names within an organization Example DNS hierarchy DNS names and physical location Client-server computing DNS and client-server computing DNS server hierarchy Choosing DNS server architecture Name resolution DNS messages DNS servers Using DNS servers DNS caching Types of DNS entries Abbreviations Summary

Introduction IP assigns 32-bit addresses to hosts (interfaces) Binary addresses easy for computers to manage All applications use IP addresses through the TCP/IP protocol software Difficult for humans to remember: % telnet The Domain Name System (DNS) provides translation between symbolic names and IP addresses

Structure of DNS names Each name consists of a sequence of alphanumeric components separated by periods Examples: home.ubalt.edu ubmail.ubalt.edu Names are hierarchical, with most-significant component on the right Left-most component is computer name

DNS naming structure Top level domains (right-most components; also known as TLDs) defined by global authority comCommercial organization eduEducational institution govGovernment organization milMilitary organization Organizations apply for names in a top-level domain: ubalt.edu microsoft.com Organizations determine own internal structure home.ubalt.edu server1.scitutor.com

Geographic structure Top-level domains are US-centric Geographic TLDs used for organizations in other countries: TLDCountry.uk United Kingdom.fr France.ch Switzerland.in India Countries define their own internal hierarchy: ac.uk and.edu.au are used for academic organizations in the United Kingdom and Australia

Domain names within an organization Organizations can create any internal DNS hierarchy Uniqueness of TLD and organization name guarantee uniqueness of any internal name (much like file names in your directories) All but the left-most component of a domain name is called the domain for that name: Name Domain server1.ait.ubalt.eduait.ubalt.edu mail.scitutor.comscitutor.com Authority for creating new subdomains is delegated to each domain Administrator of ubalt.edu has authority to create ait.ubalt.edu and need not contact any central naming authority

Example DNS hierarchy Page 443, Figure 29.2

DNS names and physical location DNS domains are logical concepts and need not correspond to physical location of organizations DNS domain for an organization can span multiple networks Ubalt.edu covers all networks at UB is on the 4th floor of Merrick Business School laptop.mis.ubalt.edu could be connected to a network in California

Client-server computing Clients and servers communicate in distributed computing Client initiates contact to request some remote computation Server waits for clients and answers requests as received Clients are usually invoked by users as part of an end-user application Servers are usually run on central, shared computers

DNS and client-server computing DNS names are managed by a hierarchy of DNS servers Hierarchy is related to DNS domain hierarchy Root server at top of tree knows about next level servers Next level servers, in turn, know about lower level servers

DNS server hierarchy Page 446, Figure 29.3

Choosing DNS server architecture Small organizations can use a single server Easy to administer Inexpensive Large organizations often use multiple servers Reliability through redundancy Improved response time through load-sharing Delegation of naming authority Locality of reference applies - users will most often look up names of computers within same organization

Name resolution Resolver software typically available as library procedures Implement DNS application protocol Configured for local servers Example - UNIX gethostbyname Calling program is client Constructs DNS protocol message - a DNS request Sends message to local DNS server DNS server resolves name Constructs DNS protocol message - a DNS reply Sends message to client program and waits for next request

DNS messages DNS request contains name to be resolved DNS reply contains IP address for the name in the request

DNS servers Each DNS server is the authoritative server for the names it manages If request contains name managed by receiving server, that server replies directly Otherwise, request must be forwarded to the appropriate authoritative server

Using DNS servers DNS request is forwarded to root server, which points at next server to use Eventually, authoritative server is located and IP address is returned DNS server hierarchy traversal is called iterative resolution Applications use recursive iteration and ask DNS server to handle traversal

DNS caching DNS resolution can be very inefficient Every host referenced by name triggers a DNS request Every DNS request for the address of a host in a different organization goes through the root server Servers and hosts use caching to reduce the number of DNS requests Cache is a list of recently resolved names and IP addresses Authoritative server include time-to-live with each reply

Types of DNS entries DNS can hold several types of records Each record includes Domain name Record type Data value A records map from domain name to IP address Domain name - Scitutor Record type - A Data value Other types: MX (Mail eXchanger) - maps domain name used as destination to IP address CNAME - alias from one domain name to another Result - name that works with one application may not work with another!

Abbreviations May be convenient to use abbreviations for local computers; e.g. ubmail for ubmail.ubalt.edu Abbreviations are handled in the resolver; DNS servers only know full-qualified domain names (FQDNs) Local resolver is configured with list of suffixes to append Suffixes are tried sequentially until match found

Summary Domain Name System maps from computer names and IP addresses Important to hide 32-bit IP addresses from humans DNS names are hierarchical and allocated locally Replication and caching are important performance enhancements DNS provides several types of records