• No results found

Socket Programming. Srinidhi Varadarajan

N/A
N/A
Protected

Academic year: 2021

Share "Socket Programming. Srinidhi Varadarajan"

Copied!
20
0
0

Loading.... (view fulltext now)

Full text

(1)

Socket Programming Socket Programming

Srinidhi Varadarajan

(2)

Client

Client - - server paradigm server paradigm

Client:

 initiates contact with server (“speaks first”)

 typically requests service from server,

 for Web, client is

implemented in browser; for e-mail, in mail reader

Server:

 provides requested service to client

 e.g., Web server sends requested Web page, mail server delivers e-mail

application transport

network data link physical

application transport

network data link physical

request

reply

(3)

Application Layer Programming Application Layer Programming

API: application programming interface

 defines interface between application and transport layer

 sockets: Internet API

– two processes communicate by sending data into socket, reading data out of socket

(4)

Socket Interface. What is it?

Socket Interface. What is it?

 Gives a file system like abstraction to the capabilities of the network.

 Each transport protocol offers a set of services. The socket API provides the abstraction to access these services

 The API defines function calls to create, close, read and write to/from a socket.

(5)

Socket Abstraction Socket Abstraction

 The socket is the basic abstraction for network communication in the socket API

– Defines an endpoint of communication for a process – Operating system maintains information about the

socket and its connection

– Application references the socket for sends, receives, etc.

Process B

Process A

Ports (Sockets) Network

(6)

What do you need for socket communication ? What do you need for socket communication ?

 Basically 4 parameters

– Source Identifier (IP address) – Source Port

– Destination Identifier – Destination Port

 In the socket API, this information is communicated by binding the socket.

(7)

Creating a socket Creating a socket

int socket(int domain, int type, int protocol)

The call returns a integer identifier called a handle

Protocol Family:

PF_INET or PF_UNIX

Communication semantics:

SOCK_STREAM or SOCK_DGRAM

Usually UNSPEC

(8)

Binding a socket Binding a socket

int bind (int socket, struct sockaddr *address, int addr_len)

 This call is executed by:

– Server in TCP and UDP

 It binds the socket to the specified address. The address parameter specifies the local component of the address, e.g. IP address and UDP/TCP port

(9)

Socket Descriptors Socket Descriptors



Operating system maintains a set of socket descriptors for each process

– Note that socket descriptors are shared by threads



Three data structures

– Socket descriptor table – Socket data structure – Address data structure

(10)

Socket Descriptors Socket Descriptors

Socket Descriptor

Table 0:

1:

2:

...

proto family:

PF_INET

Socket Data Structure

service:

SOCK_STREAM local address:

...

remote address:

address family:

AF_INET

Address Data Structure

host IP:

128.173.88.85 port:

80

(11)

TCP Server Side: Listen TCP Server Side: Listen

int listen (int socket, int backlog)

 This server side call specifies the number of pending connections on the given

socket.

 When the server is processing a connection, “backlog” number of

connections may be pending in a queue.

(12)

TCP Server Side: Passive Open TCP Server Side: Passive Open

int accept (int socket, struct sockaddr *address, int *addr_len)

 This call is executed by the server.

 The call does not return until a remote client has established a connection.

 When it completes, it returns a new socket handle corresponding to the just-

established connection

(13)

TCP Client Side: Active Open TCP Client Side: Active Open

int connect (int socket, struct sockaddr *address, int *addr_len)

 This call is executed by the client. *address contains the remote address.

 The call attempts to connect the socket to a

server. It does not return until a connection has been established.

 When the call completes, the socket “socket” is connected and ready for communication.

(14)

Sockets: Summary Sockets: Summary

 Client:

int socket(int domain, int type, int protocol)

int connect (int socket, struct sockaddr *address, int addr_len)

 Server:

int socket(int domain, int type, int protocol)

int bind (int socket, struct sockaddr *address, int addr_len) int listen (int socket, int backlog)

int accept (int socket, struct sockaddr *address, int *addr_len)

(15)

Message Passing Message Passing

 int send (int socket, char *message, int msg_len, int flags) (TCP)

 int sendto (int socket, void *msg, int len, int flags, struct sockaddr * to,

int tolen ); (UDP)

 int write(int socket, void *msg, int len); /* TCP */

 int recv (int socket, char *buffer, int buf_len, int flags) (TCP)

 int recvfrom(int socket, void *msg, int len, int flags, struct sockaddr *from, int

*fromlen); (UDP)

 int read(int socket, void *msg, int len); (TCP)

(16)

Summary of Basic Socket Calls Summary of Basic Socket Calls

CLIENT SERVER

accept() connect()

Connect

(3-way handshake)

write() Data read()

read() Data write()

close() close()

new connection

(17)

Network Byte Order Network Byte Order

 Network byte order is most-significant byte first

 Byte ordering at a host may differ

 Utility functions

– htons(): Host-to-network byte order for a short word (2 bytes)

– htonl(): Host-to-network byte order for a long word (4 bytes)

– ntohs(): Network-to-host byte order for a short word

– ntohl(): Network-to-host byte order for a long word

(18)

Some Other “Utility” Functions Some Other “Utility” Functions

 gethostname() -- get name of local host

 getpeername() -- get address of remote host

 getsockname() -- get local address of socket

 getXbyY() -- get protocol, host, or service number using known number, address, or port, respectively

 getsockopt() -- get current socket options

 setsockopt() -- set socket options

 ioctl() -- retrieve or set socket information

(19)

Some Other “Utility” Functions Some Other “Utility” Functions



inet_addr() -- convert “dotted”

character string form of IP address to internal binary form



inet_ntoa() -- convert internal binary form of IP address to “dotted”

character string form

(20)

Address Data Structures Address Data Structures

 sockaddr is a generic address structure

 sockaddr_in is specific instance for the Internet address family

struct sockaddr {

u_short sa_family; // type of address char sa_data[14]; // value of address }

struct sockaddr_in {

u_short sa_family; // type of address (AF_INET) u_short sa_port; // protocol port number

struct in_addr sin_addr; // IP address char sin_zero[8]; // unused (set to zero) }

References

Related documents

BS 5328 : Part 1 : 1997) is permitted to be used to provide assurance of maximum free water/cement ratio, the concrete shall be deemed to comply with the specified maximum

He is currently a Lecturer in Games Design and Development in the School of Electronics and Info-Comm Technology, ITE College Central (Singapore), and an Adjunct

The Onslow County Masonic Scholarship $1500.00 Deadline: April 15th Please come by guidance to pick up application packet.. State Employees Association of North Carolina Scholarship

public Socket(String host, int port, InetAddress localAddress, int localPort) throws IOException5. public Socket(InetAddress address, int port, InetAddress localAddress, int

The goals of this study, undertaken on Bouvetøya, were (1) to determine if the first trip to sea after instrumentation is representative of subsequent trips in lactating Antarctic

FORENSIC ACCOUNTING: A COMPREHENSIVE GUIDE TO CONDUCTING FINANCIAL FRAUD INVESTIGATIONS FOAC/14/01... This product is intended to serve solely as an aid in

They maintain active memberships in leading associations of compensation and human resources practitioners, including: Society of Human Resources Management (SHRM),

• Box plot analysis is a simple and fast analysis to check peptide load integrity between samples. • Automation saves time on the routine tasks which can be spent on high