There are two groups of researchers who are interested in designing network protocols and who cannot (yet) effectively communicate with one another c- cerning these protocols. The first is the group of protocol verifiers, and the second is the group of protocol implementors. The main reason for the lack of effective communication between these two groups is that these groups use languages with quite different semantics to specify network protocols. On one hand, the protocol verifiers use specification languages whose semantics are abstract, coarse-grained, and with large atom- ity. Clearly, protocol specifications that are developed based on such semantics are easier to prove correct. On the other hand, the protocol implementors use specification languages whose semantics are concrete, fine-grained, and with small atomicity. Protocol specifications that are developed based on such - mantics are easier to implement using system programming languages such as C, C , and Java. To help in closing this communication gap between the group of protocol verifiers and the group of protocol implementors, we present in this monograph a protocol specification language called the Timed Abstract Protocol (or TAP, for short) notation. This notation is greatly influenced by the Abstract Protocol Notation in the textbook Elements of Network Protocol Design, written by the second author, Mohamed G. Gouda. The TAP notation has two types of sem- tics: an abstract semantics that appeals to the protocol verifiers and a concrete semantics thatappeals to the protocol implementors group.