Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
0% found this document useful (0 votes)
47 views

What Is A Socket? Using Sockets

Socket programming allows applications to communicate over networks. A socket represents an endpoint for communication and acts as an interface between applications and the network. There are two main types of sockets: SOCK_STREAM which provides reliable, connection-oriented transmission using TCP; and SOCK_DGRAM which provides unreliable datagram transmission using UDP. The socket creation process involves creating a socket, binding it to an address and port, sending/receiving data, and closing the socket. Key data structures like sockaddr store socket addresses and protocol information to allow communication between machines with different byte orders.
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)
47 views

What Is A Socket? Using Sockets

Socket programming allows applications to communicate over networks. A socket represents an endpoint for communication and acts as an interface between applications and the network. There are two main types of sockets: SOCK_STREAM which provides reliable, connection-oriented transmission using TCP; and SOCK_DGRAM which provides unreliable datagram transmission using UDP. The socket creation process involves creating a socket, binding it to an address and port, sending/receiving data, and closing the socket. Key data structures like sockaddr store socket addresses and protocol information to allow communication between machines with different byte orders.
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
You are on page 1/ 13

Socket Programming

What is a socket?
Using sockets
Types

(Protocols)
Associated functions
Styles

What is a socket?
An interface between application and

network

The application creates a socket

Once configured the application can


pass data to the socket for network
transmission
receive data from the socket

Two essential types of sockets


SOCK_DGRAM

SOCK_STREAM

a.k.a. TCP
reliable delivery
in-order guaranteed
connection-oriented
Bidirectional
Bind(), listen(),accept()
and connect()

App
3 2
1

a.k.a. UDP
unreliable delivery
no order guarantees
Send or receive

D1

App
socket

Dest.

3 2
1

D2

socket

D3
3

Model of Socket
Step 1 : Create a socket
Step 2: connect the socket to the address

of the server

Step 3: send/receive the data


Step 4: close the socket

Model of Socket
Step 1 : Create a socket
Step 2: connect the socket to the address

of the server

Step 3: send/receive the data


Step 4: close the socket

The struct sockaddr


The generic:
struct sockaddr {
u_short sa_family;
char sa_data[14];
};

sa_family
specifies which
address family is
being used
determines how the
remaining 14 bytes
are used

The Internet-specific:
struct sockaddr_in {
short sin_family;
u_short sin_port;
struct in_addr sin_addr;
char sin_zero[8];
};
sin_family = AF_INET
sin_port: port # (0-65535)
sin_addr: IP-address
sin_zero: unused

Socket Creation in C: socket


int s = socket(domain, type, protocol);
s: socket descriptor, an integer (like a file-handle)
domain: integer, communication domain
e.g., PF_INET (IPv4 protocol) typically used

type: communication type

SOCK_STREAM: reliable, 2-way, connection-based


service
SOCK_DGRAM: unreliable, connectionless,
other values: need root permission, rarely used, or
obsolete

protocol: specifies protocol (see file /etc/protocols


for a list of options) - usually set to 0

A Socket-eye view of the


Internet
medellin.cs.columbia.edu
(128.59.21.14)
newworld.cs.umass.edu
(128.119.245.93)
cluster.cs.columbia.edu
(128.59.21.14, 128.59.16.7,
128.59.16.5, 128.59.16.4)

Each host machine has an IP address


When a packet arrives at a host
8

TYPES OF ADDRESS STRUCTURES


Struct sockaddr
It holds the socket information

Struct in_addr

It holds 32 bit netid/hostid.

Struct sockaddr_in/IPv4 Socket Address

It holds the info about family, port number,


internet address and size of the struct

Struct hostent
Struct servent

Relevant info about host


and ports

Struct sockaddr_in6/IPv6 Socket Address


Struct sockaddr_storage

Its having large enough socket address type

Ports
Each host has 65,536

ports
Some ports are
reserved for specific
apps
20,21: FTP
23: Telnet
80: HTTP

Port 0
Port 1

Port 65535

A socket provides an interface

to send data to/from the


network through a port

10

Address and port byte-ordering


Address and port are stored as

integers

u_short sin_port; (16 bit)


in_addr sin_addr; (32 bit)

struct in_addr {
u_long s_addr;
};

Problem:
different machines / OSs use different word orderings
little-endian: lower bytes first
big-endian: higher bytes first

these machines may communicate with one another over the


network

128.119.40.12
128

Big-Endian
machine

119

40

12

Little-Endian
machine

N
O

R119
W

128

!
!
!
G

40

12.40.119.128
12

11

UNIXs byte-ordering funcs


u_long htonl(u_long x);

u_long ntohl(u_long x);

u_short htons(u_short x);

u_short ntohs(u_short x);

On big-endian machines, these routines do nothing


On little-endian machines, they reverse the byte

order

hto

128

119

40

12

Little-Endian12
machine
128

119

40

128.119.40.12
40
119 128
12

ntohl

nl

128
119 40
128.119.40.12

Big-Endian
12machine

Same code would have worked regardless of endian-

ness of the two machines

12

Address conversion Function


Function converting

IPv4
Inet_aton
it converts address
to number
Inet_ntoa
network address to
number
Inet_addr
internet host
address to number

Function converting

IPv6
Inet_pton
It convert text to
binary
Inet_ntop
It converts IPv4
and IPv6 from
binary to text form
13

You might also like