Line 671:
The CONNECT, CONNACK, PUBLISH and DISCONNECT Packet variable header ends with a set of Identifier/Value pairs, this is made up of a length field followed by the Identifier/Value pairs themselves.
Proposed: The CONNECT, CONNACK, PUBLISH, and DISCONNECT Packet variable headers end with an optional set of Identifier/Value pairs.
Line 672:
... this is made up of a length field followed by the Identifier/Value pairs themselves.
Note: It feels redundant to discuss the composition since it is then immediately described in the following section - 2.3.3.1?
Lines 674-675
The length or the Identifier/Value fields does not include ...
Proposed: "The length of the ..."
Lines 676-677
The Identifier/Value pairs can appear in any order.
Proposed: The Identifier/Value pairs MAY appear in any order.
Lines 681-682:
On receipt of an Identifier or Value, that is not defined for the Packet the receiver MUST close the network connection.
Proposed: On receipt of an Identifier or Value that is not defined for the Packet, the receiver MUST close the network connection.
Line 684: In this specification, only one-byte Identifier's are used.
Proposed: "one-byte Identifiers".