Networking chapter VI

Post on 18-May-2015

330 views 1 download

Tags:

description

Chapter VI of Networking talks about IP protocol & Routing. It also covers aspects of socket programming used for converting servers into Linux Daemons.

transcript

Compiled by: Jayakumar BalasubramanianWeb: http://www.jwritings.com

Email: b.jayakumar@gmail.com

Introduction to IPThe concept of ‘unreliability’Datagram delivery from source to

destinationCreates a ‘virtual path’ and forms the basis

of packet switchingTakes the optimal/shortest pathLearn the network topology and perform

‘routing’ functionalityIndependent of data link layer technology

Recap of addressing

The IP addressLogical address32 bit lengthIP address parts:

Network partHost part

Multiple classesClass AClass BClass CSpecial class

The ‘heart’ of routing

Subnet maskThe subnet mask is

used to get the network portion of the IP address.

This is basically achieved by performing logical AND.

By looking into the subnet mask we can determine the class of the IP address.

The concept of ‘subnetting’

Example

The concept of ‘routing’

Some more conceptsRoute types:

Network specific routeHost specific routeDefault route

Type of protocolsRouting protocols (Ex) OSPF,

BGPRouted protocols (Ex) TCP,

DNS, SNMP

Data link layer Maximum Transfer Unit

(MTU)Segmentation and re-

assembly (SAR)

Special class of IP addressesBroadcast AddressMulticast AddressLoop back Address

The concept of MulticastingHave you used Yahoo/Google groups?Instead of sending a separate copy of the

data for each recipient, the source ends the data only once.

Unicast does mass mailings; Multicast does chain letters.

Advantages: Cost-efficient Timely distribution of data Reduces WAN traffic

Multicast IP addressesThe IP address belongs to ‘Class D’Ranges from 224.0.0.0 to 239.255.255.255Each address corresponds to a particular

group/pre-defined protocol.224.0.0.1 is for “All-hosts-in-LAN”

Sockets and multicasting optionsThe ‘setsockopt’ API:

setsockopt (int sockFd, int level, int optname, const void* optval, socklen_t optlen);

level : IPPROTO_IP opt-name: IP_ADD_MEMBERSHIP IP_DROP_MEMBERSHIP

struct ip_mreqstruct ip_mreq{ struct in_addr imr_multiaddr; struct in_addr imr_interface;};

The ‘xinetd’ daemonThe ‘xinetd’ is a replacement for ‘inetd’, the

internet services daemon.Each internet services are categorized based

on port number.The daemons in Linux are started when the

system is booting up. Basically all standard servers (Telnet, FTP, SSH, etc..) are started in the similar way.

Our idea is to make our server program as a daemon and try out some things.

Some basicsThe syntax of ‘select()’ and brush up.Standard socket descriptors: STDIN and

STDOUT.Linux specific:

• The /etc directory• The *.conf files in Linux

The /etc/services fileDefines the sockets and protocols used for

Internet services. Each service is listed on a single line

corresponding to the form:Syntax:ServiceName PortNumber/ProtocolName  Aliases

ServiceName - Specifies an official Internet service PortNumber - Specifies the socket port number user ProtocolName - Specifies the transport protocol used Aliases - Specifies a list of unofficial service names.

Example echo          7/tcp echo          7/udp discard       9/tcp      

sink null discard       9/udp       sink null daytime      13/tcp

daytime      13/udp chargen      19/tcp       ttytst source chargen      19/udp      ttytst source ftp           21/tcp time          37/tcp      timeserver

The /etc/xinetd.conf filexinetd.conf is the configuration file that

determines the services provided by xinetd. Any line whose first non-white-space

character is a '#' is considered a comment line. Empty lines are ignored.

Each entry defines a service identified by the service_name.

This is where the service specific details are provided.

Syntax and Exampleservice <service_name> {

<attribute> <assign_op> <value> <value> ... ...

}

service SMTP { socket type = streamprotocol = tcpwait = nouser = mailserver = /usr/sbin/exim

}

Inside your programImportant points:

Use ‘select’ and STDIN combination for receiving client requests.

Use STDOUT for sending the data out to clients.

Restarting the ‘xinetd’

/etc/init.d/xinetd restart

Web : http://www.jwritings.comEmail: b.jayakumar@gmail.com