Sometimes, the problems we experience with computers are a result of a legacy design. Hardware or software might have been designed 10 or 20 years ago when the world of computing was vastly different from the way it is today. As a result, the product in use today isn't as effective as it could be because of aging or obsolete design.
Such is the case of the traditional firewall, whose design dates back two decades to the late 1980s. Early firewalls consisted of packet filtering software that inspected all traffic coming into and going out of a network. If a packet of data met specific rules, its transmission was simply dropped.
Later generations of firewalls were engineered to approve specific applications or to look for Internet traffic using specific ports. These legacy firewalls were built on the assumption that an application would respect its protocol which would respect the port. For example, Port 80 must mean HTTP and that must mean web browsing. Or, Port 25 must mean SMTP and that must mean email.
That's not so true today. Many modern applications are built to be flexible, meaning they change ports as needed to deliver their content. Skype and BitTorrent, for example, hop around and use multiple ports like Port 80 or 443. A traditional firewall isn't expecting this kind of traffic there. Unfortunately, the old assumptions about port mapping applications are out the window today.
This has created a cottage industry for other "bolt-on" security applications like intrusion detection/prevention systems and antivirus/anti-malware scanning. These applications are meant to catch the problems that legacy firewalls sometimes miss. The result can be a patchwork of security applications that scan traffic multiple times and add to the complexity of your infrastructure.