1 Writing Network Applications using the TCP/IP Protocol Stack: Socket Programming.

Slides:



Advertisements
Similar presentations
Network Programming Week #1 J.P. Yoo
Advertisements

Transmission Control Protocol (TCP). TCP: Overview RFCs: 793, 1122, 1323, 2018, 2581 r reliable, in-order byte steam: m no “message boundaries” r send.
Elementary TCP Sockets Computer Networks Computer Networks Term B10 UNIX Network Programming Vol. 1, Second Ed. Stevens Chapter 4.
Networks: TCP/IP Socket Calls1 Elementary TCP Sockets Chapter 4 UNIX Network Programming Vol. 1, Second Ed. Stevens.
Quick Overview. 2 ISO/OSI Reference Model Application Application Presentation Presentation Session Session Transport Transport Network Network Data Link.
1 Netcomm Recitation 1: Sockets Communication Networks Recitation 1.
1 Netcomm Sockets Communication Networks Recitation 1.
1 Application Layer. 2 Writing Networked Applications TCP UDP IP LL PL TCP UDP IP LL PL TCP UDP IP LL PL Web Browser Web Server Ftp Server Ftp Client.
Tutorial 8 Socket Programming
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.
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.
TCP/IP Sockets in C: Practical Guide for Programmers Michael J. Donahoo Kenneth L. Calvert.
TCP Socket Programming. r An abstract interface provided to the application programmer  File descriptor, allows apps to read/write to the network r Allows.
Yu-Chi Lai Lecture 3 Network Programming CS 640: Computer Networking.
CS Computer Networks I Georgia Tech CS Computer Networks 1: Sockets Programming Adapted from slides by Professor Patrick Traynor.
1 Tutorial on Socket Programming Computer Networks - CSC 458 Department of Computer Science Yukun Zhu (Slides are mainly from Monia Ghobadi, and Amin Tootoonchian,
TCP/IP Sockets in Java: Practical Guide for Programmers Kenneth L. Calvert Michael J. Donahoo.
Basic Socket Programming TCP/IP overview. TCP interface Reference: –UNIX Network Programming, by Richard Stevens. –UNIX man page.
Ashutosh Shukla Lecture 3 Network Programming CS 640: Computer Networking.
TCP Socket Programming. r An abstract interface provided to the application programmer  File descriptor, allows apps to read/write to the network r Allows.
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.
The Pocket Guide to TCP/IP Sockets: C Version Michael J. Donahoo Kenneth L. Calvert.
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.
Elementary TCP Sockets UNIX Network Programming Vol. 1, Second Ed. Stevens Chapter 4.
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)
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.
Project 2: Socket Programming. Overview Sockets Working with sockets Client-Server example Project 1 Hints.
Sockets Socket = abstraction of the port concept: –Application programs request that the operating system create a socket when one is needed –O.S. returns.
Socket Programming Introduction. Socket Definition A network socket is one endpoint in a two-way communication flow between two programs running over.
Socket Programming.
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,
S OCKET P ROGRAMMING IN C Professor: Dr. Shu-Ching Chen TA: HsinYu Ha.
CSCI 330 UNIX and Network Programming Unit XIV: User Datagram Protocol.
1 Spring Semester 2008, Dept. of Computer Science, Technion Internet Networking recitation #7 Socket Programming.
Lecture 15 Socket Programming CPE 401 / 601 Computer Network Systems slides are modified from Dave Hollinger.
Berkeley Sockets. Client-server model Sockets interface: Address structure, byte ordering, port no Socket primitives: socket, bind,listen… Example code.
Socket Programming in C CS587x Lecture 3 Department of Computer Science Iowa State University.
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.
Jim Fawcett CSE 681 – Software Modeling & Analysis Fall 2002
Sockets TCP/IP Sockets in C: Practical Guide for Programmers (we are covering all chapters of Part 1; Part 2 is a good sockets API reference) Sockets.
The Pocket Guide to TCP/IP Sockets: C Version
TCP/IP Sockets in C: Practical Guide for Programmers
Network Programming with Sockets
Socket Interface 1 Introduction 11 Socket address formats 2 API 12 13
Transport layer API: Socket Programming
Socket Programming in C
TCP/IP Sockets in C: Practical Guide for Programmers
TCP/IP Sockets in C: Practical Guide for Programmers
Socket 程式設計.
Yu-Chi Lai Lecture 3 Network Programming
Socket Programming(1/2)
Sockets Programming Socket to me!.
Sockets Programming Socket to me!.
Internet Networking recitation #8
TCP/IP Sockets in C: Practical Guide for Programmers
Outline Communications in Distributed Systems Socket Programming
Sockets.
TCP/IP Sockets in Java: Practical Guide for Programmers
CSI 4118 – UNIVERSITY OF OTTAWA
Jim Fawcett CSE 681 – Software Modeling & Analysis Summer 2003
Presentation transcript:

1 Writing Network Applications using the TCP/IP Protocol Stack: Socket Programming

2 Network Applications Communicating TCP UDP IP LL PL TCP UDP IP LL PL TCP UDP IP LL PL Web Browser Web Server Ftp Server Ftp Client RTSP Server Real Player Client: initiates contact with server (“speaks first”) typically requests service from server, e.g., Web Browser Server: provides requested service to client e.g., Web server sends requested Web page Typical network app has two pieces: client and server Client-Server Paradigm

3 How to program? The socket layer TCP UDP IP LL PL TCP UDP IP LL PL TCP UDP IP LL PL Web Browser Web Server Ftp Server Ftp Client RTSP Server Real Player Socket Layer Socket Layer: –Programmer’s API to the IP Protocol stack

4 Socket Creation FamilyType Protocol TCP PF_INET SOCK_STREAMIPPROTO_TCP UDPSOCK_DGRAMIPPROTO_UDP mySock = socket(family, type, protocol); TCP/IP-specific sockets Socket reference –File (socket) descriptor in UNIX –Socket handle in WinSock

5 Specifying Addresses struct sockaddr { unsigned short sa_family;/* Address family (e.g., AF_INET) */ char sa_data[14]; /* Protocol-specific address information */ }; struct sockaddr_in { unsigned short sin_family;/* Internet protocol (AF_INET) */ unsigned short sin_port; /* Port (16-bits) */ struct in_addr sin_addr; /* Internet address (32-bits) */ char sin_zero[8]; /* Not used */ }; struct in_addr { unsigned long s_addr; /* Internet address (32-bits) */ }; Generic IP Specific

6 TCP Client/Server Interaction Client 1.Create a TCP socket 2.Establish connection 3.Communicate 4.Close the connection Server 1. Create a TCP socket 2. Assign a port to socket 3. Set socket to listen 4. Repeatedly: a.Accept new connection b.Communicate c.Close the connection Server starts by getting ready to receive client connections…

7 TCP Client/Server Interaction Client 1.Create a TCP socket 2.Establish connection 3.Communicate 4.Close the connection Server 1. Create a TCP socket 2. Bind socket to a port 3. Set socket to listen 4. Repeatedly: a.Accept new connection b.Communicate c.Close the connection /* Create socket for incoming connections */ if ((servSock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP)) < 0) DieWithError("socket() failed");

8 TCP Client/Server Interaction Client 1.Create a TCP socket 2.Establish connection 3.Communicate 4.Close the connection Server 1. Create a TCP socket 2. Bind socket to a port 3. Set socket to listen 4. Repeatedly: a.Accept new connection b.Communicate c.Close the connection echoServAddr.sin_family = AF_INET; /* Internet address family */ echoServAddr.sin_addr.s_addr = htonl(INADDR_ANY);/* Any incoming interface */ echoServAddr.sin_port = htons(echoServPort); /* Local port */ if (bind(servSock, (struct sockaddr *) &echoServAddr, sizeof(echoServAddr)) < 0) DieWithError("bind() failed");

9 TCP Client/Server Interaction Client 1.Create a TCP socket 2.Establish connection 3.Communicate 4.Close the connection Server 1. Create a TCP socket 2. Bind socket to a port 3. Set socket to listen 4. Repeatedly: a.Accept new connection b.Communicate c.Close the connection /* Mark the socket so it will listen for incoming connections */ if (listen(servSock, MAXPENDING) < 0) DieWithError("listen() failed");

10 TCP Client/Server Interaction Client 1.Create a TCP socket 2.Establish connection 3.Communicate 4.Close the connection Server 1. Create a TCP socket 2. Bind socket to a port 3. Set socket to listen 4. Repeatedly: a.Accept new connection b.Communicate c.Close the connection for (;;) /* Run forever */ { clntLen = sizeof(echoClntAddr); if ((clntSock=accept(servSock,(struct sockaddr *)&echoClntAddr,&clntLen)) < 0) DieWithError("accept() failed");

11 TCP Client/Server Interaction Client 1.Create a TCP socket 2.Establish connection 3.Communicate 4.Close the connection Server 1. Create a TCP socket 2. Bind socket to a port 3. Set socket to listen 4. Repeatedly: a.Accept new connection b.Communicate c.Close the connection Server is now blocked waiting for connection from a client

12 TCP Client/Server Interaction Client 1.Create a TCP socket 2.Establish connection 3.Communicate 4.Close the connection Server 1. Create a TCP socket 2. Bind socket to a port 3. Set socket to listen 4. Repeatedly: a.Accept new connection b.Communicate c.Close the connection Later, a client decides to talk to the server…

13 TCP Client/Server Interaction Client 1.Create a TCP socket 2.Establish connection 3.Communicate 4.Close the connection Server 1. Create a TCP socket 2. Bind socket to a port 3. Set socket to listen 4. Repeatedly: a.Accept new connection b.Communicate c.Close the connection /* Create a reliable, stream socket using TCP */ if ((sock = socket(PF_INET, SOCK_STREAM, IPPROTO_TCP)) < 0) DieWithError("socket() failed");

14 TCP Client/Server Interaction Client 1.Create a TCP socket 2.Establish connection 3.Communicate 4.Close the connection Server 1. Create a TCP socket 2. Bind socket to a port 3. Set socket to listen 4. Repeatedly: a.Accept new connection b.Communicate c.Close the connection echoServAddr.sin_family = AF_INET; /* Internet address family */ echoServAddr.sin_addr.s_addr = inet_addr(servIP); /* Server IP address */ echoServAddr.sin_port = htons(echoServPort); /* Server port */ if (connect(sock, (struct sockaddr *) &echoServAddr, sizeof(echoServAddr)) < 0) DieWithError("connect() failed");

15 TCP Client/Server Interaction Client 1.Create a TCP socket 2.Establish connection 3.Communicate 4.Close the connection Server 1. Create a TCP socket 2. Bind socket to a port 3. Set socket to listen 4. Repeatedly: a.Accept new connection b.Communicate c.Close the connection echoStringLen = strlen(echoString); /* Determine input length */ /* Send the string to the server */ if (send(sock, echoString, echoStringLen, 0) != echoStringLen) DieWithError("send() sent a different number of bytes than expected");

16 TCP Client/Server Interaction Client 1.Create a TCP socket 2.Establish connection 3.Communicate 4.Close the connection Server 1. Create a TCP socket 2. Bind socket to a port 3. Set socket to listen 4. Repeatedly: a.Accept new connection b.Communicate c.Close the connection /* Receive message from client */ if ((recvMsgSize = recv(clntSocket, echoBuffer, RCVBUFSIZE, 0)) < 0) DieWithError("recv() failed");

17 TCP Client/Server Interaction Client 1.Create a TCP socket 2.Establish connection 3.Communicate 4.Close the connection Server 1. Create a TCP socket 2. Bind socket to a port 3. Set socket to listen 4. Repeatedly: a.Accept new connection b.Communicate c.Close the connection close(sock); close(clntSocket)

18 TCP Tidbits Client send(“Hello Bob”) recv() -> “Hi Jane” Server recv() -> “Hello ” recv() -> “Bob” send(“Hi ”) send(“Jane”) Client knows server address and port No correlation between send() and recv()

19 Closing a Connection close() used to delimit communication Analogous to EOF Client send(string) while (not received entire string) recv(buffer) send(buffer) close(socket) Server recv(buffer) while(client has not closed connection) send(buffer) recv(buffer) close(client socket)

20 UDP Client/Server Interaction Client 1.Create a UDP socket 2.Communicate (send/receive messages) 3.When done, close the connection Server 1. Create a UDP socket 2. Assign a port to socket 3. Communicate (receive/send messages) 4. When done, close the socket Server starts by getting ready to receive client messages…