package
0.0.0-20230519120119-78d1183fd0db
Repository: https://github.com/vela-ssoc/backend-common.git
Documentation: pkg.go.dev
# README
SPDY
A multiplexed stream library.
尚未实现 流量控制
、stream 并发数控制
、stream 读写超时控制
未来发展
spdy 是一种过渡性的协议。数据分帧、双向流、单向流这些概念已经在 QUIC
协议中被很好的定义规范。QUIC
基于 udp
协议,能够实现流式传输、拥塞控制、双向流、单向流等功能。随着 QUIC
的发展和普及,spdy
这一块也将会被 QUIC
代替,最近 Go 官方开发团队已经对 QUIC
实现发起了 提案,期待官方正式发布。
帧格式
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Flag | Stream ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Stream ID | Data Length | Data |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Data |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Flag: uint8
Stream ID: uint32
Data Length: uint16
Data: 变长,由 Data Length
决定
SYN - 新建连接
SYN 为变长帧,代表新建虚拟连接
FIN - 结束连接
FIN 为虚拟连接的最后一帧,收到 FIN 则代表对方已经断开了虚拟连接,
FIN 帧为定长帧(7 bytes),只能包含 Flag
Stream ID
Data Length
信息,且 Data Length
填充为 0