Section Appendix B. TCP Requirement Summary

This section is adapted from RFC 1122.
   Note that there is no requirement related to PLPMTUD in this list,
   but that PLPMTUD is recommended.
    +=================+=========+======+========+=====+========+======+
    |     Feature     |  ReqID  | MUST | SHOULD | MAY | SHOULD | MUST |
    |                 |         |      |        |     |  NOT   | NOT  |
    +=================+=========+======+========+=====+========+======+
    | PUSH flag                                                       |
    +=================+=========+======+========+=====+========+======+
    | Aggregate or    | MAY-16  |      |        |  X  |        |      |
    | queue un-pushed |         |      |        |     |        |      |
    | data            |         |      |        |     |        |      |
    +-----------------+---------+------+--------+-----+--------+------+
    | Sender collapse | SHLD-27 |      |   X    |     |        |      |
    | successive PSH  |         |      |        |     |        |      |
    | bits            |         |      |        |     |        |      |
    +-----------------+---------+------+--------+-----+--------+------+
    | SEND call can   | MAY-15  |      |        |  X  |        |      |
    | specify PUSH    |         |      |        |     |        |      |
    +-----------------+---------+------+--------+-----+--------+------+
    | *  If cannot:   | MUST-60 |      |        |     |        |  X   |
    |    sender       |         |      |        |     |        |      |
    |    buffer       |         |      |        |     |        |      |
    |    indefinitely |         |      |        |     |        |      |
    +-----------------+---------+------+--------+-----+--------+------+
    | *  If cannot:   | MUST-61 |  X   |        |     |        |      |
    |    PSH last     |         |      |        |     |        |      |
    |    segment      |         |      |        |     |        |      |
    +-----------------+---------+------+--------+-----+--------+------+
    | Notify          | MAY-17  |      |        |  X  |        |      |
    | receiving ALP^1 |         |      |        |     |        |      |
    | of PSH          |         |      |        |     |        |      |
    +-----------------+---------+------+--------+-----+--------+------+
    | Send max size   | SHLD-28 |      |   X    |     |        |      |
    | segment when    |         |      |        |     |        |      |
    | possible        |         |      |        |     |        |      |
    +=================+=========+======+========+=====+========+======+
    | Window                                                          |
    +=================+=========+======+========+=====+========+======+
    | Treat as        | MUST-1  |  X   |        |     |        |      |
    | unsigned number |         |      |        |     |        |      |
    +-----------------+---------+------+--------+-----+--------+------+
    | Handle as       | REC-1   |      |   X    |     |        |      |
    | 32-bit number   |         |      |        |     |        |      |
    +-----------------+---------+------+--------+-----+--------+------+
    | Shrink window   | SHLD-14 |      |        |     |   X    |      |
    | from right      |         |      |        |     |        |      |
    +-----------------+---------+------+--------+-----+--------+------+
    | *  Send new     | SHLD-15 |      |        |     |   X    |      |
    |    data when    |         |      |        |     |        |      |
    |    window       |         |      |        |     |        |      |
    |    shrinks      |         |      |        |     |        |      |
    +-----------------+---------+------+--------+-----+--------+------+
    | *  Retransmit   | SHLD-16 |      |   X    |     |        |      |
    |    old unacked  |         |      |        |     |        |      |
    |    data within  |         |      |        |     |        |      |
    |    window       |         |      |        |     |        |      |
    +-----------------+---------+------+--------+-----+--------+------+
    | *  Time out     | SHLD-17 |      |        |     |   X    |      |
    |    conn for     |         |      |        |     |        |      |
    |    data past    |         |      |        |     |        |      |
    |    right edge   |         |      |        |     |        |      |
    +-----------------+---------+------+--------+-----+--------+------+
    | Robust against  | MUST-34 |  X   |        |     |        |      |
    | shrinking       |         |      |        |     |        |      |
    | window          |         |      |        |     |        |      |
    +-----------------+---------+------+--------+-----+--------+------+
    | Receiver's      | MAY-8   |      |        |  X  |        |      |
    | window closed   |         |      |        |     |        |      |
    | indefinitely    |         |      |        |     |        |      |
    +-----------------+---------+------+--------+-----+--------+------+
    | Use standard    | MUST-35 |  X   |        |     |        |      |
    | probing logic   |         |      |        |     |        |      |
    +-----------------+---------+------+--------+-----+--------+------+
    | Sender probe    | MUST-36 |  X   |        |     |        |      |
    | zero window     |         |      |        |     |        |      |
    +-----------------+---------+------+--------+-----+--------+------+
    | *  First probe  | SHLD-29 |      |   X    |     |        |      |
    |    after RTO    |         |      |        |     |        |      |
    +-----------------+---------+------+--------+-----+--------+------+
    | *  Exponential  | SHLD-30 |      |   X    |     |        |      |
    |    backoff      |         |      |        |     |        |      |
    +-----------------+---------+------+--------+-----+--------+------+
    | Allow window    | MUST-37 |  X   |        |     |        |      |
    | stay zero       |         |      |        |     |        |      |
    | indefinitely    |         |      |        |     |        |      |
    +-----------------+---------+------+--------+-----+--------+------+
    | Retransmit old  | MAY-7   |      |        |  X  |        |      |
    | data beyond     |         |      |        |     |        |      |
    | SND.UNA+SND.WND |         |      |        |     |        |      |
    +-----------------+---------+------+--------+-----+--------+------+
    | Process RST and | MUST-66 |  X   |        |     |        |      |
    | URG even with   |         |      |        |     |        |      |
    | zero window     |         |      |        |     |        |      |
    +=================+=========+======+========+=====+========+======+
    | Urgent Data                                                     |
    +=================+=========+======+========+=====+========+======+
    | Include support | MUST-30 |  X   |        |     |        |      |
    | for urgent      |         |      |        |     |        |      |
    | pointer         |         |      |        |     |        |      |
    +-----------------+---------+------+--------+-----+--------+------+
    | Pointer         | MUST-62 |  X   |        |     |        |      |
    | indicates first |         |      |        |     |        |      |
    | non-urgent      |         |      |        |     |        |      |
    | octet           |         |      |        |     |        |      |
    +-----------------+---------+------+--------+-----+--------+------+
    | Arbitrary       | MUST-31 |  X   |        |     |        |      |
    | length urgent   |         |      |        |     |        |      |
    | data sequence   |         |      |        |     |        |      |
    +-----------------+---------+------+--------+-----+--------+------+
    | Inform ALP^1    | MUST-32 |  X   |        |     |        |      |
    | asynchronously  |         |      |        |     |        |      |
    | of urgent data  |         |      |        |     |        |      |
    +-----------------+---------+------+--------+-----+--------+------+
    | ALP^1 can learn | MUST-33 |  X   |        |     |        |      |
    | if/how much     |         |      |        |     |        |      |
    | urgent data Q'd |         |      |        |     |        |      |
    +-----------------+---------+------+--------+-----+--------+------+
    | ALP employ the  | SHLD-13 |      |        |     |   X    |      |
    | urgent          |         |      |        |     |        |      |
    | mechanism       |         |      |        |     |        |      |
    +=================+=========+======+========+=====+========+======+
    | TCP Options                                                     |
    +=================+=========+======+========+=====+========+======+
    | Support the     | MUST-4  |  X   |        |     |        |      |
    | mandatory       |         |      |        |     |        |      |
    | option set      |         |      |        |     |        |      |
    +-----------------+---------+------+--------+-----+--------+------+
    | Receive TCP     | MUST-5  |  X   |        |     |        |      |
    | Option in any   |         |      |        |     |        |      |
    | segment         |         |      |        |     |        |      |
    +-----------------+---------+------+--------+-----+--------+------+
    | Ignore          | MUST-6  |  X   |        |     |        |      |
    | unsupported     |         |      |        |     |        |      |
    | options         |         |      |        |     |        |      |
    +-----------------+---------+------+--------+-----+--------+------+
    | Include length  | MUST-68 |  X   |        |     |        |      |
    | for all options |         |      |        |     |        |      |
    | except EOL+NOP  |         |      |        |     |        |      |
    +-----------------+---------+------+--------+-----+--------+------+
    | Cope with       | MUST-7  |  X   |        |     |        |      |
    | illegal option  |         |      |        |     |        |      |
    | length          |         |      |        |     |        |      |
    +-----------------+---------+------+--------+-----+--------+------+
    | Process options | MUST-64 |  X   |        |     |        |      |
    | regardless of   |         |      |        |     |        |      |
    | word alignment  |         |      |        |     |        |      |
    +-----------------+---------+------+--------+-----+--------+------+
    | Implement       | MUST-14 |  X   |        |     |        |      |
    | sending &       |         |      |        |     |        |      |
    | receiving MSS   |         |      |        |     |        |      |
    | Option          |         |      |        |     |        |      |
    +-----------------+---------+------+--------+-----+--------+------+
    | IPv4 Send MSS   | SHLD-5  |      |   X    |     |        |      |
    | Option unless   |         |      |        |     |        |      |
    | 536             |         |      |        |     |        |      |
    +-----------------+---------+------+--------+-----+--------+------+
    | IPv6 Send MSS   | SHLD-5  |      |   X    |     |        |      |
    | Option unless   |         |      |        |     |        |      |
    | 1220            |         |      |        |     |        |      |
    +-----------------+---------+------+--------+-----+--------+------+
    | Send MSS Option | MAY-3   |      |        |  X  |        |      |
    | always          |         |      |        |     |        |      |
    +-----------------+---------+------+--------+-----+--------+------+
    | IPv4 Send-MSS   | MUST-15 |  X   |        |     |        |      |
    | default is 536  |         |      |        |     |        |      |
    +-----------------+---------+------+--------+-----+--------+------+
    | IPv6 Send-MSS   | MUST-15 |  X   |        |     |        |      |
    | default is 1220 |         |      |        |     |        |      |
    +-----------------+---------+------+--------+-----+--------+------+
    | Calculate       | MUST-16 |  X   |        |     |        |      |
    | effective send  |         |      |        |     |        |      |
    | seg size        |         |      |        |     |        |      |
    +-----------------+---------+------+--------+-----+--------+------+
    | MSS accounts    | SHLD-6  |      |   X    |     |        |      |
    | for varying MTU |         |      |        |     |        |      |
    +-----------------+---------+------+--------+-----+--------+------+
    | MSS not sent on | MUST-65 |      |        |     |        |  X   |
    | non-SYN         |         |      |        |     |        |      |
    | segments        |         |      |        |     |        |      |
    +-----------------+---------+------+--------+-----+--------+------+
    | MSS value based | MUST-67 |  X   |        |     |        |      |
    | on MMS_R        |         |      |        |     |        |      |
    +-----------------+---------+------+--------+-----+--------+------+
    | Pad with zero   | MUST-69 |  X   |        |     |        |      |
    +=================+=========+======+========+=====+========+======+
    | TCP Checksums                                                   |
    +=================+=========+======+========+=====+========+======+
    | Sender compute  | MUST-2  |  X   |        |     |        |      |
    | checksum        |         |      |        |     |        |      |
    +-----------------+---------+------+--------+-----+--------+------+
    | Receiver check  | MUST-3  |  X   |        |     |        |      |
    | checksum        |         |      |        |     |        |      |
    +=================+=========+======+========+=====+========+======+
    | ISN Selection                                                   |
    +=================+=========+======+========+=====+========+======+
    | Include a       | MUST-8  |  X   |        |     |        |      |
    | clock-driven    |         |      |        |     |        |      |
    | ISN generator   |         |      |        |     |        |      |
    | component       |         |      |        |     |        |      |
    +-----------------+---------+------+--------+-----+--------+------+
    | Secure ISN      | SHLD-1  |      |   X    |     |        |      |
    | generator with  |         |      |        |     |        |      |
    | a PRF component |         |      |        |     |        |      |
    +-----------------+---------+------+--------+-----+--------+------+
    | PRF computable  | MUST-9  |      |        |     |        |  X   |
    | from outside    |         |      |        |     |        |      |
    | the host        |         |      |        |     |        |      |
    +=================+=========+======+========+=====+========+======+
    | Opening Connections                                             |
    +=================+=========+======+========+=====+========+======+
    | Support         | MUST-10 |  X   |        |     |        |      |
    | simultaneous    |         |      |        |     |        |      |
    | open attempts   |         |      |        |     |        |      |
    +-----------------+---------+------+--------+-----+--------+------+
    | SYN-RECEIVED    | MUST-11 |  X   |        |     |        |      |
    | remembers last  |         |      |        |     |        |      |
    | state           |         |      |        |     |        |      |
    +-----------------+---------+------+--------+-----+--------+------+
    | Passive OPEN    | MUST-41 |      |        |     |        |  X   |
    | call interfere  |         |      |        |     |        |      |
    | with others     |         |      |        |     |        |      |
    +-----------------+---------+------+--------+-----+--------+------+
    | Function:       | MUST-42 |  X   |        |     |        |      |
    | simultaneously  |         |      |        |     |        |      |
    | LISTENs for     |         |      |        |     |        |      |
    | same port       |         |      |        |     |        |      |
    +-----------------+---------+------+--------+-----+--------+------+
    | Ask IP for src  | MUST-44 |  X   |        |     |        |      |
    | address for SYN |         |      |        |     |        |      |
    | if necessary    |         |      |        |     |        |      |
    +-----------------+---------+------+--------+-----+--------+------+
    | *  Otherwise,   | MUST-45 |  X   |        |     |        |      |
    |    use local    |         |      |        |     |        |      |
    |    addr of      |         |      |        |     |        |      |
    |    connection   |         |      |        |     |        |      |
    +-----------------+---------+------+--------+-----+--------+------+
    | OPEN to         | MUST-46 |      |        |     |        |  X   |
    | broadcast/      |         |      |        |     |        |      |
    | multicast IP    |         |      |        |     |        |      |
    | address         |         |      |        |     |        |      |
    +-----------------+---------+------+--------+-----+--------+------+
    | Silently        | MUST-57 |  X   |        |     |        |      |
    | discard seg to  |         |      |        |     |        |      |
    | bcast/mcast     |         |      |        |     |        |      |
    | addr            |         |      |        |     |        |      |
    +=================+=========+======+========+=====+========+======+
    | Closing Connections                                             |
    +=================+=========+======+========+=====+========+======+
    | RST can contain | SHLD-2  |      |   X    |     |        |      |
    | data            |         |      |        |     |        |      |
    +-----------------+---------+------+--------+-----+--------+------+
    | Inform          | MUST-12 |  X   |        |     |        |      |
    | application of  |         |      |        |     |        |      |
    | aborted conn    |         |      |        |     |        |      |
    +-----------------+---------+------+--------+-----+--------+------+
    | Half-duplex     | MAY-1   |      |        |  X  |        |      |
    | close           |         |      |        |     |        |      |
    | connections     |         |      |        |     |        |      |
    +-----------------+---------+------+--------+-----+--------+------+
    | *  Send RST to  | SHLD-3  |      |   X    |     |        |      |
    |    indicate     |         |      |        |     |        |      |
    |    data lost    |         |      |        |     |        |      |
    +-----------------+---------+------+--------+-----+--------+------+
    | In TIME-WAIT    | MUST-13 |  X   |        |     |        |      |
    | state for 2MSL  |         |      |        |     |        |      |
    | seconds         |         |      |        |     |        |      |
    +-----------------+---------+------+--------+-----+--------+------+
    | *  Accept SYN   | MAY-2   |      |        |  X  |        |      |
    |    from TIME-   |         |      |        |     |        |      |
    |    WAIT state   |         |      |        |     |        |      |
    +-----------------+---------+------+--------+-----+--------+------+
    | *  Use          | SHLD-4  |      |   X    |     |        |      |
    |    Timestamps   |         |      |        |     |        |      |
    |    to reduce    |         |      |        |     |        |      |
    |    TIME-WAIT    |         |      |        |     |        |      |
    +=================+=========+======+========+=====+========+======+
    | Retransmissions                                                 |
    +=================+=========+======+========+=====+========+======+
    | Implement       | MUST-19 |  X   |        |     |        |      |
    | exponential     |         |      |        |     |        |      |
    | backoff, slow   |         |      |        |     |        |      |
    | start, and      |         |      |        |     |        |      |
    | congestion      |         |      |        |     |        |      |
    | avoidance       |         |      |        |     |        |      |
    +-----------------+---------+------+--------+-----+--------+------+
    | Retransmit with | MAY-4   |      |        |  X  |        |      |
    | same IP         |         |      |        |     |        |      |
    | identity        |         |      |        |     |        |      |
    +-----------------+---------+------+--------+-----+--------+------+
    | Karn's          | MUST-18 |  X   |        |     |        |      |
    | algorithm       |         |      |        |     |        |      |
    +=================+=========+======+========+=====+========+======+
    | Generating ACKs                                                 |
    +=================+=========+======+========+=====+========+======+
    | Aggregate       | MUST-58 |  X   |        |     |        |      |
    | whenever        |         |      |        |     |        |      |
    | possible        |         |      |        |     |        |      |
    +-----------------+---------+------+--------+-----+--------+------+
    | Queue out-of-   | SHLD-31 |      |   X    |     |        |      |
    | order segments  |         |      |        |     |        |      |
    +-----------------+---------+------+--------+-----+--------+------+
    | Process all Q'd | MUST-59 |  X   |        |     |        |      |
    | before send ACK |         |      |        |     |        |      |
    +-----------------+---------+------+--------+-----+--------+------+
    | Send ACK for    | MAY-13  |      |        |  X  |        |      |
    | out-of-order    |         |      |        |     |        |      |
    | segment         |         |      |        |     |        |      |
    +-----------------+---------+------+--------+-----+--------+------+
    | Delayed ACKs    | SHLD-18 |      |   X    |     |        |      |
    +-----------------+---------+------+--------+-----+--------+------+
    | *  Delay < 0.5  | MUST-40 |  X   |        |     |        |      |
    |    seconds      |         |      |        |     |        |      |
    +-----------------+---------+------+--------+-----+--------+------+
    | *  Every 2nd    | SHLD-19 |      |   X    |     |        |      |
    |    full-sized   |         |      |        |     |        |      |
    |    segment or   |         |      |        |     |        |      |
    |    2*RMSS ACK'd |         |      |        |     |        |      |
    +-----------------+---------+------+--------+-----+--------+------+
    | Receiver SWS-   | MUST-39 |  X   |        |     |        |      |
    | Avoidance       |         |      |        |     |        |      |
    | Algorithm       |         |      |        |     |        |      |
    +=================+=========+======+========+=====+========+======+
    | Sending Data                                                    |
    +=================+=========+======+========+=====+========+======+
    | Configurable    | MUST-49 |  X   |        |     |        |      |
    | TTL             |         |      |        |     |        |      |
    +-----------------+---------+------+--------+-----+--------+------+
    | Sender SWS-     | MUST-38 |  X   |        |     |        |      |
    | Avoidance       |         |      |        |     |        |      |
    | Algorithm       |         |      |        |     |        |      |
    +-----------------+---------+------+--------+-----+--------+------+
    | Nagle algorithm | SHLD-7  |      |   X    |     |        |      |
    +-----------------+---------+------+--------+-----+--------+------+
    | *  Application  | MUST-17 |  X   |        |     |        |      |
    |    can disable  |         |      |        |     |        |      |
    |    Nagle        |         |      |        |     |        |      |
    |    algorithm    |         |      |        |     |        |      |
    +=================+=========+======+========+=====+========+======+
    | Connection Failures                                             |
    +=================+=========+======+========+=====+========+======+
    | Negative advice | MUST-20 |  X   |        |     |        |      |
    | to IP on R1     |         |      |        |     |        |      |
    | retransmissions |         |      |        |     |        |      |
    +-----------------+---------+------+--------+-----+--------+------+
    | Close           | MUST-20 |  X   |        |     |        |      |
    | connection on   |         |      |        |     |        |      |
    | R2              |         |      |        |     |        |      |
    | retransmissions |         |      |        |     |        |      |
    +-----------------+---------+------+--------+-----+--------+------+
    | ALP^1 can set   | MUST-21 |  X   |        |     |        |      |
    | R2              |         |      |        |     |        |      |
    +-----------------+---------+------+--------+-----+--------+------+
    | Inform ALP of   | SHLD-9  |      |   X    |     |        |      |
    | R1<=retxs<R2    |         |      |        |     |        |      |
    +-----------------+---------+------+--------+-----+--------+------+
    | Recommended     | SHLD-10 |      |   X    |     |        |      |
    | value for R1    |         |      |        |     |        |      |
    +-----------------+---------+------+--------+-----+--------+------+
    | Recommended     | SHLD-11 |      |   X    |     |        |      |
    | value for R2    |         |      |        |     |        |      |
    +-----------------+---------+------+--------+-----+--------+------+
    | Same mechanism  | MUST-22 |  X   |        |     |        |      |
    | for SYNs        |         |      |        |     |        |      |
    +-----------------+---------+------+--------+-----+--------+------+
    | *  R2 at least  | MUST-23 |  X   |        |     |        |      |
    |    3 minutes    |         |      |        |     |        |      |
    |    for SYN      |         |      |        |     |        |      |
    +=================+=========+======+========+=====+========+======+
    | Send Keep-alive Packets                                         |
    +=================+=========+======+========+=====+========+======+
    | Send Keep-alive | MAY-5   |      |   X    |     |        |      |
    | Packets:        |         |      |        |     |        |      |
    +-----------------+---------+------+--------+-----+--------+------+
    | *  Application  | MUST-24 |  X   |        |     |        |      |
    |    can request  |         |      |        |     |        |      |
    +-----------------+---------+------+--------+-----+--------+------+
    | *  Default is   | MUST-25 |  X   |        |     |        |      |
    |    "off"        |         |      |        |     |        |      |
    +-----------------+---------+------+--------+-----+--------+------+
    | *  Only send if | MUST-26 |  X   |        |     |        |      |
    |    idle for     |         |      |        |     |        |      |
    |    interval     |         |      |        |     |        |      |
    +-----------------+---------+------+--------+-----+--------+------+
    | *  Interval     | MUST-27 |  X   |        |     |        |      |
    |    configurable |         |      |        |     |        |      |
    +-----------------+---------+------+--------+-----+--------+------+
    | *  Default at   | MUST-28 |  X   |        |     |        |      |
    |    least 2 hrs. |         |      |        |     |        |      |
    +-----------------+---------+------+--------+-----+--------+------+
    | *  Tolerant of  | MUST-29 |  X   |        |     |        |      |
    |    lost ACKs    |         |      |        |     |        |      |
    +-----------------+---------+------+--------+-----+--------+------+
    | *  Send with no | SHLD-12 |      |   X    |     |        |      |
    |    data         |         |      |        |     |        |      |
    +-----------------+---------+------+--------+-----+--------+------+
    | *  Configurable | MAY-6   |      |        |  X  |        |      |
    |    to send      |         |      |        |     |        |      |
    |    garbage      |         |      |        |     |        |      |
    |    octet        |         |      |        |     |        |      |
    +=================+=========+======+========+=====+========+======+
    | IP Options                                                      |
    +=================+=========+======+========+=====+========+======+
    | Ignore options  | MUST-50 |  X   |        |     |        |      |
    | TCP doesn't     |         |      |        |     |        |      |
    | understand      |         |      |        |     |        |      |
    +-----------------+---------+------+--------+-----+--------+------+
    | Timestamp       | MAY-10  |      |   X    |     |        |      |
    | support         |         |      |        |     |        |      |
    +-----------------+---------+------+--------+-----+--------+------+
    | Record Route    | MAY-11  |      |   X    |     |        |      |
    | support         |         |      |        |     |        |      |
    +-----------------+---------+------+--------+-----+--------+------+
    | Source Route:   |         |      |        |     |        |      |
    +-----------------+---------+------+--------+-----+--------+------+
    | *  ALP^1 can    | MUST-51 |  X   |        |     |        |      |
    |    specify      |         |      |        |     |        |      |
    +-----------------+---------+------+--------+-----+--------+------+
    | *     Overrides | MUST-52 |  X   |        |     |        |      |
    |       src route |         |      |        |     |        |      |
    |       in        |         |      |        |     |        |      |
    |       datagram  |         |      |        |     |        |      |
    +-----------------+---------+------+--------+-----+--------+------+
    | *  Build return | MUST-53 |  X   |        |     |        |      |
    |    route from   |         |      |        |     |        |      |
    |    src route    |         |      |        |     |        |      |
    +-----------------+---------+------+--------+-----+--------+------+
    | *  Later src    | SHLD-24 |      |   X    |     |        |      |
    |    route        |         |      |        |     |        |      |
    |    overrides    |         |      |        |     |        |      |
    +=================+=========+======+========+=====+========+======+
    | Receiving ICMP Messages from IP                                 |
    +=================+=========+======+========+=====+========+======+
    | Receiving ICMP  | MUST-54 |  X   |        |     |        |      |
    | messages from   |         |      |        |     |        |      |
    | IP              |         |      |        |     |        |      |
    +-----------------+---------+------+--------+-----+--------+------+
    | *  Dest Unreach | SHLD-25 |  X   |        |     |        |      |
    |    (0,1,5) =>   |         |      |        |     |        |      |
    |    inform ALP   |         |      |        |     |        |      |
    +-----------------+---------+------+--------+-----+--------+------+
    | *  Abort on     | MUST-56 |      |        |     |        |  X   |
    |    Dest Unreach |         |      |        |     |        |      |
    |    (0,1,5)      |         |      |        |     |        |      |
    +-----------------+---------+------+--------+-----+--------+------+
    | *  Dest Unreach | SHLD-26 |      |   X    |     |        |      |
    |    (2-4) =>     |         |      |        |     |        |      |
    |    abort conn   |         |      |        |     |        |      |
    +-----------------+---------+------+--------+-----+--------+------+
    | *  Source       | MUST-55 |  X   |        |     |        |      |
    |    Quench =>    |         |      |        |     |        |      |
    |    silent       |         |      |        |     |        |      |
    |    discard      |         |      |        |     |        |      |
    +-----------------+---------+------+--------+-----+--------+------+
    | *  Abort on     | MUST-56 |      |        |     |        |  X   |
    |    Time         |         |      |        |     |        |      |
    |    Exceeded     |         |      |        |     |        |      |
    +-----------------+---------+------+--------+-----+--------+------+
    | *  Abort on     | MUST-56 |      |        |     |        |  X   |
    |    Param        |         |      |        |     |        |      |
    |    Problem      |         |      |        |     |        |      |
    +=================+=========+======+========+=====+========+======+
    | Address Validation                                              |
    +=================+=========+======+========+=====+========+======+
    | Reject OPEN     | MUST-46 |  X   |        |     |        |      |
    | call to invalid |         |      |        |     |        |      |
    | IP address      |         |      |        |     |        |      |
    +-----------------+---------+------+--------+-----+--------+------+
    | Reject SYN from | MUST-63 |  X   |        |     |        |      |
    | invalid IP      |         |      |        |     |        |      |
    | address         |         |      |        |     |        |      |
    +-----------------+---------+------+--------+-----+--------+------+
    | Silently        | MUST-57 |  X   |        |     |        |      |
    | discard SYN to  |         |      |        |     |        |      |
    | bcast/mcast     |         |      |        |     |        |      |
    | addr            |         |      |        |     |        |      |
    +=================+=========+======+========+=====+========+======+
    | TCP/ALP Interface Services                                      |
    +=================+=========+======+========+=====+========+======+
    | Error Report    | MUST-47 |  X   |        |     |        |      |
    | mechanism       |         |      |        |     |        |      |
    +-----------------+---------+------+--------+-----+--------+------+
    | ALP can disable | SHLD-20 |      |   X    |     |        |      |
    | Error Report    |         |      |        |     |        |      |
    | Routine         |         |      |        |     |        |      |
    +-----------------+---------+------+--------+-----+--------+------+
    | ALP can specify | MUST-48 |  X   |        |     |        |      |
    | Diffserv field  |         |      |        |     |        |      |
    | for sending     |         |      |        |     |        |      |
    +-----------------+---------+------+--------+-----+--------+------+
    | *  Passed       | SHLD-22 |      |   X    |     |        |      |
    |    unchanged to |         |      |        |     |        |      |
    |    IP           |         |      |        |     |        |      |
    +-----------------+---------+------+--------+-----+--------+------+
    | ALP can change  | SHLD-21 |      |   X    |     |        |      |
    | Diffserv field  |         |      |        |     |        |      |
    | during          |         |      |        |     |        |      |
    | connection      |         |      |        |     |        |      |
    +-----------------+---------+------+--------+-----+--------+------+
    | ALP generally   | SHLD-23 |      |        |     |   X    |      |
    | changing        |         |      |        |     |        |      |
    | Diffserv during |         |      |        |     |        |      |
    | conn.           |         |      |        |     |        |      |
    +-----------------+---------+------+--------+-----+--------+------+
    | Pass received   | MAY-9   |      |        |  X  |        |      |
    | Diffserv field  |         |      |        |     |        |      |
    | up to ALP       |         |      |        |     |        |      |
    +-----------------+---------+------+--------+-----+--------+------+
    | FLUSH call      | MAY-14  |      |        |  X  |        |      |
    +-----------------+---------+------+--------+-----+--------+------+
    | Optional local  | MUST-43 |  X   |        |     |        |      |
    | IP addr param   |         |      |        |     |        |      |
    | in OPEN         |         |      |        |     |        |      |
    +=================+=========+======+========+=====+========+======+
    | RFC 5961 Support                                                |
    +=================+=========+======+========+=====+========+======+
    | Implement data  | MAY-12  |      |        |  X  |        |      |
    | injection       |         |      |        |     |        |      |
    | protection      |         |      |        |     |        |      |
    +=================+=========+======+========+=====+========+======+
    | Explicit Congestion Notification                                |
    +=================+=========+======+========+=====+========+======+
    | Support ECN     | SHLD-8  |      |   X    |     |        |      |
    +=================+=========+======+========+=====+========+======+
    | Alternative Congestion Control                                  |
    +=================+=========+======+========+=====+========+======+
    | Implement       | MAY-18  |      |        |  X  |        |      |
    | alternative     |         |      |        |     |        |      |
    | conformant      |         |      |        |     |        |      |
    | algorithm(s)    |         |      |        |     |        |      |
    +-----------------+---------+------+--------+-----+--------+------+
                     Table 8: TCP Requirements Summary
   FOOTNOTES: (1) "ALP" means Application-Layer Program.
Acknowledgments
   This document is largely a revision of RFC 793, of which Jon Postel
   was the editor.  Due to his excellent work, it was able to last for
   three decades before we felt the need to revise it.
   Andre Oppermann was a contributor and helped to edit the first
   revision of this document.
   We are thankful for the assistance of the IETF TCPM working group
   chairs over the course of work on this document:
   Michael Scharf
   Yoshifumi Nishida
   Pasi Sarolahti
   Michael Tüxen
   During the discussions of this work on the TCPM mailing list, in
   working group meetings, and via area reviews, helpful comments,
   critiques, and reviews were received from (listed alphabetically by
   last name): Praveen Balasubramanian, David Borman, Mohamed Boucadair,
   Bob Briscoe, Neal Cardwell, Yuchung Cheng, Martin Duke, Francis
   Dupont, Ted Faber, Gorry Fairhurst, Fernando Gont, Rodney Grimes, Yi
   Huang, Rahul Jadhav, Markku Kojo, Mike Kosek, Juhamatti Kuusisaari,
   Kevin Lahey, Kevin Mason, Matt Mathis, Stephen McQuistin, Jonathan
   Morton, Matt Olson, Tommy Pauly, Tom Petch, Hagen Paul Pfeifer, Kyle
   Rose, Anthony Sabatini, Michael Scharf, Greg Skinner, Joe Touch,
   Michael Tüxen, Reji Varghese, Bernie Volz, Tim Wicinski, Lloyd Wood,
   and Alex Zimmermann.
   Joe Touch provided additional help in clarifying the description of
   segment size parameters and PMTUD/PLPMTUD recommendations.  Markku
   Kojo helped put together the text in the section on TCP Congestion
   Control.
   This document includes content from errata that were reported by
   (listed chronologically): Yin Shuming, Bob Braden, Morris M. Keesan,
   Pei-chun Cheng, Constantin Hagemeier, Vishwas Manral, Mykyta
   Yevstifeyev, EungJun Yi, Botong Huang, Charles Deng, Merlin Buge.
Author's Address
   Wesley M. Eddy (editor)
   MTI Systems
   United States of America
   Email: wes@mti-systems.com