| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- package protocol
- import (
- "fmt"
- )
- // A PacketNumber in QUIC
- type PacketNumber uint64
- // PacketNumberLen is the length of the packet number in bytes
- type PacketNumberLen uint8
- const (
- // PacketNumberLenInvalid is the default value and not a valid length for a packet number
- PacketNumberLenInvalid PacketNumberLen = 0
- // PacketNumberLen1 is a packet number length of 1 byte
- PacketNumberLen1 PacketNumberLen = 1
- // PacketNumberLen2 is a packet number length of 2 bytes
- PacketNumberLen2 PacketNumberLen = 2
- // PacketNumberLen4 is a packet number length of 4 bytes
- PacketNumberLen4 PacketNumberLen = 4
- // PacketNumberLen6 is a packet number length of 6 bytes
- PacketNumberLen6 PacketNumberLen = 6
- )
- // The PacketType is the Long Header Type (only used for the IETF draft header format)
- type PacketType uint8
- const (
- // PacketTypeInitial is the packet type of an Initial packet
- PacketTypeInitial PacketType = 0x7f
- // PacketTypeRetry is the packet type of a Retry packet
- PacketTypeRetry PacketType = 0x7e
- // PacketTypeHandshake is the packet type of a Handshake packet
- PacketTypeHandshake PacketType = 0x7d
- // PacketType0RTT is the packet type of a 0-RTT packet
- PacketType0RTT PacketType = 0x7c
- )
- func (t PacketType) String() string {
- switch t {
- case PacketTypeInitial:
- return "Initial"
- case PacketTypeRetry:
- return "Retry"
- case PacketTypeHandshake:
- return "Handshake"
- case PacketType0RTT:
- return "0-RTT Protected"
- default:
- return fmt.Sprintf("unknown packet type: %d", t)
- }
- }
- // A ByteCount in QUIC
- type ByteCount uint64
- // MaxByteCount is the maximum value of a ByteCount
- const MaxByteCount = ByteCount(1<<62 - 1)
- // An ApplicationErrorCode is an application-defined error code.
- type ApplicationErrorCode uint16
- // MaxReceivePacketSize maximum packet size of any QUIC packet, based on
- // ethernet's max size, minus the IP and UDP headers. IPv6 has a 40 byte header,
- // UDP adds an additional 8 bytes. This is a total overhead of 48 bytes.
- // Ethernet's max packet size is 1500 bytes, 1500 - 48 = 1452.
- const MaxReceivePacketSize ByteCount = 1452
- // DefaultTCPMSS is the default maximum packet size used in the Linux TCP implementation.
- // Used in QUIC for congestion window computations in bytes.
- const DefaultTCPMSS ByteCount = 1460
- // MinClientHelloSize is the minimum size the server expects an inchoate CHLO to have (in gQUIC)
- const MinClientHelloSize = 1024
- // MinInitialPacketSize is the minimum size an Initial packet (in IETF QUIC) is required to have.
- const MinInitialPacketSize = 1200
- // MaxClientHellos is the maximum number of times we'll send a client hello
- // The value 3 accounts for:
- // * one failure due to an incorrect or missing source-address token
- // * one failure due the server's certificate chain being unavailable and the server being unwilling to send it without a valid source-address token
- const MaxClientHellos = 3
- // ConnectionIDLenGQUIC is the length of the source Connection ID used on gQUIC QUIC packets.
- const ConnectionIDLenGQUIC = 8
- // MinConnectionIDLenInitial is the minimum length of the destination connection ID on an Initial packet.
- const MinConnectionIDLenInitial = 8
|