A lot of networks today are behind firewalls. In peer-to-peer (P2P) networking, firewall-protected peers may have to communicate with peers outside the firewall. This chapter shows how to design P2P systems to work with different kinds of firewalls within the object-oriented action systems framework by combining formal and informal methods. We present our approach via a case study of extending a Gnutella-like P2P system (Yan & Sere, 2003) to provide connectivity through firewalls.
Key Terms in this Chapter
Action System: An action system is a notation for writing programs, due to Ralph Back. An action system is a collection of actions. It is executed by repeatedly choosing an action to execute. If it is the case that no action is able to be executed, then execution of the action system stops.
Peer-to-Peer (P2P): A peer-to-peer (P2P) computer network is a network that relies primarily on the computing power and bandwidth of the participants in the network rather than concentrating it in a relatively low number of servers. P2P networks are typically used for connecting nodes via largely ad hoc connections.
Firewall: A firewall is a piece of hardware and/or software which functions in a networked environment to prevent some communications forbidden by the security policy, analogous to the function of firewalls in building construction.