Hello, It took me sometime to finish up with this minutes. I've enclosed it here. I wrote it in a hurry. So please bear with typing errors :S. I've created the aligning to 70 columns which should look good with most the email-service providers, if it dosent look good er., dont blame me blame your email service providerr :( Please post errors in the minutes to me or to the list so that they can be discussed. Cheers, Joe -- "Software is like sex; Its better when it is free" -- Linus Torvalds visit : http://www.joesteeve.tk/ -- Start of MOM -- GLUGOT (GNU/Linux User Group Of TCE) Minutes of meeting #2 Date : 10-01-2004 Time : 16:45 to 17:45 Venue : Z0 Hall, CSE Department, TCE, Madurai - 624015 Speaker : I. Amalan Joe Steeve ( I ME CSE ) joe_steeve@xxxxxxx Topic : `Networking and GNU/Linux -- Administration & Configuring (Basics)' ------------------------------------------------------------------------------- Introduction: ------------- A `computer network' is a collection of computers connected together by some physical medium. These computers communicate with each other by emitting signals on the medium. They follow some agreed upon protocol in doing this. There are different levels of these protocols. TCP/IP is one such protocol which is very popular today. The Internet is driven by TCP/IP. TCP/IP is the child of the `DARPA' (Defence Advanced Research Projects Agency). Novell promoted SPX/IPX. IBM promoted SNA. Xerox promoted a protocol suite of their own. Today., TCP/IP has become a standard among computer networks. The Linux kernel has a very flexible support for networking. A major part of the kernel code is for networking. Linux supports TCP/IP,SPX/IPX, etc.. The Linux kernel can perform the best on TCP/IP based networks. IP Addressing: -------------- In a TCP/IP network, each computer is known by an IP number. An IP number is a 32-bit number denoted in a form called the `dotted notation'. When two program on different machines want to communicate via the network, they do so by sending messages to each other. They address each other using a ip-address and port-no pair. The ip-address identifies a machine on the netork. A port-no identifies a program running on the machine. Server programs usually listen on some predefined port. (Eg. SMTP servers listen on port number 25. POP servers listen on port number 110. HTTP servers (web server) listen on port number 80.) The port number range 0 to 1000 are reserved for standard protocols and services. On any UNIX, for a program to listen on one of these ports, it should be run as `super-user'. The `Internet Engineering Task Force' (IETF) moniters and maintains the technical details of the Internet and TCP/IP standards. When TCP/IP was introduced, the IETF identified the need to classify the IP-Address space and introduced a addressing scheme called `classful' addressing. In this scheme, the IP-Address space was divided into four classes. The class in which an ip-number belongs can be easily identified by examining its first few bits. The classifying scheme is explained below: 0xxxxxxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx --> Class A 10xxxxxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx --> Class B 110xxxxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx --> Class C 1110xxxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx --> Class D x --> Either a `0' or a `1' The Internet is comprised of many small networks. Hence its called the `INTER NETwork'. In order to make the addressing more simpler a need arised to consider a part of the ip-address as a network id and the rest as the host id. Along with this conventions were chosen to address a full network and to address the current network (explained later in this text). Now a problem arose as to how many bits should comprise of the `network-id' and how many bits should be as the `host-id'. Different organisations needed different lengths of `host-id' and `network-id's depending upon the size of their networks. In order to cater the needs of various establishments, the IETF proposed the `classful' addressing scheme. Where the initial bits of the ip-address was used to determine the bit-length of the host-id and the network-id part of the ip-address. In a class A network, the first bit is `0'. The rest of the 7 bits of the first byte comprises of the `network-id' and the rest 3 bytes comprises of the `host-id'. In class B, the first two bits were `10' and the next 14 bits was used as the network-id. The last 2 bytes was used as the `host-id'. In class C, the first three bits is `110'. The next 21 bits are the `network-id' and the last 1 byte is used as the host-id. Class D is a special case. It is used for multicasting. The first four bits is `1110' and rest of the 28 bits correspond to a group of machines. This is summarised in the following diagram. class A := 0xxxxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx |net-id| host-id | class B := 10xxxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx | net-id | host-id | class C := 110xxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx | net-id |host-id | class D := 1110xxx.xxxxxxxx.xxxxxxxx.xxxxxxxx | multicast address | When the Internet was commercialised, a lot of Internet Service Providers sprouted up and a new scheme came up called the `classless' addressing. This scheme removed the hassles of `classful' addressing. The ip-number always carried along with it a integer which specified the number of bits which are the `network-id' and the number of bits that are the `host-id'. A new routing called `Classless Inter Domain Routing' (CIDR) came up. This is the currently used scheme. Organisations use `classful' addressing in their private networks, but the public networks are addressed using the `classless' addressing scheme. In classless addressing, an ip-address is always accompanied by a net-mask or an integer. It is denoted as follows. a.b.c.d/8 OR ip-number= a.b.c.d net-mask = 255.0.0.0 This means that the first 8 bits of the ip-number is used as a network id and the rest of them are used as the host-id. Netmasks are also used in the `classful' addressing scheme to specify subnets. Networking in Linux: -------------------- The hardware component which connects a computer to the network is called the interface. There are a variety of interfaces available. The most commonly used device in LANs are `Ethernet controllers'. In the case of connection to other networks modems are used. These modems can either be a regular telephone modem or a ISDN modem or leased line modem or anything else. These interfaces are exported as a device file in the `/dev' directory by any conventional UNIX. But Linux dosent export this as a file. Instead these devices are initialised and maintained internally. They can be configured by userland software. This adds flexibility to use the kernel for any networking purpose. Internally the interfaces are named depending on their type. Ethernet controllers are named as eth[0...n]. PPP interfaces (modems) are named as ppp[0...n]. When the kernel finds a Ethernet device, the kernel initializes the corresponding device. In the case of ppp devices, user software should create the link and then inform the kernel about it. This way the user gets to makeup a ppp link to an ISP or any other network at his/her own wish. Each of these interfaces can hold more than on ip-address. This feature is helpful in cases where a machine acts as the gateway between logical subnets on the same physical network. In this case the devices are named as follows. eth0 --> first interface eth0:1 --> second interface eth0:2 --> third interface ( and so on ) The command to assign an ip-address to an interface is; #ifconfig eth0 192.169.2.1 netmask 255.255.255.0 up The above command assigns `192.168.2.1' to eth0 and sets the netmask as `255.255.255.0'. Now the kernel assumes the broadcast address and the network address as `192.168.2.255' and `192.168.2.0' respectively. To shutdown an interface, the following command is used. #ifconfig eth0 down The ifconfig is a tool used to control various parameters of the interface. `ifconfig' stands for `interface config'. Name resolver: -------------- On the Internet, it would be difficult to remember the ip-addresses of the needed web-sites. Hence, the individual computers on a network are given a name and are referred using this name. In this case., a method is needed to convert these human readable names to ip-addresses. This is the work of the resolver code of the Linux kernel. The resolver code can either look into a locally available configuration file (/etc/hosts.conf) for a `hostname' to `ip-address' mapping, or it can request another server called the `nameserver' or `DNS server' to give the ip-address for the required hostname. The `/etc/host.conf' file controls how the resolver should go about resolving a given hostname. It specifies where the resolver should look first, either the local file or the server. The following is an example `/etc/host.conf'. # These are comment lines # /etc/host.conf # order hosts,bind multi on In the above case, the resolver code first looks into the `/etc/host.conf' file to find a match for a particular hostname. If it dosent find one, then it requests an external server to provide the ip-address for the required hostname. The `/etc/resolve.conf' defines the addresses of the nameservers. When the resolver code decides to query a external server about a hostname it consults this file to find the list of `nameservers' it can query. TCP/IP standard defines `127.0.0.1' as the loopback interface. It means the current machine. This address is used for checking and debugging. This is often called the loopback device. This can be configured like anyother interface. The kernel handles these interfaces specially. (i.e.) packets to this interface are not broadcasted on the network but are subjected to all the protocol layers like any other packet. The loopback interface can be configured using the following commands. #ifconfig lo 127.0.0.1 #route add -host 127.0.0.1 lo The second command `route' adds a route in the kernel's routing table about how to reach this interface. Routes are needed in the case where multiple networks are interconnected (like in the Internet). When setting up a ppp link with a ISP or some other computer, the `pppd' (PPP software) assigns the route of all the packets as the other end of the ppp-link. When configuring a `network-router' the administrator should set up the routing tables accordingly. However discussion of routing is out of the scope of this text. Other config files: ------------------- A few other configuration files are worth discussion. These are mostly defined automatically by the installer scripts. `/etc/services' -> This file describes the different services and their respective port numbers. `/etc/protocols' -> This file describes the various protocols and their respective numeric ids. `/etc/hosts.allow' -> A listing of hosts and the respective services they are allowed to access. `/etc/hosts.deny' -> A listing of hosts and the respective services they are denied from accessing. It is highly recomended that the user check these files to make sure what he/she allows and denies on his box. Conclusion: ----------- I've tried my best to keep this text as simple as possible. Please notify errors in this text directly to the author. If it is a subject of discussion, you are free to start a thread of discussion on `glugot@xxxxxxxxxxxxx' -- EoF --