0% found this document useful (0 votes)
162 views17 pages

Berkeley Socket API - I: Unit 01.03.01 CS 5220: Computer Communications

This document discusses the Berkeley Socket API for computer communications. The API provides an abstraction layer that allows applications to send and receive data through sockets, which connect applications to the network. It supports both connection-oriented (TCP) and connectionless (UDP) services. The API handles details like transport protocols while applications perform operations like binding sockets to ports, listening, accepting connections, and reading/writing data.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
162 views17 pages

Berkeley Socket API - I: Unit 01.03.01 CS 5220: Computer Communications

This document discusses the Berkeley Socket API for computer communications. The API provides an abstraction layer that allows applications to send and receive data through sockets, which connect applications to the network. It supports both connection-oriented (TCP) and connectionless (UDP) services. The API handles details like transport protocols while applications perform operations like binding sockets to ports, listening, accepting connections, and reading/writing data.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd

Unit 01.03.

01
CS 5220:
COMPUTER COMMUNICATIONS

Berkeley Socket API - I


XIAOBO ZHOU, Ph.D.
Professor, Department of Computer Science
Berkeley Socket API
 Berkeley UNIX Sockets API
 Abstraction for applications to send & receive data
 Applications create sockets that “plug into” network
 Applications write/read to/from sockets
 Implemented in the kernel
 Facilitates development of network applications
 Hides details of underlying protocols & mechanisms
 Also in Windows, Linux, and other OS’s
Client Server
Socket Socket
Application 1 Application 2
interface interface

User User
descriptor descriptor
Kernel Kernel

Communications Socket
• Application references a
Socket

socket through a descriptor


through Sockets port number • Socket bound to a port number port number

Underlying Underlying
communication communication
protocols protocols

Communications
network
Transport Protocols
 Host computers run two transport protocols on top of IP to
enable process-to-process communications
 User Datagram Protocol (UDP) enables best-effort
connectionless transfer of individual block of information
 Transmission Control Protocol (TCP) enables connection-
oriented reliable transfer of a stream of bytes
 Two services though Sockets: connection-oriented and
connection-less
Stream Mode of Service
Connection-oriented (TCP) Connectionless (UDP)
Immediate transfer of one block of
 First, setup connection between
two peer application processes information (boundaries preserved)
No setup overhead & delay
 Then, reliable bidirectional in-
Destination address with each block
sequence transfer of byte stream
(boundaries not preserved in Send/receive to/from multiple peer

transfer) processes
Best-effort service only
 Multiple write/read between peer
 Possible out-of-order
processes
 Possible loss
 Finally, connection release
Client & Server Differences
 Server
 Specifies well-known port # when creating socket
 May have multiple IP addresses (net interfaces)
 Waits passively for client requests
 Client
 Assigned ephemeral port #
 Initiates communications with server
 Needs to know server’s IP address & port #
 DNS for URL & server well-known port #
 Server learns client’s address & port #
Server does Passive Open
Server  socket call creates socket to listen for connection
requests
socket()
 Server specifies type: TCP (stream)
bind()  socket call returns: non-negative integer
descriptor; or -1 if unsuccessful
listen()
Client
accept()
socket()
Blocks Connect
negotiation connect()
Socket Calls for
read()
Data write() Connection-
write() Data
read() Oriented Mode
close()
close()
Server  bind assigns local address & port # to socket with
specified descriptor
socket()
 Can wildcard IP address for multiple net interfaces
bind()  bind call returns: 0 (success); or -1 (failure)
 Failure if port # already in use or if reuse option not
listen() set
Client
accept()
socket()
Blocks Connect
negotiation connect()

Data
Socket Calls for
write()
read()
Connection-
Data
write() read() Oriented Mode
close()
close()
 listen indicates to TCP readiness to receive
Server connection requests for socket with given descriptor
socket()
 Parameter specifies max number of requests that
may be queued while waiting for server to accept
bind()
them
 listen call returns: 0 (success); or -1 (failure)
listen()
Client
accept()
socket()
Blocks Connect
negotiation connect()
Socket Calls for
Data
read() write()
Connection-
write() Data
read() Oriented Mode
close()
close()
Server  Server calls accept to accept
socket()
incoming requests
 accept blocks if queue is empty
bind()

listen()
Client
accept()
socket()
Blocks Connect
negotiation connect()

Data write()
read()

write() Data
read()

close()
close()
Client does Active Open
Server  socket call creates socket to connect to server
socket()  Client specifies type: TCP (stream)
 socket call returns: non-negative integer descriptor;
bind() or -1 if unsuccessful
listen()
Client
accept()
socket()
Blocks Connect
negotiation connect()
Socket Calls for
Data write()
Connection-
read()
Oriented Mode
write() Data
read()

close()
close()
Server  connect establishes a connection on the local
socket() socket with the specified descriptor to the specified
remote address and port #
bind()  connect returns 0 if successful; -1 if unsuccessful

listen()
Client
accept()
socket()
Note: connect
Blocks Connect initiates TCP three-way
negotiation connect() handshake
Data write()
read()

write() Data
read()

close()
close()
 accept wakes with incoming connection request
Server  accept fills client address & port # into address
socket()
structure
 accept call returns: descriptor of new connection
bind() socket (success); or -1 (failure)
 Client & server use new socket for data transfer
listen()  Original socket continues to listen for new requests
Client
accept()
socket()
Blocks Connect
negotiation connect()

Data write()
Socket Calls for
read()
Connection-
write() Data
read()
Oriented Mode
close()
close()
Data Transfer
Server  Client or server call write to transmit
socket()
data into a connected socket
 write call returns: # bytes transferred
bind() (success); or -1 (failure); blocks until all
data transferred
listen()
Client
accept()
socket()
Blocks Connect
negotiation connect()

Data write()
read()

write() Data
read()

close()
close()
Data Transfer
Server  Client or server call read to receive data from a
socket()
connected socket
 read specifies: socket descriptor; pointer to a buffer;
bind() amount of data
 read call returns: # bytes read (success); or -1
listen() (failure); blocks if no data arrives
Client
accept()
socket()
Note: write and read
Blocks Connect can be called multiple
negotiation connect() times to transfer byte
streams in both
Data write()
read() directions

write() Data
read()

close()
close()
Connection Termination
Server  Client or server call close when socket is no longer
socket()
needed
 close specifies the socket descriptor
bind()  close call returns: 0 (success); or -1 (failure)

listen()
Client Note: close initiates
accept()
socket() TCP graceful close
Blocks sequence
Connect
negotiation connect()

Data
read() write()
Socket Calls for
write() Data
read() Connection-
close()
close() Oriented Mode
Summary of the Lesson
 Socket API hides details of underlying protocols &
mechanisms

You might also like