rfc2637.txt
来自「RFC 的详细文档!」· 文本 代码 · 共 1,522 行 · 第 1/5 页
TXT
1,522 行
A PNS is envisioned to operate on general-purpose computing/server
platforms. The PNS handles the server side of the PPTP protocol.
Since PPTP relies completely on TCP/IP and is independent of the
interface hardware, the PNS may use any combination of IP
interface hardware including LAN and WAN devices.
Session
PPTP is connection-oriented. The PNS and PAC maintain state for
each user that is attached to a PAC. A session is created when
end-to-end PPP connection is attempted between a dial user and the
PNS. The datagrams related to a session are sent over the tunnel
between the PAC and PNS.
Tunnel
A tunnel is defined by a PNS-PAC pair. The tunnel protocol is
defined by a modified version of GRE [1,2]. The tunnel carries
PPP datagrams between the PAC and the PNS. Many sessions are
multiplexed on a single tunnel. A control connection operating
over TCP controls the establishment, release, and maintenance of
sessions and of the tunnel itself.
1.3. Protocol Overview
There are two parallel components of PPTP: 1) a Control Connection
between each PAC-PNS pair operating over TCP and 2) an IP tunnel
operating between the same PAC-PNS pair which is used to transport
GRE encapsulated PPP packets for user sessions between the pair.
Hamzeh, et al. Informational [Page 6]
RFC 2637 Point-to-Point Tunneling Protocol (PPTP) July 1999
1.3.1. Control Connection Overview
Before PPP tunneling can occur between a PAC and PNS, a control
connection must be established between them. The control connection
is a standard TCP session over which PPTP call control and management
information is passed. The control session is logically associated
with, but separate from, the sessions being tunneled through a PPTP
tunnel. For each PAC-PNS pair both a tunnel and a control connection
exist. The control connection is responsible for establishment,
management, and release of sessions carried through the tunnel. It is
the means by which a PNS is notified of an incoming call at an
associated PAC, as well as the means by which a PAC is instructed to
place an outgoing dial call.
A control connection can be established by either the PNS or the PAC.
Following the establishment of the required TCP connection, the PNS
and PAC establish the control connection using the Start-Control-
Connection-Request and -Reply messages. These messages are also used
to exchange information about basic operating capabilities of the PAC
and PNS. Once the control connection is established, the PAC or PNS
may initiate sessions by requesting outbound calls or responding to
inbound requests. The control connection may communicate changes in
operating characteristics of an individual user session with a Set-
Link-Info message. Individual sessions may be released by either the
PAC or PNS, also through Control Connection messages.
The control connection itself is maintained by keep-alive echo
messages. This ensures that a connectivity failure between the PNS
and the PAC can be detected in a timely manner. Other failures can be
reported via the
Wan-Error-Notify message, also on the control connection.
It is intended that the control connection will also carry management
related messages in the future, such as a message allowing the PNS to
request the status of a given PAC; these message types have not yet
been defined.
1.3.2. Tunnel Protocol Overview
PPTP requires the establishment of a tunnel for each communicating
PNS-PAC pair. This tunnel is used to carry all user session PPP
packets for sessions involving a given PNS-PAC pair. A key which is
present in the GRE header indicates which session a particular PPP
packet belongs to.
Hamzeh, et al. Informational [Page 7]
RFC 2637 Point-to-Point Tunneling Protocol (PPTP) July 1999
In this manner, PPP packets are multiplexed and demultiplexed over a
single tunnel between a given PNS-PAC pair. The value to use in the
key field is established by the call establishment procedure which
takes place on the control connection.
The GRE header also contains acknowledgment and sequencing
information that is used to perform some level of congestion-control
and error detection over the tunnel. Again the control connection is
used to determine rate and buffering parameters that are used to
regulate the flow of PPP packets for a particular session over the
tunnel. PPTP does not specify the particular algorithms to use for
congestion-control and flow-control. Suggested algorithms for the
determination of adaptive time-outs to recover from dropped data or
acknowledgments on the tunnel are included in section 4.4 of this
document.
1.4. Message Format and Protocol Extensibility
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.
Hamzeh, et al. Informational [Page 8]
RFC 2637 Point-to-Point Tunneling Protocol (PPTP) July 1999
The currently defined Control Messages, grouped by function, are:
Control Message Message Code
(Control Connection Management)
Start-Control-Connection-Request 1
Start-Control-Connection-Reply 2
Stop-Control-Connection-Request 3
Stop-Control-Connection-Reply 4
Echo-Request 5
Echo-Reply 6
(Call Management)
Outgoing-Call-Request 7
Outgoing-Call-Reply 8
Incoming-Call-Request 9
Incoming-Call-Reply 10
Incoming-Call-Connected 11
Call-Clear-Request 12
Call-Disconnect-Notify 13
(Error Reporting)
WAN-Error-Notify 14
(PPP Session Control)
Set-Link-Info 15
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 2. 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.1.
The MTU for the user data packets encapsulated in GRE is 1532 octets,
not including the IP and GRE headers.
Hamzeh, et al. Informational [Page 9]
RFC 2637 Point-to-Point Tunneling Protocol (PPTP) July 1999
2. Control Connection Protocol Specification
Control Connection messages are used to establish and clear user
sessions. The first set of Control Connection messages are used to
maintain the control connection itself. The control connection is
initiated by either the PNS or PAC after they establish the
underlying TCP connection. The procedure and configuration
information required to determine which TCP connections are
established is not covered by this protocol.
The following Control Connection messages are all sent as user data
on the established TCP connection between a given PNS-PAC pair. Note
that care has been taken to ensure that all word (2 octet) and
longword (4 octet) values begin on appropriate boundaries. All data
is sent in network order (high order octets first). Any "reserved"
fields MUST be sent as 0 values to allow for protocol extensibility.
2.1. Start-Control-Connection-Request
The Start-Control-Connection-Request is a PPTP control message used
to establish the control connection between a PNS and a PAC. Each
PNS-PAC pair requires a dedicated control connection to be
established. A control connection must be established before any
other PPTP messages can be issued. The establishment of the control
connection can be initiated by either the PNS or PAC. A procedure
which handles the occurrence of a collision between PNS and PAC
Start-Control-Connection-Requests is described in section 3.1.3.
Hamzeh, et al. Informational [Page 10]
RFC 2637 Point-to-Point Tunneling Protocol (PPTP) July 1999
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Length | PPTP Message Type |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Magic Cookie |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Control Message Type | Reserved0 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Protocol Version | Reserved1 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Framing Capabilities |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Bearer Capabilities |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Maximum Channels | Firmware Revision |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
+ Host Name (64 octets) +
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
+ Vendor String (64 octets) +
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Length Total length in octets of this PPTP
message, including the entire PPTP
header.
PPTP Message Type 1 for Control Message.
Magic Cookie 0x1A2B3C4D. This constant value is used
as a sanity check on received messages
(see section 1.4).
Control Message Type 1 for Start-Control-Connection-Request.
Reserved0 This field MUST be 0.
Protocol Version The version of the PPTP protocol that the
sender wishes to use.
Reserved1 This field MUST be 0.
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?