PPTP defines a set of messages sent as TCP data on the control connection between a PNS and a given PAC. The TCP session for the control connection is established by initiating a TCP connection to port 1723 [6]. The source port is assigned to any unused port number.
Each PPTP Control Connection message begins with an 8 octet fixed header portion. This fixed header contains the following: the total length of the message, the PPTP Message Type indicator, and a "Magic Cookie".
Two Control Connection message types are indicated by the PPTP
Message Type field:
1 - Control Message
2 - Management Message
Management messages are currently not defined.
The Magic Cookie is always sent as the constant 0x1A2B3C4D. Its basic purpose is to allow the receiver to ensure that it is properly synchronized with the TCP data stream. It should not be used as a means for resynchronizing the TCP data stream in the event that a transmitter issues an improperly formatted message. Loss of synchronization must result in immediate closing of the control connection's TCP session.
For clarity, all Control Connection message templates in the next section include the entire PPTP Control Connection message header.
Numbers preceded by 0x are hexadecimal values.
The currently defined Control Messages, grouped by function, are:
Control MessageMessage Code
(Control Connection Management)
Start-Control-Connection-Request1
Start-Control-Connection-Reply2
Stop-Control-Connection-Request3
Stop-Control-Connection-Reply4
Echo-Request5
Echo-Reply6
(Call Management)
Outgoing-Call-Request7
Outgoing-Call-Reply8
Incoming-Call-Request9
Incoming-Call-Reply10
Incoming-Call-Connected11
Call-Clear-Request12
Call-Disconnect-Notify13
(Error Reporting)
WAN-Error-Notify14
(PPP Session Control)
Set-Link-Info15
The Start-Control-Connection-Request and -Reply messages determine which version of the Control Connection protocol will be used. The version number field carried in these messages consists of a version number in the high octet and a revision number in the low octet. Version handling is described in Section 3. The current value of the version number field is 0x0100 for version 1, revision 0.
The use of the GRE-like header for the encapsulation of PPP user packets is specified in Section 4. The MTU for the user data packets encapsulated in GRE is 1532 octets, not including the IP and GRE headers.