Operating Systems Sockets. Outline F Socket basics F TCP sockets F Socket details F Socket options F Final notes F Project 3.

Slides:



Advertisements
Similar presentations
Sockets: Network IPC Internet Socket UNIX Domain Socket.
Advertisements

Today’s topic: Basic TCP API –Socket –Bind –Listen –Connect –Accept –Read –Write –Close.
Sockets CS 3516 – Computer Networks. Outline Socket basics Socket details (TCP and UDP) Socket options Final notes.
Distributed Computing Systems Sockets. Outline Socket basics Socket details (TCP and UDP) Socket options Final notes.
Elementary TCP Sockets Computer Networks Computer Networks Term B10 UNIX Network Programming Vol. 1, Second Ed. Stevens Chapter 4.
Computer Networks Sockets. Sockets and the OS F An end-point for Internet connection –What the application “plugs into” –OS provides Application Programming.
Networks: TCP/IP Socket Calls1 Elementary TCP Sockets Chapter 4 UNIX Network Programming Vol. 1, Second Ed. Stevens.
Computer Networks Sockets.
Elementary TCP Sockets Chapter 4 UNIX Network Programming Vol. 1, Second Ed. Stevens.
Multimedia Networking Sockets. Outline Socket basics Socket details (TCP and UDP) Socket options Final notes.
Sockets IMGD Outline Socket basics Socket details (TCP and UDP) Socket options Final notes.
CSCE 515: Computer Network Programming Socket Wenyuan Xu Department of Computer Science and Engineering.
Tutorial 8 Socket Programming
CS 311 – Lecture 18 Outline IPC via Sockets – Server side socket() bind() accept() listen() – Client side connect() Lecture 181CS Operating Systems.
Introduction to Socket Programming April What is a socket? An interface between application and network –The application creates a socket –The socket.
Introduction to Project 1 Web Client and Server Jan 2006.
Computer Networks Sockets. Outline F Socket basics F Socket details.
Lecture 10 Overview. Network API Application Programming Interface – Services that provide the interface between application and protocol software often.
1 Tutorial on Socket Programming Computer Networks - CSC 458 Department of Computer Science Yukun Zhu (Slides are mainly from Monia Ghobadi, and Amin Tootoonchian,
UNIX Sockets COS 461 Precept 1.
Sockets CIS 370 Fall 2009, UMassD. Introduction  Sockets provide a simple programming interface which is consistent for processes on the same machine.
Basic Socket Programming TCP/IP overview. TCP interface Reference: –UNIX Network Programming, by Richard Stevens. –UNIX man page.
UNIX Socket Programming CS 6378
TCP Socket Programming. r An abstract interface provided to the application programmer  File descriptor, allows apps to read/write to the network r Allows.
ECE 4110 – Internetwork Programming Client-Server Model.
1 Networking (Stack and Sockets API). 2 Topic Overview Introduction –Protocol Models –Linux Kernel Support TCP/IP Sockets –Usage –Attributes –Example.
Elementary TCP Sockets
CS345 Operating Systems Φροντιστήριο Άσκησης 2. Inter-process communication Exchange data among processes Methods –Signal –Pipe –Sockets.
Sockets CIS 370 Lab 10 UMass Dartmouth. Introduction 4 Sockets provide a simple programming interface which is consistent for processes on the same machine.
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.
Remote Shell CS230 Project #4 Assigned : Due date :
Networking Tutorial Special Interest Group for Software Engineering Luke Rajlich.
Advanced Sockets API-II Vinayak Jagtap
UNIT8: SOCKETS Topics Introduction to sockets Socket Addresses
CSCE 515: Computer Network Programming UDP Socket Wenyuan Xu Department of Computer Science and Engineering.
Elementary TCP Sockets UNIX Network Programming Vol. 1, Second Ed. Stevens Chapter 4.
UNIX Sockets COS 461 Precept 1. Socket and Process Communication The interface that the OS provides to its networking subsystem application layer transport.
Introduction to Socket
Socket Programming Lab 1 1CS Computer Networks.
CSCI 330 UNIX and Network Programming Unit XV: Transmission Control Protocol.
S OCKET P ROGRAMMING IN C Professor: Dr. Shu-Ching Chen TA: HsinYu Ha.
Introduction to Sockets
S OCKET P ROGRAMMING IN C Professor: Dr. Shu-Ching Chen TA: Hsin-Yu Ha.
Read() recv() connection establishment Server (connection-oriented protocol) blocks until connection from client Client socket() bind() listen() accept()
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.
Lecture 3 TCP and UDP Sockets 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.
Socket Programming(1/2). Outline  1. Introduction to Network Programming  2. Network Architecture – Client/Server Model  3. TCP Socket Programming.
1 Socket Interface. 2 Basic Sockets API Review Socket Library TCPUDP IP EthernetPPP ARP DHCP, Mail, WWW, TELNET, FTP... Network cardCom Layer 4 / Transport.
Socket Option.
Operating Systems Sockets ENCE 360.
UNIX Sockets COS 461 Precept 1.
Chapter4 Elementary TCP Socket
Socket Programming in C
Transport layer API: Socket Programming
UNIX Sockets Outline Homework #1 posted by end of day
Socket Programming in C
TCP Sockets Programming
TCP/IP Socket Programming in C
Socket Programming(1/2)
Sockets Programming Socket to me!.
Sockets Programming Socket to me!.
Internet Networking recitation #8
Outline Communications in Distributed Systems Socket Programming
Sockets.
Today’s topic: Basic TCP API
Presentation transcript:

Operating Systems Sockets

Outline F Socket basics F TCP sockets F Socket details F Socket options F Final notes F Project 3

Socket Basics F An end-point for a IP network connection –what the application layer “plugs into” –programmer cares about Application Programming Interface (API) F End-point determined by two things: –Host address (IP address) - name of machine –Port number - location of process F Two end-points determine a connection: socket pair –ex: ,p ,p1500 –ex: ,p ,p1499

Ports F Numbers (vary in BSD, Solaris): – “reserved”, must be root – “ephemeral” –however, many systems allow > 5000 ports u (50,000 is correct number) F /etc/services: ftp 21/tcp telnet 23/tcp finger 79/tcp snmp 161/udp

Sockets and the OS User Socket Operating System (Transport Layer) F User sees “descriptor”, integer index –like: FILE *, or file index –returned by socket() call (more later)

Network Communication F UDP: User Datagram Protocol –no acknowledgements –no retransmissions –out of order, duplicate possible –connectionless F TCP: Transmission Control Protocol –reliable (in order, all arrive, no duplicates) –flow control –connection –duplex –(Project 3 uses TCP)

Socket Details Unix Network Programming, W. Richard Stevens, 2nd edition,  1998, Prentice Hall F Socket address structure F TCP client-server F Misc stuff –setsockopt(), getsockopt() –fcntl()

Addresses and Sockets F Structure to hold address information F Functions pass address from app to OS –bind() –connect() –sendto() F Functions pass address from OS to app –accept() –recvfrom()

Socket Address Structure struct in_addr { in_addr_t s_addr; /* 32-bit IPv4 addresses */ }; struct sock_addr_in { unit8_t sin_len; /* length of structure */ sa_family_t sin_family; /* AF_INET */ in_port_t sin_port; /* TCP/UDP Port num */ struct in_addr sin_addr; /* IPv4 address */ char sin_zero[8]; /* unused */ } F Are also “generic” and “IPv6” socket structures

TCP Client-Server socket() bind() listen() accept() Server socket() connect() send() recv() Client (Block until connection ) “Handshake” recv() send() Data (request) Data (reply) close() End-of-File recv() close() “well-known” port

Server Functions socket() bind() listen() accept() (Block until connection ) “Handshake” recv() send() Data (request) Data (reply) End-of-File recv() close() “well-known” port

socket() int socket(int family, int type, int protocol); Create a socket, giving access to transport layer service. F family is one of –AF_INET (IPv4), AF_INET6 (IPv6), AF_LOCAL (local Unix), –AF_ROUTE (access to routing tables), AF_KEY (new, for encryption) F type is one of –SOCK_STREAM (TCP), SOCK_DGRAM (UDP) –SOCK_RAW (for special IP packets, PING, etc. Must be root)  setuid bit ( -rws--x--x root 1997 /sbin/ping*) F protocol is 0 (used for some raw socket options) F upon success returns socket descriptor –similar to a file descriptor or semaphore id –returns -1 if failure

bind()  sockfd is socket descriptor from socket() F myaddr is a pointer to address struct with: –port number and IP address –if port is 0, then host will pick ephemeral port u not usually for server (exception RPC port-map) –IP address != INADDR_ANY (multiple nics) F addrlen is length of structure F returns 0 if ok, -1 on error –EADDRINUSE (“Address already in use”) int bind(int sockfd, const struct sockaddr *myaddr, socklen_t addrlen); Assign a local protocol address (“name”) to a socket.

listen()  sockfd is socket descriptor from socket() F backlog is maximum number of incomplete connections –historically 5 –rarely above 15 on a even moderate web server! F Sockets default to active (for client) –change to passive to OS will accept connection int listen(int sockfd, int backlog); Change socket state for TCP server.

accept()  sockfd is socket descriptor from socket() F cliaddr and addrlen return protocol address from client F returns brand new descriptor, created by OS  if used with fork(), can create concurrent server (more later) int accept(int sockfd, struct sockaddr cliaddr, socklen_t *addrlen); Return next completed connection.

close()  sockfd is socket descriptor from socket() F closes socket for reading/writing –returns (doesn’t block) –attempts to send any unsent data –socket option SO_LINGER u block until data sent u or discard any remaining data –-1 if error int close(int sockfd); Close socket for use.

Client functions socket() connect() send() recv() Client “Handshake” Data (request) Data (reply) close() End-of-File

connect()  sockfd is socket descriptor from socket() F servaddr is a pointer to a structure with: –port number and IP address –must be specified (unlike bind() ) F addrlen is length of structure  client doesn’t need bind() –OS will pick ephemeral port F returns socket descriptor if ok, -1 on error int connect(int sockfd, const struct sockaddr *servaddr, socklen_t addrlen); Connect to server.

Sending and Receiving int recv(int sockfd, void *buff, size_t mbytes, int flags); int send(int sockfd, void *buff, size_t mbytes, int flags);  Same as read() and write() but for flags –MSG_DONTWAIT (this send non-blocking) –MSG_OOB (out of band data, 1 byte sent ahead) –MSG_PEEK (look, but don’t remove) –MSG_WAITALL (don’t give me less than max ) –MSG_DONTROUTE (bypass routing table)

Socket Options  setsockopt (), getsockopt () F SO_LINGER –upon close, discard data or block until sent F SO_RCVBUF, SO_SNDBUF –change buffer sizes –for TCP is “pipeline”, for UDP is “discard” F SO_RCVLOWAT, SO_SNDLOWAT –how much data before “readable” via select () F SO_RCVTIMEO, SO_SNDTIMEO –timeouts

Socket Options (TCP) F TCP_KEEPALIVE –idle time before close (2 hours, default) F TCP_MAXRT –set timeout value F TCP_NODELAY –disable Nagle Algorithm

fcntl() F ‘File control’ but used for sockets, too F Signal driven sockets F Set socket owner F Get socket owner F Set socket non-blocking flags = fcntl(sockfd, F_GETFL, 0); flags |= O_NONBLOCK; fcntl(sockfd, F_SETFL, flags); F Beware not getting flags before setting! F (Should not need for project 3)

Concurrent Servers  Close sock in child, newsock in parent F Reference count for socket descriptor Text segment sock = socket() /* setup socket */ while (1) { newsock = accept(sock) fork() if child read(newsock) until exit } Parent int sock; int newsock; Child int sock; int newsock;

Project 3: Macro Shell F Distributed Shell F Client/Server F Non-interactive –command line args –get-opt.c F Uses TCP sockets –listen.c and talk.c F Security –password ServerClient (1) connect Server (2) ls (3) fork() and exec() (4) data