Outline. Operating Systems. Socket Basics An end-point for a IP network connection. Ports. Network Communication. Sockets and the OS

Similar documents
Outline. Distributed Computer Systems. Socket Basics An end-point for a IP network connection. Ports. Sockets and the OS. Transport Layer.

Outline. Distributed Computing Systems. Socket Basics (1 of 2) Socket Basics (2 of 2) 3/28/2014

TCP: Three-way handshake

sottotitolo Socket Programming Milano, XX mese 20XX A.A. 2016/17 Federico Reghenzani

UNIX Sockets. Developed for the Azera Group By: Joseph D. Fournier B.Sc.E.E., M.Sc.E.E.

Review. Preview. Closing a TCP Connection. Closing a TCP Connection. Port Numbers 11/27/2017. Packet Exchange for TCP Connection

Lecture 5 Overview! Last Lecture! This Lecture! Next Lecture! I/O multiplexing! Source: Chapter 6 of Stevens book!

Oral. Total. Dated Sign (2) (5) (3) (2)

Socket Programming. CSIS0234A Computer and Communication Networks. Socket Programming in C

Lecture 3 Overview! Last Lecture! TCP/UDP and Sockets introduction!

CSE 124 Discussion Section Sockets Programming 10/10/17

UNIT IV- SOCKETS Part A

Socket Programming for TCP and UDP

Elementary TCP Sockets

Socket Programming TCP UDP

Group-A Assignment No. 6

Programming with TCP/IP. Ram Dantu

Tutorial on Socket Programming

NETWORK PROGRAMMING. Instructor: Junaid Tariq, Lecturer, Department of Computer Science

Introduction to Socket Programming

Processes communicating. Network Communication. Sockets. Addressing processes 4/15/2013

Lecture 7. Followup. Review. Communication Interface. Socket Communication. Client-Server Model. Socket Programming January 28, 2005

Hybrid of client-server and P2P. Pure P2P Architecture. App-layer Protocols. Communicating Processes. Transport Service Requirements

Communication. Sockets (Haviland Ch. 10)

Sockets. Jin-Soo Kim Computer Systems Laboratory Sungkyunkwan University

Session NM056. Programming TCP/IP with Sockets. Geoff Bryant Process software

CSC209H Lecture 9. Dan Zingaro. March 11, 2015

Chapter 6. The Transport Layer. Transport Layer 3-1

Ports under 1024 are often considered special, and usually require special OS privileges to use.

Unix Network Programming

PA #2 Reviews. set_name, get_name, del_name. Questions? Will be modified after PA #4 ~

UNIX Network Programming. Overview of Socket API Network Programming Basics

Network programming(i) Lenuta Alboaie

Outline. Option Types. Socket Options SWE 545. Socket Options. Out-of-Band Data. Advanced Socket. Many socket options are Boolean flags

A Socket Example. Haris Andrianakis & Angelos Stavrou George Mason University

Sockets. Dong-kun Shin Embedded Software Laboratory Sungkyunkwan University Embedded Software Lab.

STUDY OF SOCKET PROGRAMMING

CLIENT-SIDE PROGRAMMING

Hyo-bong Son Computer Systems Laboratory Sungkyunkwan University

UNIX Sockets. COS 461 Precept 1

Network Communication

CS 640: Computer Networking

Unix Network Programming Chapter 4. Elementary TCP Sockets 광운대학교컴퓨터과학과 정보통신연구실 석사과정안중현

Socket Programming. Dr. -Ing. Abdalkarim Awad. Informatik 7 Rechnernetze und Kommunikationssysteme

EEC-484/584 Computer Networks

CS 3516: Computer Networks

Socket Programming. #In the name of Allah. Computer Engineering Department Sharif University of Technology CE443- Computer Networks

Types (Protocols) Associated functions Styles We will look at using sockets in C Java sockets are conceptually quite similar

System Programming. Sockets

Socket Programming(2/2)

Context. Distributed Systems: Sockets Programming. Alberto Bosio, Associate Professor UM Microelectronic Departement

Networked Applications: Sockets. End System: Computer on the Net

Lecture 2. Outline. Layering and Protocols. Network Architecture. Layering and Protocols. Layering and Protocols. Chapter 1 - Foundation

Networked Applications: Sockets. Goals of Todayʼs Lecture. End System: Computer on the ʻNet. Client-server paradigm End systems Clients and servers

CSE/EE 461 Lecture 14. Connections. Last Time. This Time. We began on the Transport layer. Focus How do we send information reliably?

Introduction for SPI mapping Service Discovery Interoperability Testing. 20, Sep PWG Fumio Nagasaka

Network programming(ii) Lenuta Alboaie

Systems software design NETWORK COMMUNICATIONS & RPC SYSTEMS

Announcements. CS 5565 Network Architecture and Protocols. Queuing. Demultiplexing. Demultiplexing Issues (1) Demultiplexing Issues (2)

Agenda. Before we start: Assignment #1. Routing in a wide area network. Protocols more concepts. Internetworking. Congestion control

Programming Internet with Socket API. Hui Chen, Ph.D. Dept. of Engineering & Computer Science Virginia State University Petersburg, VA 23806

CS 43: Computer Networks. 05: Socket Programming September 12-14, 2018

CS321: Computer Networks Introduction to Application Layer

CSMC 412. Computer Networks Prof. Ashok K Agrawala Ashok Agrawala Set 2. September 15 CMSC417 Set 2 1

SOCKET PROGRAMMING. What is a socket? Using sockets Types (Protocols) Associated functions Styles

CS321: Computer Networks Socket Programming

Network Socket Programming - 3 BUPT/QMUL

MSc Integrated Electronics Networks Assignment. Investigation of TCP/IP Sockets and Ports. Gavin Cameron

Sockets 15H2. Inshik Song

Introduction to Socket Programming

Network Socket Programming - 3 BUPT/QMUL

The BSD UNIX Socket Interface (CS 640 Lecture) Assignment 1. Interprocess Communication (IPC) Work Individually (no groups)

Client Server Computing

Computer Networks Prof. Ashok K. Agrawala

CSE 333 SECTION 7. Client-Side Network Programming

A. Basic Function Calls for Network Communications

A Client-Server Exchange

WinSock. What Is Sockets What Is Windows Sockets What Are Its Benefits Architecture of Windows Sockets Network Application Mechanics

CSE 333 SECTION 8. Sockets, Network Programming

Network Programming in C: The Berkeley Sockets API. Networked Systems 3 Laboratory Sessions

CS118 Discussion 1B, Week 1. Taqi Raza BUNCHE 1209B, Fridays 12:00pm to 1:50pm

How do we Communicate? Introduction to Unix Network Programming. What does Alice do? What does Bob do? Two simplest networking programs

CSE 333 SECTION 7. C++ Virtual Functions and Client-Side Network Programming

CSE 333 Section 8 - Client-Side Networking

Department of Computer Science

Topics for this Week

Internet applications

The Berkeley Sockets API. Networked Systems Architecture 3 Lecture 4

The User Datagram Protocol

Network Programming in C. Networked Systems 3 Laboratory Sessions and Problem Sets

Lecture 10 Overview!

UNIT 1 TCP/IP PROGRAMMING CONCEPTS

Communication Networks ( ) / Spring 2011 The Blavatnik School of Computer Science, Tel-Aviv University. Allon Wagner

SOCKETS: INTRODUCTION

Overview. Last Lecture. This Lecture. Daemon processes and advanced I/O functions

Content 1. SDK Library Overview API Library Introduction API Data Structure HAL Driver Function Type LIB

Introduction to Network Programming using C/C++

Communication Networks ( ) / Fall 2013 The Blavatnik School of Computer Science, Tel-Aviv University

9/13/2007. Motivations for Sockets What s in a Socket? Working g with Sockets Concurrent Network Applications Software Engineering for Project 1

UDP CONNECT TO A SERVER

Transcription:

Outline Operating Systems Socket basics Socket details Socket options Final notes Project 3 Sockets 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) - name of machine Port number - location of process 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): 0-1023 reserved, must be root 1024-5000 ephemeral however, many systems allow > 5000 s + (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 (Trans Layer) User sees descriptor, integer index like: FILE *, or file index from open() returned by call (more later) Network Communication UDP: User Datagram Protocol no acknowledgements no retransmissions out of order, duplicate possible connectionless Games, Streaming audio/video TCP: Transmission Control Protocol reliable (in order, all arrive, no duplicates) flow control connection duplex Web traffic, Telnet, FTP (Project 3 uses TCP) 1

Outline Socket Details Socket basics Socket details Socket options Final notes Project 3 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 app to OS connect() sendto() Functions pass address from OS to app 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 t sin_; /* TCP/UDP Port num */ struct in_addr sin_addr; /* IPv4 address */ char sin_zero[8]; /* unused */ } Are also generic and IPv6 socket structures TCP - Functions connect() 2

int socket(int family, int type, int protocol); Create a socket, giving access to trans 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 similar to a file descriptor or semaphore id returns -1 if failure int bind(int sockfd, const struct sockaddr *myaddr, socklen_t addrlen); Assign a local protocol address ( name ) to a socket. myaddr is a pointer to address struct with: number and IP address if is 0, then host will pick ephemeral + not usually for server (exception RPC -map) IP address!= INADDR_ANY (multiple nics) addrlen is length of structure returns 0 if ok, -1 on error EADDRINUSE ( Address already in use ) int listen(int sockfd, int backlog); Change socket state for TCP server. 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 int accept(int sockfd, struct sockaddr cliaddr, socklen_t *addrlen); Return next completed connection. 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) int close(int sockfd); Close socket for use. functions 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 Returns -1 if error connect() 3

connect() int connect(int sockfd, const struct sockaddr *servaddr, socklen_t addrlen); Connect to server. servaddr is a pointer to a structure with: number and IP address must be specified (unlike) addrlen is length of structure client doesn t need OS will pick ephemeral 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 (General) 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 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! (Should not need for project 3) Concurrent s Text segment sock = /* 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 4

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