FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA1 Part 3.1 Internet Applications Ch. 28,… (Client-Server...
-
Upload
thomasina-doyle -
Category
Documents
-
view
216 -
download
1
Transcript of FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA1 Part 3.1 Internet Applications Ch. 28,… (Client-Server...
![Page 1: FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA1 Part 3.1 Internet Applications Ch. 28,… (Client-Server Concept, Use of Protocol Ports, Socket API)](https://reader035.fdocuments.net/reader035/viewer/2022062713/56649f4a5503460f94c6bdc9/html5/thumbnails/1.jpg)
FALL 2005 CSI 4118 – UNIVERSITY OF OTTAWA 1
Part 3.1
Internet Applications Ch. 28,…(Client-Server Concept,
Use of Protocol Ports, Socket API)
![Page 2: FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA1 Part 3.1 Internet Applications Ch. 28,… (Client-Server Concept, Use of Protocol Ports, Socket API)](https://reader035.fdocuments.net/reader035/viewer/2022062713/56649f4a5503460f94c6bdc9/html5/thumbnails/2.jpg)
FALL 2005 CSI 4118 – UNIVERSITY OF OTTAWA 2
Functionality
Transport layer and layers below Basic communication Reliability
Application layer Abstractions
Files Services Databases
Names
![Page 3: FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA1 Part 3.1 Internet Applications Ch. 28,… (Client-Server Concept, Use of Protocol Ports, Socket API)](https://reader035.fdocuments.net/reader035/viewer/2022062713/56649f4a5503460f94c6bdc9/html5/thumbnails/3.jpg)
FALL 2005 CSI 4118 – UNIVERSITY OF OTTAWA 3
Dichotomy of Duties
Network Transfers bits Operates at application’s request
Applications determine What to send When to send Where to send Meaning of bits
![Page 4: FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA1 Part 3.1 Internet Applications Ch. 28,… (Client-Server Concept, Use of Protocol Ports, Socket API)](https://reader035.fdocuments.net/reader035/viewer/2022062713/56649f4a5503460f94c6bdc9/html5/thumbnails/4.jpg)
FALL 2005 CSI 4118 – UNIVERSITY OF OTTAWA 4
Important Point
Although an internet system provides a basic communication service, the protocol software cannot initiate contact with, or accept contact from, a remote computer. Instead, two application programs must participate in any communication: one application initiates communication and the other accepts it.
![Page 5: FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA1 Part 3.1 Internet Applications Ch. 28,… (Client-Server Concept, Use of Protocol Ports, Socket API)](https://reader035.fdocuments.net/reader035/viewer/2022062713/56649f4a5503460f94c6bdc9/html5/thumbnails/5.jpg)
FALL 2005 CSI 4118 – UNIVERSITY OF OTTAWA 5
How Two Application Programs Make Contact
One application Begins execution first Waits passively at prearranged location
Another application Begins execution later Actively contacts first program
Called client-server interaction
![Page 6: FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA1 Part 3.1 Internet Applications Ch. 28,… (Client-Server Concept, Use of Protocol Ports, Socket API)](https://reader035.fdocuments.net/reader035/viewer/2022062713/56649f4a5503460f94c6bdc9/html5/thumbnails/6.jpg)
FALL 2005 CSI 4118 – UNIVERSITY OF OTTAWA 6
Client-Server Paradigm
Used by all network applications Passive program called a server Active program called a client
![Page 7: FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA1 Part 3.1 Internet Applications Ch. 28,… (Client-Server Concept, Use of Protocol Ports, Socket API)](https://reader035.fdocuments.net/reader035/viewer/2022062713/56649f4a5503460f94c6bdc9/html5/thumbnails/7.jpg)
FALL 2005 CSI 4118 – UNIVERSITY OF OTTAWA 7
Internet Communication
All network applications use a form of communication known as the client-server paradigm. A server application waits passively for contact, while a client application initiates communication actively.
![Page 8: FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA1 Part 3.1 Internet Applications Ch. 28,… (Client-Server Concept, Use of Protocol Ports, Socket API)](https://reader035.fdocuments.net/reader035/viewer/2022062713/56649f4a5503460f94c6bdc9/html5/thumbnails/8.jpg)
FALL 2005 CSI 4118 – UNIVERSITY OF OTTAWA 8
Characteristics of a Client
Arbitrary application program Becomes client temporarily Can also perform other computations Invoked directly by user Runs locally on user’s computer Actively initiates contact with a server Contacts one server at a time
![Page 9: FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA1 Part 3.1 Internet Applications Ch. 28,… (Client-Server Concept, Use of Protocol Ports, Socket API)](https://reader035.fdocuments.net/reader035/viewer/2022062713/56649f4a5503460f94c6bdc9/html5/thumbnails/9.jpg)
FALL 2005 CSI 4118 – UNIVERSITY OF OTTAWA 9
Characteristics of a Server
Special-purpose, privileged program Dedicated to providing one service Can handle multiple remote clients simultaneously Invoked automatically when system boots Executes forever Needs powerful computer and operating system Waits passively for client contact Accepts requests from arbitrary clients
![Page 10: FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA1 Part 3.1 Internet Applications Ch. 28,… (Client-Server Concept, Use of Protocol Ports, Socket API)](https://reader035.fdocuments.net/reader035/viewer/2022062713/56649f4a5503460f94c6bdc9/html5/thumbnails/10.jpg)
FALL 2005 CSI 4118 – UNIVERSITY OF OTTAWA 10
Terminology
Server An executing program that accepts contact over
the network Server-class computer
Hardware sufficient to execute a server Informally
Term server often applied to computer
![Page 11: FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA1 Part 3.1 Internet Applications Ch. 28,… (Client-Server Concept, Use of Protocol Ports, Socket API)](https://reader035.fdocuments.net/reader035/viewer/2022062713/56649f4a5503460f94c6bdc9/html5/thumbnails/11.jpg)
FALL 2005 CSI 4118 – UNIVERSITY OF OTTAWA 11
Direction of Data Flow
Data can flow From client to server only From server to client only In both directions
Application protocol determines flow Typical scenario
Client sends request(s) Sever sends response(s)
![Page 12: FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA1 Part 3.1 Internet Applications Ch. 28,… (Client-Server Concept, Use of Protocol Ports, Socket API)](https://reader035.fdocuments.net/reader035/viewer/2022062713/56649f4a5503460f94c6bdc9/html5/thumbnails/12.jpg)
FALL 2005 CSI 4118 – UNIVERSITY OF OTTAWA 12
Key Idea
Although the client initiates contact, information can flow in either or both directions between a client and server. Many services arrange for the client to send one or more requests and the server to return one response for each request.
![Page 13: FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA1 Part 3.1 Internet Applications Ch. 28,… (Client-Server Concept, Use of Protocol Ports, Socket API)](https://reader035.fdocuments.net/reader035/viewer/2022062713/56649f4a5503460f94c6bdc9/html5/thumbnails/13.jpg)
FALL 2005 CSI 4118 – UNIVERSITY OF OTTAWA 13
Clients, Servers, and Other Protocols
Clients and servers are application programs
![Page 14: FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA1 Part 3.1 Internet Applications Ch. 28,… (Client-Server Concept, Use of Protocol Ports, Socket API)](https://reader035.fdocuments.net/reader035/viewer/2022062713/56649f4a5503460f94c6bdc9/html5/thumbnails/14.jpg)
FALL 2005 CSI 4118 – UNIVERSITY OF OTTAWA 14
Server CPU Use
Facts Server operates like other applications
Uses CPU to execute instructions Performs I/O operations
Waiting for data to arrive over a network does not require CPU time
Consequence Server program only uses CPU when servicing a
request
![Page 15: FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA1 Part 3.1 Internet Applications Ch. 28,… (Client-Server Concept, Use of Protocol Ports, Socket API)](https://reader035.fdocuments.net/reader035/viewer/2022062713/56649f4a5503460f94c6bdc9/html5/thumbnails/15.jpg)
FALL 2005 CSI 4118 – UNIVERSITY OF OTTAWA 15
Multiple Services
Can have multiple servers on single computer
Servers only use processor when handling a request
Powerful hardware required to handle many services simultaneously
![Page 16: FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA1 Part 3.1 Internet Applications Ch. 28,… (Client-Server Concept, Use of Protocol Ports, Socket API)](https://reader035.fdocuments.net/reader035/viewer/2022062713/56649f4a5503460f94c6bdc9/html5/thumbnails/16.jpg)
FALL 2005 CSI 4118 – UNIVERSITY OF OTTAWA 16
Illustration of Multiple Servers
Each server offers one service One server can handle multiple clients
![Page 17: FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA1 Part 3.1 Internet Applications Ch. 28,… (Client-Server Concept, Use of Protocol Ports, Socket API)](https://reader035.fdocuments.net/reader035/viewer/2022062713/56649f4a5503460f94c6bdc9/html5/thumbnails/17.jpg)
FALL 2005 CSI 4118 – UNIVERSITY OF OTTAWA 17
Identifying a Service
Protocol port number used Each service given unique port number, P Server
Informs OS it is using port P Waits for requests to arrive
Client Forms request Send request to port P on server computer
![Page 18: FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA1 Part 3.1 Internet Applications Ch. 28,… (Client-Server Concept, Use of Protocol Ports, Socket API)](https://reader035.fdocuments.net/reader035/viewer/2022062713/56649f4a5503460f94c6bdc9/html5/thumbnails/18.jpg)
FALL 2005 CSI 4118 – UNIVERSITY OF OTTAWA 18
The Point About Ports
Transport protocols assign each service a unique port identifier. A server must specify the identifier when it begins execution. A client must specify the identifier when it requests transport protocol software to contact a server. Protocol software on the server computer uses the identifier to direct an incoming request to the correct server.
![Page 19: FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA1 Part 3.1 Internet Applications Ch. 28,… (Client-Server Concept, Use of Protocol Ports, Socket API)](https://reader035.fdocuments.net/reader035/viewer/2022062713/56649f4a5503460f94c6bdc9/html5/thumbnails/19.jpg)
FALL 2005 CSI 4118 – UNIVERSITY OF OTTAWA 19
In Theory
Port numbers are merely integers Any server could use any port number
![Page 20: FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA1 Part 3.1 Internet Applications Ch. 28,… (Client-Server Concept, Use of Protocol Ports, Socket API)](https://reader035.fdocuments.net/reader035/viewer/2022062713/56649f4a5503460f94c6bdc9/html5/thumbnails/20.jpg)
FALL 2005 CSI 4118 – UNIVERSITY OF OTTAWA 20
In Practice Protocol port numbers used as service
identifiers Need uniform numbering
To allow arbitrary client to contact server on arbitrary machine
To avoid inventing “directory assistance” mechanism
Port numbers Uniform throughout Internet Set by standards bodies
![Page 21: FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA1 Part 3.1 Internet Applications Ch. 28,… (Client-Server Concept, Use of Protocol Ports, Socket API)](https://reader035.fdocuments.net/reader035/viewer/2022062713/56649f4a5503460f94c6bdc9/html5/thumbnails/21.jpg)
FALL 2005 CSI 4118 – UNIVERSITY OF OTTAWA 21
Terminology
Sequential program Typical of most programs Single thread of control
Concurrent program Multiple threads of control Execution proceeds “in parallel” More difficult to create
![Page 22: FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA1 Part 3.1 Internet Applications Ch. 28,… (Client-Server Concept, Use of Protocol Ports, Socket API)](https://reader035.fdocuments.net/reader035/viewer/2022062713/56649f4a5503460f94c6bdc9/html5/thumbnails/22.jpg)
FALL 2005 CSI 4118 – UNIVERSITY OF OTTAWA 22
Servers and Concurrency
Sequential server Also called iterative Handles one request at a time
Concurrent server Can handle multiple requests at a time No waiting
![Page 23: FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA1 Part 3.1 Internet Applications Ch. 28,… (Client-Server Concept, Use of Protocol Ports, Socket API)](https://reader035.fdocuments.net/reader035/viewer/2022062713/56649f4a5503460f94c6bdc9/html5/thumbnails/23.jpg)
FALL 2005 CSI 4118 – UNIVERSITY OF OTTAWA 23
Delay in Servers
Concurrent server Server creates new thread of control to handle each
request Client only waits for its request to be processed
Sequential server Client waits for all previous requests to be processed
as well as for its request to be processed Unacceptable to user if long request blocks short
requests
![Page 24: FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA1 Part 3.1 Internet Applications Ch. 28,… (Client-Server Concept, Use of Protocol Ports, Socket API)](https://reader035.fdocuments.net/reader035/viewer/2022062713/56649f4a5503460f94c6bdc9/html5/thumbnails/24.jpg)
FALL 2005 CSI 4118 – UNIVERSITY OF OTTAWA 24
Concurrency in Servers
Concurrent execution is fundamental to servers because concurrency permits multiple clients to obtain a given service without having to wait for the server to finish previous requests. In a concurrent server, the main server thread creates a new service thread to handle each client.
![Page 25: FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA1 Part 3.1 Internet Applications Ch. 28,… (Client-Server Concept, Use of Protocol Ports, Socket API)](https://reader035.fdocuments.net/reader035/viewer/2022062713/56649f4a5503460f94c6bdc9/html5/thumbnails/25.jpg)
FALL 2005 CSI 4118 – UNIVERSITY OF OTTAWA 25
Protocol Ports and Concurrent Servers
Apparent problem One port number assigned to each service Concurrent server has multiple copies (threads)
running Client and server may interact Messages sent to server’s port must be delivered
to correct copy
![Page 26: FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA1 Part 3.1 Internet Applications Ch. 28,… (Client-Server Concept, Use of Protocol Ports, Socket API)](https://reader035.fdocuments.net/reader035/viewer/2022062713/56649f4a5503460f94c6bdc9/html5/thumbnails/26.jpg)
FALL 2005 CSI 4118 – UNIVERSITY OF OTTAWA 26
Protocol Ports and Concurrent Servers (continued)
Solution to problem: use information about client as well as server to deliver incoming packets
TCP uses four items to identify connection Server’s IP address Server’s protocol port number Client’s IP address Client’s protocol port number
![Page 27: FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA1 Part 3.1 Internet Applications Ch. 28,… (Client-Server Concept, Use of Protocol Ports, Socket API)](https://reader035.fdocuments.net/reader035/viewer/2022062713/56649f4a5503460f94c6bdc9/html5/thumbnails/27.jpg)
FALL 2005 CSI 4118 – UNIVERSITY OF OTTAWA 27
Demultiplexing in a Concurrent Server
Transport protocols assign an identifier to each client as well as to each service. Protocol software on the server’s machine uses the combination of client and server identifiers to choose the correct copy of a concurrent server.
![Page 28: FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA1 Part 3.1 Internet Applications Ch. 28,… (Client-Server Concept, Use of Protocol Ports, Socket API)](https://reader035.fdocuments.net/reader035/viewer/2022062713/56649f4a5503460f94c6bdc9/html5/thumbnails/28.jpg)
FALL 2005 CSI 4118 – UNIVERSITY OF OTTAWA 28
Variations on a Theme
A server can use Connectionless transport (UDP) Connection-oriented transport (TCP) Both for a single service
A single server can offer multiple services Often used for “trivial” services Server uses multiple port numbers simultaneously
![Page 29: FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA1 Part 3.1 Internet Applications Ch. 28,… (Client-Server Concept, Use of Protocol Ports, Socket API)](https://reader035.fdocuments.net/reader035/viewer/2022062713/56649f4a5503460f94c6bdc9/html5/thumbnails/29.jpg)
FALL 2005 CSI 4118 – UNIVERSITY OF OTTAWA 29
Variations on a Theme (cont)
A server can Maintain interaction with a client for days or hours Send a short response and terminate interaction Perform I/O on the local computer Become a client for another service (potential
cycle problem)
![Page 30: FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA1 Part 3.1 Internet Applications Ch. 28,… (Client-Server Concept, Use of Protocol Ports, Socket API)](https://reader035.fdocuments.net/reader035/viewer/2022062713/56649f4a5503460f94c6bdc9/html5/thumbnails/30.jpg)
FALL 2005 CSI 4118 – UNIVERSITY OF OTTAWA 30
Example of Circularity
Time server Returns time of day
File server Allows client to read or write a file Calls time server when generating time stamp for
file Suppose programmer modifies time server to
log requests to a file
![Page 31: FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA1 Part 3.1 Internet Applications Ch. 28,… (Client-Server Concept, Use of Protocol Ports, Socket API)](https://reader035.fdocuments.net/reader035/viewer/2022062713/56649f4a5503460f94c6bdc9/html5/thumbnails/31.jpg)
FALL 2005 CSI 4118 – UNIVERSITY OF OTTAWA 31
Interacting with Protocol Software
Client or server uses transport protocols Protocol software inside OS Applications outside OS Mechanism needed to bridge the two
Called Application Program Interface (API)
![Page 32: FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA1 Part 3.1 Internet Applications Ch. 28,… (Client-Server Concept, Use of Protocol Ports, Socket API)](https://reader035.fdocuments.net/reader035/viewer/2022062713/56649f4a5503460f94c6bdc9/html5/thumbnails/32.jpg)
FALL 2005 CSI 4118 – UNIVERSITY OF OTTAWA 32
Application Program Interface
Part of operating system Permits application to use protocols Defines
Operations allowed Arguments for each operation
![Page 33: FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA1 Part 3.1 Internet Applications Ch. 28,… (Client-Server Concept, Use of Protocol Ports, Socket API)](https://reader035.fdocuments.net/reader035/viewer/2022062713/56649f4a5503460f94c6bdc9/html5/thumbnails/33.jpg)
FALL 2005 CSI 4118 – UNIVERSITY OF OTTAWA 33
Socket API
Originally designed For BSD UNIX To use with TCP/IP protocols
Now Industry standard Available on many operating systems
![Page 34: FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA1 Part 3.1 Internet Applications Ch. 28,… (Client-Server Concept, Use of Protocol Ports, Socket API)](https://reader035.fdocuments.net/reader035/viewer/2022062713/56649f4a5503460f94c6bdc9/html5/thumbnails/34.jpg)
FALL 2005 CSI 4118 – UNIVERSITY OF OTTAWA 34
Sockets and Socket Libraries
A socket library can provide applications with a socket API on a computer system that does not provide native sockets. When an application calls one of the socket procedures, control passes to a library routine that makes one or more calls to the underlying operating system to implement the socket function.
![Page 35: FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA1 Part 3.1 Internet Applications Ch. 28,… (Client-Server Concept, Use of Protocol Ports, Socket API)](https://reader035.fdocuments.net/reader035/viewer/2022062713/56649f4a5503460f94c6bdc9/html5/thumbnails/35.jpg)
FALL 2005 CSI 4118 – UNIVERSITY OF OTTAWA 35
Socket
OS abstraction (not hardware) Created dynamically Persists only while application runs Referenced by a descriptor
![Page 36: FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA1 Part 3.1 Internet Applications Ch. 28,… (Client-Server Concept, Use of Protocol Ports, Socket API)](https://reader035.fdocuments.net/reader035/viewer/2022062713/56649f4a5503460f94c6bdc9/html5/thumbnails/36.jpg)
FALL 2005 CSI 4118 – UNIVERSITY OF OTTAWA 36
Descriptor
Small integer One per active socket Used in all operations on socket Generated by OS when socket created Only meaningful to application that owns
socket In UNIX, integrated with file descriptors
![Page 37: FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA1 Part 3.1 Internet Applications Ch. 28,… (Client-Server Concept, Use of Protocol Ports, Socket API)](https://reader035.fdocuments.net/reader035/viewer/2022062713/56649f4a5503460f94c6bdc9/html5/thumbnails/37.jpg)
FALL 2005 CSI 4118 – UNIVERSITY OF OTTAWA 37
Creating a Socket
Application calls socket function
OS returns descriptor for socket Descriptor valid until application closes
socket or exits Common: protofamily = PF_INET,
type = SOCK_STREAM or SOCK_DGRAM
desc = socket(protofamily,type,proto);
![Page 38: FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA1 Part 3.1 Internet Applications Ch. 28,… (Client-Server Concept, Use of Protocol Ports, Socket API)](https://reader035.fdocuments.net/reader035/viewer/2022062713/56649f4a5503460f94c6bdc9/html5/thumbnails/38.jpg)
FALL 2005 CSI 4118 – UNIVERSITY OF OTTAWA 38
Socket Functionality
Socket completely general Can be used
By client By server With a CO transport protocol With a CL transport protocol To send data, receive data, or both
Large set of operations
![Page 39: FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA1 Part 3.1 Internet Applications Ch. 28,… (Client-Server Concept, Use of Protocol Ports, Socket API)](https://reader035.fdocuments.net/reader035/viewer/2022062713/56649f4a5503460f94c6bdc9/html5/thumbnails/39.jpg)
FALL 2005 CSI 4118 – UNIVERSITY OF OTTAWA 39
Socket Operations
Close Terminate use of socket Permanent
close(socket);
![Page 40: FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA1 Part 3.1 Internet Applications Ch. 28,… (Client-Server Concept, Use of Protocol Ports, Socket API)](https://reader035.fdocuments.net/reader035/viewer/2022062713/56649f4a5503460f94c6bdc9/html5/thumbnails/40.jpg)
FALL 2005 CSI 4118 – UNIVERSITY OF OTTAWA 40
Socket Operations
Bind Specify protocol port for a socket Specify local IP address for a socket Can use INADDR_ANY for any IP address
bind(socket,localaddr,addrlen);
![Page 41: FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA1 Part 3.1 Internet Applications Ch. 28,… (Client-Server Concept, Use of Protocol Ports, Socket API)](https://reader035.fdocuments.net/reader035/viewer/2022062713/56649f4a5503460f94c6bdc9/html5/thumbnails/41.jpg)
FALL 2005 CSI 4118 – UNIVERSITY OF OTTAWA 41
Generic Address Format
struct sockaddr
{
u_char sa_len; /*length of address*/
u_char sa_family; /*family of address*/
char sa_data[14]; /*address itself*/
}
![Page 42: FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA1 Part 3.1 Internet Applications Ch. 28,… (Client-Server Concept, Use of Protocol Ports, Socket API)](https://reader035.fdocuments.net/reader035/viewer/2022062713/56649f4a5503460f94c6bdc9/html5/thumbnails/42.jpg)
FALL 2005 CSI 4118 – UNIVERSITY OF OTTAWA 42
TCP/IP Address Format
struct sockaddr_in
{
u_char sin_len; /*length of address*/
u_char sin_family; /*family of address*/
u_short sin_port; /*protocol port number*/
struct in_addr sin_addr; /*IP address*/
char sin_zero[8]; /*not used(set to zero)*/
}
![Page 43: FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA1 Part 3.1 Internet Applications Ch. 28,… (Client-Server Concept, Use of Protocol Ports, Socket API)](https://reader035.fdocuments.net/reader035/viewer/2022062713/56649f4a5503460f94c6bdc9/html5/thumbnails/43.jpg)
FALL 2005 CSI 4118 – UNIVERSITY OF OTTAWA 43
Socket Operations (continued)
Listen Used by server Prepares socket to accept incoming
connections
Accept Used by server Waits for next connection and returns new
socket
listen(socket,queuesize);
newsock = accept(socket,caddr,caddrlen);
![Page 44: FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA1 Part 3.1 Internet Applications Ch. 28,… (Client-Server Concept, Use of Protocol Ports, Socket API)](https://reader035.fdocuments.net/reader035/viewer/2022062713/56649f4a5503460f94c6bdc9/html5/thumbnails/44.jpg)
FALL 2005 CSI 4118 – UNIVERSITY OF OTTAWA 44
Socket Operations (continued)
Connect Used by client Either
Performs a TCP connectionFully specifies addresses for UDP
connect(socket,saddr,saddrlen);
![Page 45: FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA1 Part 3.1 Internet Applications Ch. 28,… (Client-Server Concept, Use of Protocol Ports, Socket API)](https://reader035.fdocuments.net/reader035/viewer/2022062713/56649f4a5503460f94c6bdc9/html5/thumbnails/45.jpg)
FALL 2005 CSI 4118 – UNIVERSITY OF OTTAWA 45
Two Purposes of the Connect Function
The connect function, which is called by clients, has two uses. With connection-oriented transport, connect establishes a transport connection to a specified server. With connectionless transport, connect records the server’s address in the socket, allowing the client to send many messages to the same server without specifying the destination address with each message.
![Page 46: FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA1 Part 3.1 Internet Applications Ch. 28,… (Client-Server Concept, Use of Protocol Ports, Socket API)](https://reader035.fdocuments.net/reader035/viewer/2022062713/56649f4a5503460f94c6bdc9/html5/thumbnails/46.jpg)
FALL 2005 CSI 4118 – UNIVERSITY OF OTTAWA 46
Socket Operations (continued)
Send, sendto, and sndmsg Transfer outgoing data from application
send(socket,data,length,flags);
sendmsg(socket,msgstruct,flags);
sendto(socket,data,length,flags,
destaddr,addrlen);
![Page 47: FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA1 Part 3.1 Internet Applications Ch. 28,… (Client-Server Concept, Use of Protocol Ports, Socket API)](https://reader035.fdocuments.net/reader035/viewer/2022062713/56649f4a5503460f94c6bdc9/html5/thumbnails/47.jpg)
FALL 2005 CSI 4118 – UNIVERSITY OF OTTAWA 47
Format of msgstruct
struct msgstruct
{
struct sockaddr *m_saddr; /*dest address*/
struct datavec *m_dvec; /*message (vector)*/
int mdvlength; /*size of vector*/
struct access *m_rights; /*access rights*/
int m_alength; /*size of access rights*/
}
![Page 48: FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA1 Part 3.1 Internet Applications Ch. 28,… (Client-Server Concept, Use of Protocol Ports, Socket API)](https://reader035.fdocuments.net/reader035/viewer/2022062713/56649f4a5503460f94c6bdc9/html5/thumbnails/48.jpg)
FALL 2005 CSI 4118 – UNIVERSITY OF OTTAWA 48
Socket Operations (continued)
Recv, recvfrom, and recvmsg Transfer incoming data to application
recv(socket,buffer,length,flags);
recvmsg(socket,msgstruct,flags);
recvfrom(socket,buffer,length,flags,
senderaddr,saddrlen);
![Page 49: FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA1 Part 3.1 Internet Applications Ch. 28,… (Client-Server Concept, Use of Protocol Ports, Socket API)](https://reader035.fdocuments.net/reader035/viewer/2022062713/56649f4a5503460f94c6bdc9/html5/thumbnails/49.jpg)
FALL 2005 CSI 4118 – UNIVERSITY OF OTTAWA 49
Socket Operations (continued)
Many additional functions Supply support and utility services Some implemented as library calls
![Page 50: FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA1 Part 3.1 Internet Applications Ch. 28,… (Client-Server Concept, Use of Protocol Ports, Socket API)](https://reader035.fdocuments.net/reader035/viewer/2022062713/56649f4a5503460f94c6bdc9/html5/thumbnails/50.jpg)
FALL 2005 CSI 4118 – UNIVERSITY OF OTTAWA 50
Examples of Socket Support Functions
Gethostbyname Maps domain name to IP address Example of argumentwww.netbook.cs.purdue.edu
Getprotobyname Maps name of protocol to internal number Argument usually “tcp” or “udp”
![Page 51: FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA1 Part 3.1 Internet Applications Ch. 28,… (Client-Server Concept, Use of Protocol Ports, Socket API)](https://reader035.fdocuments.net/reader035/viewer/2022062713/56649f4a5503460f94c6bdc9/html5/thumbnails/51.jpg)
FALL 2005 CSI 4118 – UNIVERSITY OF OTTAWA 51
Example Service
Purpose Count times involved Return printable ASCII message
Connection-oriented protocol Sequential execution (not concurrent)
![Page 52: FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA1 Part 3.1 Internet Applications Ch. 28,… (Client-Server Concept, Use of Protocol Ports, Socket API)](https://reader035.fdocuments.net/reader035/viewer/2022062713/56649f4a5503460f94c6bdc9/html5/thumbnails/52.jpg)
FALL 2005 CSI 4118 – UNIVERSITY OF OTTAWA 52
Example Client
Open TCP connection to server Iterate until end-of-file
Receive text Print characters received
Close connection Exit
![Page 53: FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA1 Part 3.1 Internet Applications Ch. 28,… (Client-Server Concept, Use of Protocol Ports, Socket API)](https://reader035.fdocuments.net/reader035/viewer/2022062713/56649f4a5503460f94c6bdc9/html5/thumbnails/53.jpg)
FALL 2005 CSI 4118 – UNIVERSITY OF OTTAWA 53
Example Server
Create socket and put in passive mode Iterate forever
Accept next connection, get new socket Increment count and send text message Close socket for connection
Notes Main socket remains open Server never exits
![Page 54: FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA1 Part 3.1 Internet Applications Ch. 28,… (Client-Server Concept, Use of Protocol Ports, Socket API)](https://reader035.fdocuments.net/reader035/viewer/2022062713/56649f4a5503460f94c6bdc9/html5/thumbnails/54.jpg)
FALL 2005 CSI 4118 – UNIVERSITY OF OTTAWA 54
Socket Calls in Client and Server
Client closes socket after use Server never closes original socket
![Page 55: FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA1 Part 3.1 Internet Applications Ch. 28,… (Client-Server Concept, Use of Protocol Ports, Socket API)](https://reader035.fdocuments.net/reader035/viewer/2022062713/56649f4a5503460f94c6bdc9/html5/thumbnails/55.jpg)
FALL 2005 CSI 4118 – UNIVERSITY OF OTTAWA 55
Code for Client
Arguments to program Host Protocol port Both optional
Many details Minor incompatibilities among socket
implementations Unix Microsoft Use C language #ifdef
![Page 56: FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA1 Part 3.1 Internet Applications Ch. 28,… (Client-Server Concept, Use of Protocol Ports, Socket API)](https://reader035.fdocuments.net/reader035/viewer/2022062713/56649f4a5503460f94c6bdc9/html5/thumbnails/56.jpg)
FALL 2005 CSI 4118 – UNIVERSITY OF OTTAWA 56
Example Client Code (1)
![Page 57: FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA1 Part 3.1 Internet Applications Ch. 28,… (Client-Server Concept, Use of Protocol Ports, Socket API)](https://reader035.fdocuments.net/reader035/viewer/2022062713/56649f4a5503460f94c6bdc9/html5/thumbnails/57.jpg)
FALL 2005 CSI 4118 – UNIVERSITY OF OTTAWA 57
Example Client Code (2)
![Page 58: FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA1 Part 3.1 Internet Applications Ch. 28,… (Client-Server Concept, Use of Protocol Ports, Socket API)](https://reader035.fdocuments.net/reader035/viewer/2022062713/56649f4a5503460f94c6bdc9/html5/thumbnails/58.jpg)
FALL 2005 CSI 4118 – UNIVERSITY OF OTTAWA 58
Example Client Code (3)
![Page 59: FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA1 Part 3.1 Internet Applications Ch. 28,… (Client-Server Concept, Use of Protocol Ports, Socket API)](https://reader035.fdocuments.net/reader035/viewer/2022062713/56649f4a5503460f94c6bdc9/html5/thumbnails/59.jpg)
FALL 2005 CSI 4118 – UNIVERSITY OF OTTAWA 59
Example Client Code (4)
![Page 60: FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA1 Part 3.1 Internet Applications Ch. 28,… (Client-Server Concept, Use of Protocol Ports, Socket API)](https://reader035.fdocuments.net/reader035/viewer/2022062713/56649f4a5503460f94c6bdc9/html5/thumbnails/60.jpg)
FALL 2005 CSI 4118 – UNIVERSITY OF OTTAWA 60
Example Client Code (5)
![Page 61: FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA1 Part 3.1 Internet Applications Ch. 28,… (Client-Server Concept, Use of Protocol Ports, Socket API)](https://reader035.fdocuments.net/reader035/viewer/2022062713/56649f4a5503460f94c6bdc9/html5/thumbnails/61.jpg)
FALL 2005 CSI 4118 – UNIVERSITY OF OTTAWA 61
Code For Server
Arguments to program Protocol port
C language #ifdefs for socket variants
![Page 62: FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA1 Part 3.1 Internet Applications Ch. 28,… (Client-Server Concept, Use of Protocol Ports, Socket API)](https://reader035.fdocuments.net/reader035/viewer/2022062713/56649f4a5503460f94c6bdc9/html5/thumbnails/62.jpg)
FALL 2005 CSI 4118 – UNIVERSITY OF OTTAWA 62
Example Server Code (1)
![Page 63: FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA1 Part 3.1 Internet Applications Ch. 28,… (Client-Server Concept, Use of Protocol Ports, Socket API)](https://reader035.fdocuments.net/reader035/viewer/2022062713/56649f4a5503460f94c6bdc9/html5/thumbnails/63.jpg)
FALL 2005 CSI 4118 – UNIVERSITY OF OTTAWA 63
Example Server Code (2)
![Page 64: FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA1 Part 3.1 Internet Applications Ch. 28,… (Client-Server Concept, Use of Protocol Ports, Socket API)](https://reader035.fdocuments.net/reader035/viewer/2022062713/56649f4a5503460f94c6bdc9/html5/thumbnails/64.jpg)
FALL 2005 CSI 4118 – UNIVERSITY OF OTTAWA 64
Example Server Code (3)
![Page 65: FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA1 Part 3.1 Internet Applications Ch. 28,… (Client-Server Concept, Use of Protocol Ports, Socket API)](https://reader035.fdocuments.net/reader035/viewer/2022062713/56649f4a5503460f94c6bdc9/html5/thumbnails/65.jpg)
FALL 2005 CSI 4118 – UNIVERSITY OF OTTAWA 65
Example Server Code (4)
![Page 66: FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA1 Part 3.1 Internet Applications Ch. 28,… (Client-Server Concept, Use of Protocol Ports, Socket API)](https://reader035.fdocuments.net/reader035/viewer/2022062713/56649f4a5503460f94c6bdc9/html5/thumbnails/66.jpg)
FALL 2005 CSI 4118 – UNIVERSITY OF OTTAWA 66
Stream Interface
Sender Calls send Specifies number of octets in call
TCP Divides stream into segments
Receiver Calls recv repeatedly Receives one or more octets per call Count of zero means “end of file” Size received unrelated to size sent
![Page 67: FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA1 Part 3.1 Internet Applications Ch. 28,… (Client-Server Concept, Use of Protocol Ports, Socket API)](https://reader035.fdocuments.net/reader035/viewer/2022062713/56649f4a5503460f94c6bdc9/html5/thumbnails/67.jpg)
FALL 2005 CSI 4118 – UNIVERSITY OF OTTAWA 67
Summary
Applications use client-server paradigm for interaction
Client Arbitrary application Actively initiates communication Must know server’s
IP address Protocol port number
![Page 68: FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA1 Part 3.1 Internet Applications Ch. 28,… (Client-Server Concept, Use of Protocol Ports, Socket API)](https://reader035.fdocuments.net/reader035/viewer/2022062713/56649f4a5503460f94c6bdc9/html5/thumbnails/68.jpg)
FALL 2005 CSI 4118 – UNIVERSITY OF OTTAWA 68
Summary (continued)
Server Specialized program Runs forever Usually offers one service Passively waits for clients Can handle multiple clients simultaneously
![Page 69: FALL 2005CSI 4118 – UNIVERSITY OF OTTAWA1 Part 3.1 Internet Applications Ch. 28,… (Client-Server Concept, Use of Protocol Ports, Socket API)](https://reader035.fdocuments.net/reader035/viewer/2022062713/56649f4a5503460f94c6bdc9/html5/thumbnails/69.jpg)
FALL 2005 CSI 4118 – UNIVERSITY OF OTTAWA 69
Summary (continued)
Socket API Standardized Specifies interface between applications and
protocol software Socket
Operating system abstraction Created dynamically Used by clients and servers