In [[computer network]]ing, the '''Link Control Protocol''' (LCP) forms part of the [[Point-to-Point Protocol]] (PPP), within the family of [[Internet protocols]]. In setting up PPP communications, both the sending and receiving devices send out LCP [[packet (information technology)|packet]]s to determine the standards of the ensuing data transmission.

The [[Communications protocol|protocol]]: * checks the identity of the linked device and either accepts or rejects the device * determines the acceptable packet size for transmission * searches for errors in configuration * can terminate the link if requirements exceed the parameters LCP packets are sent during the ''Link Establishment Phase'' of PPP, after the [[physical layer]] has been made ready from the ''Link Dead'' state. No transmission of [[Network layer|network-layer protocols]] such as [[Internet Protocol|IP]] may be transmitted across PPP until after the ''Link Establishment'' or ''Authentication'' phases are complete. When a connection is requested by a peer to be terminated (or if ''Authentication'' fails), the ''Link Termination Phase'' is performed, and PPP returns to the ''Link Dead'' state.

== Structure == {| class="wikitable" ! style="width:7%; border-bottom:none; border-right:none;" |''Offsets'' ! style="width:7%; border-left:none;" |[[Octet (computing)|Octet]] ! colspan="8" |0 ! colspan="8" |1 ! colspan="8" |2 ! colspan="8" |3 |- ! style="border-top: none" |[[Octet (computing)|Octet]] ![[Bit]] ! style="width:2.4%;" |0 ! style="width:2.4%;" |1 ! style="width:2.4%;" |2 ! style="width:2.4%;" |3 ! style="width:2.4%;" |4 ! style="width:2.4%;" |5 ! style="width:2.4%;" |6 ! style="width:2.4%;" |7 ! style="width:2.4%;" |8 ! style="width:2.4%;" |9 ! style="width:2.4%;" |10 ! style="width:2.4%;" |11 ! style="width:2.4%;" |12 ! style="width:2.4%;" |13 ! style="width:2.4%;" |14 ! style="width:2.4%;" |15 ! style="width:2.4%;" |16 ! style="width:2.4%;" |17 ! style="width:2.4%;" |18 ! style="width:2.4%;" |19 ! style="width:2.4%;" |20 ! style="width:2.4%;" |21 ! style="width:2.4%;" |22 ! style="width:2.4%;" |23 ! style="width:2.4%;" |24 ! style="width:2.4%;" |25 ! style="width:2.4%;" |26 ! style="width:2.4%;" |27 ! style="width:2.4%;" |28 ! style="width:2.4%;" |29 ! style="width:2.4%;" |30 ! style="width:2.4%;" |31 |- ! colspan="34" |[[Point-to-Point Protocol#Structure|Point-to-Point Protocol]] |- !0 !0 | colspan="8" |Flag (0x7E) | colspan="8" |Address (0xFF) | colspan="8" |Control (0x03) | colspan="8" |Protocol (0xC0) |- !4 !32 | colspan="8" |Protocol, cont. (0x21) ! colspan="24" | |- ! colspan="34" |Link Control Protocol |- !0 !0 | colspan="8" |Code | colspan="8" |Identifier | colspan="16" |Length |- ! colspan="2" rowspan="5" | ! colspan="32" |''Link Configuration'' |- ! colspan="2" rowspan="4" |Code |1 ! colspan="2" rowspan="4" |Name | colspan="5" |Configure-Request ! colspan="4" rowspan="4" |Description | colspan="18" |Peer requesting connection with the specified options over link defaults. |- |2 | colspan="5" |Configure-Ack | colspan="18" |Peer requesting connection with the specified options over link defaults. |- |3 | colspan="5" |Configure-Nak | colspan="18" |Peer recognizes given options, but some are not acceptable. |- |4 | colspan="5" |Configure-Reject | colspan="18" |Peer does not recognize or is prohibited from accepting some given options. |- !4 !32 | colspan="32" |List of option data, size variable |- ! colspan="2" rowspan="3" | ! colspan="32" |Link Termination |- ! colspan="2" rowspan="2" |Code |5 ! colspan="2" rowspan="2" |Name | colspan="5" |Terminate-Request ! colspan="4" rowspan="2" |Description | colspan="18" |Peer requesting to close the connection. |- |6 | colspan="5" |Terminate-Ack | colspan="18" |Peer accepts connection closure, or requires re-negotiation. |- !4 !32 | colspan="32" |Uninterpreted data by the sender, size variable |- ! colspan="2" rowspan="2" | ! colspan="32" |Link Maintenance |- ! colspan="2" |Code |7 !Name | colspan="5" |Code-Reject ! colspan="2" |Description | colspan="21" |Peer does not recognize a provided LCP code. |- !4 !32 | colspan="32" |Faulting LCP Packet, size variable |- ! colspan="2" rowspan="2" | ! colspan="2" | ! colspan="30" |LCP-Specific Codes |- ! colspan="2" |Code |8 !Name | colspan="5" |Protocol-Reject ! colspan="2" |Description | colspan="21" |Peer does not recognize a protocol used within the ''LCP Opened'' state. |- !4 !32 | colspan="16" |Rejected PPP Protocol | colspan="16" |Faulting Packet, size variable |- ! colspan="2" rowspan="3" | ! colspan="2" rowspan="3" |Code |9 ! rowspan="3" |Name | colspan="5" |Echo-Request ! colspan="3" rowspan="3" |Description | colspan="20" |Peer is requesting an Echo-Reply. |- |10 | colspan="5" |Echo-Reply | colspan="20" |Peer is responding to an Echo-Request (only acceptable when in ''LCP Opened.'') |- |11 | colspan="5" |Discard-Request | colspan="20" |Peer is sending data to be discarded ("sinked") by the remote peer. |- !4 !32 | colspan="32" |Magic Number (0, if '''Configure-Request''' / '''Configure-Ack''' have not established one yet) |- !8 !64 | colspan="32" |Uninterpreted data by the sender, size variable |}

=== Link Configuration Option === {| class="wikitable" ! style="width:7%; border-bottom:none; border-right:none;" |''Offsets'' ! style="width:7%; border-left:none;" |[[Octet (computing)|Octet]] ! colspan="8" |0 ! colspan="8" |1 ! colspan="8" |2 ! colspan="8" |3 |- ! style="border-top: none" |[[Octet (computing)|Octet]] ![[Bit]] ! style="width:2.4%;" |0 ! style="width:2.4%;" |1 ! style="width:2.4%;" |2 ! style="width:2.4%;" |3 ! style="width:2.4%;" |4 ! style="width:2.4%;" |5 ! style="width:2.4%;" |6 ! style="width:2.4%;" |7 ! style="width:2.4%;" |8 ! style="width:2.4%;" |9 ! style="width:2.4%;" |10 ! style="width:2.4%;" |11 ! style="width:2.4%;" |12 ! style="width:2.4%;" |13 ! style="width:2.4%;" |14 ! style="width:2.4%;" |15 ! style="width:2.4%;" |16 ! style="width:2.4%;" |17 ! style="width:2.4%;" |18 ! style="width:2.4%;" |19 ! style="width:2.4%;" |20 ! style="width:2.4%;" |21 ! style="width:2.4%;" |22 ! style="width:2.4%;" |23 ! style="width:2.4%;" |24 ! style="width:2.4%;" |25 ! style="width:2.4%;" |26 ! style="width:2.4%;" |27 ! style="width:2.4%;" |28 ! style="width:2.4%;" |29 ! style="width:2.4%;" |30 ! style="width:2.4%;" |31 |- !0 !0 | colspan="8" |Type | colspan="8" |Length ! colspan="16" | |- ! colspan="2" | ! colspan="2" |Type |0 ! colspan="2" |Name | colspan="5" |Vendor Specific ! colspan="3" |Description | colspan="19" |Vendor specific data not defined by the PPP specification. |- !2 !16 | colspan="24" |Vendor's [[Organizationally unique identifier|Organizationally Unique Identifier]] | colspan="8" |Kind (OUI Subtype) |- !6 !48 | colspan="32" |Vendor defined data, size variable |- ! colspan="2" | ! colspan="2" |Type |1 ! colspan="2" |Name | colspan="5" |[[Maximum receive unit|Maximum-Receive-Unit]] ! colspan="3" |Description | colspan="19" |Defines a peer's MRU, overriding the default of 1,500 octets. |- !2 !16 | colspan="16" |The maximum-receive-unit for this peer's implementation ! colspan="16" | |- ! colspan="2" | ! colspan="2" |Type |3 ! colspan="2" |Name | colspan="5" |Authentication-Protocol ! colspan="3" |Description | colspan="19" |Defines an [[authentication protocol]] for a remote peer to [[Authentication|authenticate]] with before transitioning phases. |- !2 !16 | colspan="16" |The requested authentication protocol, assigned by IANA<ref>{{Cite web |title=Point-to-Point (PPP) Protocol Field Assignments |url=https://www.iana.org/assignments/ppp-numbers/ppp-numbers.xhtml#ppp-numbers-9 |access-date=2025-03-18 |website=www.iana.org}}</ref> | colspan="16" |Additional data for this protocol, size variable |- ! colspan="2" | ! colspan="2" |Type |4 ! colspan="2" |Name | colspan="5" |Quality-Protocol ! colspan="3" |Description | colspan="19" |Defines a [[quality protocol]] for [[link quality monitoring]]. |- !2 !16 | colspan="16" |The requested quality protocol | colspan="16" |Additional data for this protocol, size variable |- ! colspan="2" | ! colspan="2" |Type |5 ! colspan="2" |Name | colspan="5" |[[Magic number (programming)|Magic-Number]] ! colspan="3" |Description | colspan="19" |Defines a unique identifier for a peer. |- !2 !16 | colspan="32" |Magic number |- ! colspan="2" rowspan="2" | ! colspan="2" |Type |7 ! colspan="2" |Name | colspan="6" |Protocol-Field-Compression ! colspan="3" |Description | colspan="18" |No data. Refer to [[rfc:1661|RFC 1661]] Section [[rfc:1661#section-6.5|6.5]] for details. |- ! colspan="2" |Type |8 ! colspan="2" |Name | colspan="8" |Address-and-Control-Field-Compression ! colspan="3" |Description | colspan="16" |No data. Refer to [[rfc:1661|RFC 1661]] Section [[rfc:1661#section-6.6|6.6]] for details. |}

==References== {{Reflist}}

== External links == * {{IETF RFC|1570|link=no}}: PPP LCP Extensions * {{IETF RFC|1661|link=no}}: The Point-to-Point Protocol (PPP) * {{IETF RFC|1663|link=no}}: PPP Reliable Transmission * {{cite web|last1=Kozierok|first1=Charles|title=PPP Link Control Protocol (LCP)|url=http://www.tcpipguide.com/free/t_PPPLinkControlProtocolLCP.htm|website=The TCP/IP Guide|accessdate=4 December 2014}} [[Category:Link protocols]] [[Category:Internet Standards]]