A methodology for the formal specification of communications protocols is described. Communications protocol software offers special specification problems, because typically such software connects computers which are widely distributed geographically and differ in model, manufacturer and operating system. The specification method discussed is a modified version of traces, which were originally developed as a general technique for software specification. The author first describes the trace language and presents several examples. He then describes the trace methodology, illustrated with a specification of Stenning's protocol. He summarizes his experience of using the methodology to write specifications of major portions of two commercial standards: the Advanced Data Communications Control Protocol (ADCCP) and the Internet Protocol (IP). It is concluded that traces are a feasible technique for formal specification of communications protocols.