In computing, a firewall is a network security system that controls and monitors the incoming as well as outgoing network traffic as according to security rules that are already determined. Generally, a firewall introduces a barrier between a secure, trusted internal network and another outside network like the internet which is considered not to be trusted or secured. Firewalls sometimes are classified as either network firewalls or host based firewalls. The network firewalls are a software application running on general purpose hardware or hardware based firewall computer applicants which filter traffic between many networks. The host based firewalls give a layer of software on one host which controls network traffic in and out of that particular computer. The firewall appliances might also give other functions to the internal network that they are currently protecting like acting as VPN or DHCP server for that network.
The firewall technology was established in the late 1980 s when the internet was quite new technology as according to its global use and connectivity. The derivatives to firewalls for network security were routers used in the late 1980 s. The first generation of firewall is known as packet filters. This first type of firewall looked at network addresses and ports of the packet and determined whether that packet should be blocked or allowed. The second generation is known as stateful filters and the firewalls were named as Circuit-level gateways. This naming was given by three fellow workers from AT&T Bell Laboratories Janardan Sharma, Dave Presotto and Kshitij Nigam, who developed this firewall. This second generation firewall works of their first generation models and also operate up to layer 4 i.e transport layer of the OSI model. The third and the last generation of firewall is known as application layer. This application Firewall also known as Firewall Toolkit (FWTK) was developed by Wei Xu, Marcus Ranum and Peter Churchyard. The main benefit of application layer firewall filtering is that it can understand some protocols and applications like Domain Name System (DNS), File Transfer Protocol (FTP) and Hypertext Transfer Protocol (HTTP). This is needed as it is capable to detect whether any unwanted protocol is trying to go past the firewall on an allowed port or detect whether a protocol is getting abused in a harmful manner.