Two standards currently compete for the dominance of IP telephony signaling: the H.323 protocol suite by ITU-T, and the Session Initiation Protocol (SIP) by IETF. Both of these signaling protocols provide mechanisms for call establishment and teardown, call control and supplementary services, and capability exchange. We investigate and compare these two protocols in terms of Functionality, Quality of Service (QoS), Scalability, Flexibility, Interoperability, and Ease of Implementation. For fairness of comparison, we consider similar scenarios for both protocols. In particular, we focus on scenarios that involve a gatekeeper for H.323, and a Proxy/Redirect server for SIP. The reason is that medium-to-large IP Telephony systems are not manageable without a gatekeeper or proxy server. We consider all three versions of H.323. In terms of functionality and services that can be supported, H.323 version 2 and SIP are very similar. However, supplementary services in H.323 are more rigorously defined, and therefore fewer interoperability issues are expected among its implementations. Furthermore, H.323 has taken more steps to ensure compatibility among its different versions, and to interoperate with PSTN. The two protocols are comparable in their QoS support [similar call setup delays, no support for resource reservation or class of service (CoS) setting], but H.323 version 3 will allow signaling of the requested CoS. SIP's primary advantages are (1) flexibility to add new features, and (2) relative ease of implementation and debugging. Finally, we note that H.323 and SIP are improving themselves by learning from each other, and the differences between them are diminishing with each new version.