# Data Networking/Spring 2014/Group0

Motivation:
Today the use of internet is ubiquitous. Interconnection of different networks is nothing but Internet. It is basically a group of computer networks which is based on TCP/IP model. The theoretical knowledge of all the concepts encountered while configuration has been taught in theory classes. This project has helped us in understanding these concepts practically with the theoretical knowledge gained in class. With the rapid usage of Internet, need arises to actually implement our network, ad-hoc networks. Dynamic Host Configuration (DHCP) server assigns IP addresses to different clients which are present in this ad-hoc network which gives access to the web page post IP resolution from Domain Name System. Security is the biggest concern which needs to be incorporated in networking. Thus, Firewall is implemented to secure our servers. Hence, every machine should be able to sustain any catastrophe that may arise at any moment, therefore creating a Backup in our own network. Since ages, Windows has captured the market and hence to add flavor to our lives we need to move from Windows to a different Operating System called as Linux. Linux is an open-source Operating system; it is easy for development, modification and distribution also it is free of cost. In our project we have used 14.04 version of Ubuntu.
Behavior of Protocols:
Domain Name System:
DNS stands for Domain Name Server. It is a hierarchical distribution of naming systems for the servers and services throughout the network. DNS is used to translate the URLs Domain name to IP addresses. It uses services of either TCP or UDP on port 53. It uses TCP in case when the response of the query is more than 512 bytes. In case, source has sent a DNS query using UDP and server notices that response is going to be greater than 512 bytes, then it uses truncate bit (TC bit) in the flag field which is set to 1. Source now initiates a TCP connection on port 53 to which the server replies. TCP connection is also used during zone transfers. Implementation of BIND9 server with caching can be used to reduce latency. Advantage of doing this is that whenever a response is received for a DNS query, it is cached in the server. As a result, the time taken to load the previous cached page is noticeably reduced, thus decreasing the waiting time of the user to obtain the data from the webpage.
Types of DNS records:
MX:
CNAME:
A:
NS: This type is the Name server lookup name of the domain. This type specifies a host which should be authoritative for the specified class and the domain. PTR:
The reverse DNS lookup is in IN-ADDR.ARPA domain. In Reverse DNS, entries contain host name with reverse IP addresses with “.in-addr.arpa” added. These are set up with the PTR records. They are defined with 4 labels along with suffix IN_ADDR.ARPA and each label presenting one octet presenting one octet of ip address, which is in the range of 0 to 255 and expressed in a character string for a decimal value. The network addresses of host have domain names containing all the 4 labels i.e an IP address 192.168.1.36 will be located in the domain name of 36.1.168.192.IN-ADDR.ARPA. IPv6 is configured same as IPv4. For IPv6 reverse DNS, a new zone file is configured.
Dynamic Host Configuration Protocol (DHCP):
1. To assign IP addresses to networking component is done by using DHCP. It is done in following ways:
i. Static Allocation: In static allocation, IP addresses are assigned to networking devices like routers, computers etc. statically and it remains same unless it is changed by the network administrator.
ii. Automatic Allocation: In this type of allocation, same IP address get allocated to the systems which whenever gets connected to a particular network.
iii. Dynamic Allocation: In this type of allocation, a DHCP server allocates IP addresses to the devices from the defined pool of addresses as mentioned in the DHCP server. IPv4 and IPv6 addressing can be done by using DHCP server. To prevent wastage of IP addresses, correct subnet mask should be given.
2. DHCP is a client-server protocol where a server shares its clients and the resources and establishes a connection with the server to utilize these resources.
i. Behavior of DHCP server: When a DHCP client tries to connect to the server by sending a DHCP message, on the current binding state of the client, the server processes it. The various types of DHCP message can be as DHCPDISCOVER, DHCPREQUEST, DHCPRELEASE, DHCPINFORM.
a. DHCPDISCOVER: To each and every DHCPDISCOVER message from the client, the server picks an IP address from its given DHCP pool. If IP address is not available, it reports the system admin or otherwise it assigns the IP to the client based on the binding state with that particular client.
b. DHCPREQUEST: When server gives an IP to the client in reply to DHCPDISCOVER, the clients returns a DHCPREQUEST message to the server, by checking if the IP is previously allocated or if the lease has ended, etc. Normally, in response to any DHCPOFFER given by server, the client sends back a DHCP request having option as 'Server Identifier'.
c. DHCPRELEASE: If no network address is allocated, the client returns a DHCPRELEASE message to the server and the server hence makes an entry of client's initialization fields.
d. DHCPINFORM: To every DHCPINFORM message from the client, the server sends a DHCPACK message directly to the address mentioned at 'ciaddr' of the DHCPINFORM message.
ii. Behaviour of DHCP client: The client may receive following messages from the server. DHCPOFFER DHCPACK DHCPNACK. The client then sends DHCPINFORM message to the server and waits for DHCPACK message from the server. The client then completes the configuration process by setting up its own parameters.
Webserver and Firewall:
To host a website, we need a webserver to run on the Linux Operating System. Apache2 is the popularly used webserver in Linux. Firewall is used to protect the network from the incoming and outgoing traffic in a network. Other than the allowed set of rules, all other traffic is denied by this firewall at the gateway router.
Requirements:
The most and foremost requirement in today’s world is of Linux based OS. We have implemented our project by using Ubuntu 14.04 version. In addition to this, BIND9 is implemented for DNS caching purpose, DHCP server for assigning IP addresses dynamically and Apache2 server for website hosting is required.