Computer Networks Sockets.

Slides:



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

Elementary TCP Sockets© Dr. Ayman Abdel-Hamid, CS4254 Spring CS4254 Computer Network Architecture and Programming Dr. Ayman A. Abdel-Hamid Computer.
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.
Elementary TCP Sockets Chapter 4 UNIX Network Programming Vol. 1, Second Ed. Stevens.
Socket Programming.
Multimedia Networking Sockets. Outline Socket basics Socket details (TCP and UDP) Socket options Final notes.
Socket Programming: a Primer Socket to me!. Feb. 23, 2001EE122, UCB2 Why does one need sockets? application network protocol sockets network.
Sockets IMGD Outline Socket basics Socket details (TCP and UDP) Socket options Final notes.
Tutorial 8 Socket Programming
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.
Operating Systems Sockets. Outline F Socket basics F TCP sockets F Socket details F Socket options F Final notes F Project 3.
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.
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.
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.
Chapter 2 Applications and Layered Architectures Sockets.
Remote Shell CS230 Project #4 Assigned : Due date :
Advanced Sockets API-II Vinayak Jagtap
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.
Socket Programming Lab 1 1CS Computer Networks.
CS 6401 Introduction to Computer Networks 09/21/2010 Outline - UNIX sockets - A simple client-server program - Project 1 - LAN bridges and learning.
Programming with UDP – II Covered Subjects: Creating UDP sockets Client Server Sending data Receiving data Connected mode.
CSCI 330 UNIX and Network Programming Unit XV: Transmission Control Protocol.
Today’s topic: UDP Reliable communication over UDP.
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
UDP Sockets Programming
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:

Computer Networks Sockets

Outline Socket basics TCP sockets Socket details Socket options Final notes

Socket Basics An end-point for a IP network connection what the application layer “plugs into” programmer cares about Application Programming Interface (API) End point determined by two things: Host address: IP address is Network Layer Port number: is Transport Layer Two end-points determine a connection: socket pair ex: 206.62.226.35,p21 + 198.69.10.2,p1500 ex: 206.62.226.35,p21 + 198.69.10.2,p1499

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

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

Transport Layer UDP: User Datagram Protocol no acknowledgements no retransmissions out of order, duplicate possible connectionless TCP: Transmission Control Protocol reliable (in order, all arrive, no duplicates) flow control connection duplex (proj 2)

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

Addresses and Sockets Structure to hold address information Functions pass address from user to OS bind() connect() sendto() Functions pass address from OS to user 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 */ } Are also “generic” and “IPv6” socket structures Length field makes it easier for OS to handle

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

socket() family is one of type is one of int socket(int family, int type, int protocol); Create a socket, giving access to transport layer service. 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) 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*) protocol is 0 (used for some raw socket options) upon success returns socket descriptor like file descriptor -1 if failure

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

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

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

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

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

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() SO_LINGER upon close, discard data or block until sent SO_RCVBUF, SO_SNDBUF change buffer sizes for TCP is “pipeline”, for UDP is “discard” SO_RCVLOWAT, SO_SNDLOWAT how much data before “readable” via select() SO_RCVTIMEO, SO_SNDTIMEO timeouts

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

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

Concurrent TCP Server 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; Close sock in child, newsock in parent Reference count for socket descriptor

UDP Client-Server Server Client - No “handshake” socket() “well-known” port bind() Client recvfrom() socket() (Block until receive datagram) Data (request) sendto() sendto() recvfrom() Data (reply) close() - No “handshake” - No simultaneous close() - Note, usually fork() for concurrent servers! Called iterative server

Sending and Receiving Same as recv() and send() but for addr int recvfrom(int sockfd, void *buff, size_t mbytes, int flags, struct sockaddr *from, socklen_t *addrlen); int sendto(int sockfd, void *buff, size_t mbytes, int flags, const struct sockaddr *to, socklen_t addrlen); Same as recv() and send() but for addr recvfrom fills in address of where packet came from sento requires address of where sending packet to

connect() with UDP Record address and port of peer datagrams to/from others are not allowed does not do three way handshake, or connection connect a misnomer, here. Should be setpeername() Use send() instead of sendto() Use recv() instead of recvfrom() Can change connect (or unconnect) by repeating connect() call

Why use connected UDP? Send two datagrams unconnected: connect the socket output first dgram unconnect the socket output second dgram Send two datagrams connected: connect the socket output first dgram output second dgram

Why else about connected UDP? Consider client: sendto() recvfrom() NULL in recvfrom args could come from other could fill in, or done in connect() Asynchronous errors not returned talk.udp reno // server down, unconncected hey! // no response, error not returned to process vs. talk.udp reno // server down, conncected port unreachable // error returned

Mcast Extensions to UDP Client Server socket() socket() setsockopt() Frames sendto() recvfrom() Other clients pause play - sendto() in server to multicast group - setsockopt() in client to join group IP_ADD_MEMBERSHIP

Mcast is Group and Port Application Application UDP UDP IP IP join Application Application Sendto host = 224.0.1.1 port = 123 UDP UDP port=123 IP IP host=224.0.1.1 Data Link Data Link LAN to router sendto() and recvfrom() specify port and group

Scope of IPv4 Addresses Use “link-local” addresses only 255, but port numbers also unique On garden, ernie and bert