1. build
# 下载代码
git clone --recursive https://github.com/cloudflare/quiche (安装包已执行完此操作)
# 安装依赖
yum install -y rust cargo go libunwind-devel libev-devel libasan uthash-devel
# 配置go环境
go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.cn,https://goproxy.io,direct
# 配置rust国内源
vi .cargo/config
[source.crates-io]
registry = "https://github.com/rust-lang/crates.io-index"
replace-with = 'ustc'
[source.ustc]
registry = "git://mirrors.ustc.edu.cn/crates.io-index"
# build c example
cd examples
make
# build (可以不编译)
cargo build --examples
cargo test
2. demo
# 设置环境变量
export SSLKEYLOGFILE=./ssl.log
echo $SSLKEYLOGFILE
# 启动server (c example)
./server 127.0.0.1 4567
# 启动client (c example)
./client 127.0.0.1 4567
2.1 server输出
version negotiation
sent 55 bytes
recv would block
stateless retry
sent 93 bytes
recv would block
new connection
quiche: 3bd8856ac3f9f43995ffeefde088b7d5 rx pkt Initial version=1 dcid=3bd8856ac3f9f43995ffeefde088b7d5 scid=619cfb4161d40bd440ebeadb2fcac2b2 token=71756963686502008ca47f000001000000000000000002391c6c156e444a5651027f1d5c92b0 len=289 pn=2
quiche: 3bd8856ac3f9f43995ffeefde088b7d5 rx frm CRYPTO off=0 len=268
quiche::tls: checking peer ALPN Ok("hq-interop") against Ok("hq-interop")
quiche::tls: 3bd8856ac3f9f43995ffeefde088b7d5 write message lvl=Initial len=90
quiche::tls: 3bd8856ac3f9f43995ffeefde088b7d5 set write secret lvl=Handshake
quiche::tls: 3bd8856ac3f9f43995ffeefde088b7d5 write message lvl=Handshake len=1183
quiche::tls: 3bd8856ac3f9f43995ffeefde088b7d5 set write secret lvl=OneRTT
quiche::tls: 3bd8856ac3f9f43995ffeefde088b7d5 set read secret lvl=Handshake
quiche: 3bd8856ac3f9f43995ffeefde088b7d5 dropped invalid packet
recv 1200 bytes
recv would block
quiche: 3bd8856ac3f9f43995ffeefde088b7d5 tx pkt Initial version=1 dcid=619cfb4161d40bd440ebeadb2fcac2b2 scid=3bd8856ac3f9f43995ffeefde088b7d5 len=100 pn=0
quiche: 3bd8856ac3f9f43995ffeefde088b7d5 tx frm ACK delay=1241 blocks=[2..2]
quiche: 3bd8856ac3f9f43995ffeefde088b7d5 tx frm CRYPTO off=0 len=90
quiche::recovery: 3bd8856ac3f9f43995ffeefde088b7d5 timer=998.757062ms latest_rtt=0ns srtt=None min_rtt=0ns rttvar=166.5ms loss_time=[None, None, None] loss_probes=[0, 0, 0] cwnd=13500 ssthresh=18446744073709551615 bytes_in_flight=159 app_limited=true congestion_recovery_start_time=None delivered=0 delivered_time=302.632µs recent_delivered_packet_sent_time=303.736µs app_limited_at_pkt=0 pacing_rate=0 last_packet_scheduled_time=Some(Instant { tv_sec: 150459, tv_nsec: 841583849 }) hystart=window_end=None last_round_min_rtt=None current_round_min_rtt=None rtt_sample_count=0 lss_start_time=None
quiche: 3bd8856ac3f9f43995ffeefde088b7d5 tx pkt Handshake version=1 dcid=619cfb4161d40bd440ebeadb2fcac2b2 scid=3bd8856ac3f9f43995ffeefde088b7d5 len=983 pn=0
quiche: 3bd8856ac3f9f43995ffeefde088b7d5 tx frm CRYPTO off=0 len=979
quiche::recovery: 3bd8856ac3f9f43995ffeefde088b7d5 timer=998.52249ms latest_rtt=0ns srtt=None min_rtt=0ns rttvar=166.5ms loss_time=[None, None, None] loss_probes=[0, 0, 0] cwnd=13500 ssthresh=18446744073709551615 bytes_in_flight=1200 app_limited=true congestion_recovery_start_time=None delivered=0 delivered_time=490.449µs recent_delivered_packet_sent_time=491.145µs app_limited_at_pkt=0 pacing_rate=0 last_packet_scheduled_time=Some(Instant { tv_sec: 150459, tv_nsec: 841945693 }) hystart=window_end=None last_round_min_rtt=None current_round_min_rtt=None rtt_sample_count=0 lss_start_time=None
sent 1200 bytes
quiche: 3bd8856ac3f9f43995ffeefde088b7d5 tx pkt Handshake version=1 dcid=619cfb4161d40bd440ebeadb2fcac2b2 scid=3bd8856ac3f9f43995ffeefde088b7d5 len=209 pn=1
quiche: 3bd8856ac3f9f43995ffeefde088b7d5 tx frm CRYPTO off=979 len=204
quiche::recovery: 3bd8856ac3f9f43995ffeefde088b7d5 timer=998.251055ms latest_rtt=0ns srtt=None min_rtt=0ns rttvar=166.5ms loss_time=[None, None, None] loss_probes=[0, 0, 0] cwnd=13500 ssthresh=18446744073709551615 bytes_in_flight=1467 app_limited=true congestion_recovery_start_time=None delivered=0 delivered_time=783.089µs recent_delivered_packet_sent_time=783.842µs app_limited_at_pkt=0 pacing_rate=0 last_packet_scheduled_time=Some(Instant { tv_sec: 150459, tv_nsec: 842194507 }) hystart=window_end=None last_round_min_rtt=None current_round_min_rtt=None rtt_sample_count=0 lss_start_time=None
sent 267 bytes
done writing
quiche: 3bd8856ac3f9f43995ffeefde088b7d5 rx pkt Initial version=1 dcid=3bd8856ac3f9f43995ffeefde088b7d5 scid=619cfb4161d40bd440ebeadb2fcac2b2 token=71756963686502008ca47f000001000000000000000002391c6c156e444a5651027f1d5c92b0 len=23 pn=3
quiche: 3bd8856ac3f9f43995ffeefde088b7d5 rx frm ACK delay=786 blocks=[0..0]
quiche::recovery: 3bd8856ac3f9f43995ffeefde088b7d5 packet newly acked 0
quiche: 3bd8856ac3f9f43995ffeefde088b7d5 rx pkt Handshake version=1 dcid=3bd8856ac3f9f43995ffeefde088b7d5 scid=619cfb4161d40bd440ebeadb2fcac2b2 len=63 pn=0
quiche: 3bd8856ac3f9f43995ffeefde088b7d5 rx frm ACK delay=346 blocks=[0..1]
quiche::recovery: 3bd8856ac3f9f43995ffeefde088b7d5 packet newly acked 0
quiche::recovery: 3bd8856ac3f9f43995ffeefde088b7d5 packet newly acked 1
quiche: 3bd8856ac3f9f43995ffeefde088b7d5 rx frm CRYPTO off=0 len=36
quiche::tls: 3bd8856ac3f9f43995ffeefde088b7d5 set read secret lvl=OneRTT
quiche::tls: 3bd8856ac3f9f43995ffeefde088b7d5 write message lvl=OneRTT len=396
quiche: 3bd8856ac3f9f43995ffeefde088b7d5 connection established: proto=Ok("hq-interop") cipher=Some(AES128_GCM) curve=Some("X25519") sigalg=None resumed=false TransportParams { original_destination_connection_id: None, max_idle_timeout: 5000, stateless_reset_token: None, max_udp_payload_size: 1350, initial_max_data: 10000000, initial_max_stream_data_bidi_local: 1000000, initial_max_stream_data_bidi_remote: 0, initial_max_stream_data_uni: 1000000, initial_max_streams_bidi: 100, initial_max_streams_uni: 100, ack_delay_exponent: 3, max_ack_delay: 25, disable_active_migration: true, active_conn_id_limit: 2, initial_source_connection_id: Some(619cfb4161d40bd440ebeadb2fcac2b2), retry_source_connection_id: None, max_datagram_frame_size: None }
quiche: 3bd8856ac3f9f43995ffeefde088b7d5 dropped epoch 0 state
quiche: 3bd8856ac3f9f43995ffeefde088b7d5 rx pkt Short dcid=3bd8856ac3f9f43995ffeefde088b7d5 key_phase=false len=1126 pn=0
quiche: 3bd8856ac3f9f43995ffeefde088b7d5 rx frm STREAM id=4 off=0 len=18 fin=true
quiche: 3bd8856ac3f9f43995ffeefde088b7d5 rx frm PADDING len=1086
recv 1350 bytes
stream 4 is readable
recv would block
quiche: 3bd8856ac3f9f43995ffeefde088b7d5 tx pkt Handshake version=1 dcid=619cfb4161d40bd440ebeadb2fcac2b2 scid=3bd8856ac3f9f43995ffeefde088b7d5 len=6 pn=2
quiche: 3bd8856ac3f9f43995ffeefde088b7d5 tx frm ACK delay=234 blocks=[0..0]
quiche::recovery: 3bd8856ac3f9f43995ffeefde088b7d5 timer=none latest_rtt=7.341005ms srtt=Some(7.673759ms) min_rtt=7.341005ms rttvar=2.990558ms loss_time=[None, None, None] loss_probes=[0, 0, 0] cwnd=13500 ssthresh=18446744073709551615 bytes_in_flight=0 app_limited=true congestion_recovery_start_time=None delivered=1467 delivered_time=2.002096ms recent_delivered_packet_sent_time=9.954559ms app_limited_at_pkt=1467 pacing_rate=1759416 last_packet_scheduled_time=Some(Instant { tv_sec: 150459, tv_nsec: 851396253 }) hystart=window_end=None last_round_min_rtt=None current_round_min_rtt=None rtt_sample_count=0 lss_start_time=None
quiche: 3bd8856ac3f9f43995ffeefde088b7d5 tx pkt Short dcid=619cfb4161d40bd440ebeadb2fcac2b2 key_phase=false len=417 pn=0
quiche: 3bd8856ac3f9f43995ffeefde088b7d5 tx frm ACK delay=94 blocks=[0..0]
quiche: 3bd8856ac3f9f43995ffeefde088b7d5 tx frm HANDSHAKE_DONE
quiche: 3bd8856ac3f9f43995ffeefde088b7d5 tx frm CRYPTO off=0 len=396
quiche: 3bd8856ac3f9f43995ffeefde088b7d5 tx frm STREAM id=4 off=0 len=5 fin=true
quiche::recovery: 3bd8856ac3f9f43995ffeefde088b7d5 timer=44.445309ms latest_rtt=7.341005ms srtt=Some(7.673759ms) min_rtt=7.341005ms rttvar=2.990558ms loss_time=[None, None, None] loss_probes=[0, 0, 0] cwnd=13500 ssthresh=18446744073709551615 bytes_in_flight=451 app_limited=true congestion_recovery_start_time=None delivered=1467 delivered_time=2.241884ms recent_delivered_packet_sent_time=10.194304ms app_limited_at_pkt=1467 pacing_rate=1759416 last_packet_scheduled_time=Some(Instant { tv_sec: 150459, tv_nsec: 851565568 }) hystart=window_end=Some(0) last_round_min_rtt=None current_round_min_rtt=None rtt_sample_count=0 lss_start_time=None
sent 515 bytes
done writing
quiche: 3bd8856ac3f9f43995ffeefde088b7d5 rx pkt Short dcid=3bd8856ac3f9f43995ffeefde088b7d5 key_phase=false len=21 pn=1
quiche: 3bd8856ac3f9f43995ffeefde088b7d5 rx frm APPLICATION_CLOSE err=0 reason=[]
quiche: 3bd8856ac3f9f43995ffeefde088b7d5 rx frm PADDING len=1
recv 38 bytes
recv would block
done writing
quiche: 3bd8856ac3f9f43995ffeefde088b7d5 draining timeout expired
timeout
done writing
connection closed, recv=5 sent=5 lost=0 rtt=7673759ns cwnd=13500
2.2 client输出
quiche::tls: 619cfb4161d40bd440ebeadb2fcac2b2 write message lvl=Initial len=268
quiche: 619cfb4161d40bd440ebeadb2fcac2b2 tx pkt Initial version=babababa dcid=02391c6c156e444a5651027f1d5c92b0 scid=619cfb4161d40bd440ebeadb2fcac2b2 len=272 pn=0
quiche: 619cfb4161d40bd440ebeadb2fcac2b2 tx frm CRYPTO off=0 len=268
quiche::recovery: 619cfb4161d40bd440ebeadb2fcac2b2 timer=998.72588ms latest_rtt=0ns srtt=None min_rtt=0ns rttvar=166.5ms loss_time=[None, None, None] loss_probes=[0, 0, 0] cwnd=13500 ssthresh=18446744073709551615 bytes_in_flight=331 app_limited=true congestion_recovery_start_time=None delivered=0 delivered_time=312.258µs recent_delivered_packet_sent_time=313.178µs app_limited_at_pkt=0 pacing_rate=0 last_packet_scheduled_time=Some(Instant { tv_sec: 150459, tv_nsec: 826962349 }) hystart=window_end=None last_round_min_rtt=None current_round_min_rtt=None rtt_sample_count=0 lss_start_time=None
sent 1200 bytes
done writing
quiche: 619cfb4161d40bd440ebeadb2fcac2b2 rx pkt VersionNegotiation version=0 dcid=619cfb4161d40bd440ebeadb2fcac2b2 scid=02391c6c156e444a5651027f1d5c92b0 versions=[1, ff00001d, ff00001c, ff00001b]
quiche: 619cfb4161d40bd440ebeadb2fcac2b2 dropped epoch 0 state
recv 55 bytes
recv would block
done reading
quiche::tls: 619cfb4161d40bd440ebeadb2fcac2b2 write message lvl=Initial len=268
quiche: 619cfb4161d40bd440ebeadb2fcac2b2 tx pkt Initial version=1 dcid=02391c6c156e444a5651027f1d5c92b0 scid=619cfb4161d40bd440ebeadb2fcac2b2 len=272 pn=1
quiche: 619cfb4161d40bd440ebeadb2fcac2b2 tx frm CRYPTO off=0 len=268
quiche::recovery: 619cfb4161d40bd440ebeadb2fcac2b2 timer=998.863496ms latest_rtt=0ns srtt=None min_rtt=0ns rttvar=166.5ms loss_time=[None, None, None] loss_probes=[0, 0, 0] cwnd=13500 ssthresh=18446744073709551615 bytes_in_flight=331 app_limited=true congestion_recovery_start_time=None delivered=0 delivered_time=2.328129ms recent_delivered_packet_sent_time=2.329016ms app_limited_at_pkt=0 pacing_rate=0 last_packet_scheduled_time=Some(Instant { tv_sec: 150459, tv_nsec: 829138993 }) hystart=window_end=None last_round_min_rtt=None current_round_min_rtt=None rtt_sample_count=0 lss_start_time=None
sent 1200 bytes
done writing
quiche: 619cfb4161d40bd440ebeadb2fcac2b2 rx pkt Retry version=1 dcid=619cfb4161d40bd440ebeadb2fcac2b2 scid=3bd8856ac3f9f43995ffeefde088b7d5 token=71756963686502008ca47f000001000000000000000002391c6c156e444a5651027f1d5c92b0
quiche: 619cfb4161d40bd440ebeadb2fcac2b2 dropped epoch 0 state
recv 93 bytes
recv would block
done reading
quiche::tls: 619cfb4161d40bd440ebeadb2fcac2b2 write message lvl=Initial len=268
quiche: 619cfb4161d40bd440ebeadb2fcac2b2 tx pkt Initial version=1 dcid=3bd8856ac3f9f43995ffeefde088b7d5 scid=619cfb4161d40bd440ebeadb2fcac2b2 token=71756963686502008ca47f000001000000000000000002391c6c156e444a5651027f1d5c92b0 len=272 pn=2
quiche: 619cfb4161d40bd440ebeadb2fcac2b2 tx frm CRYPTO off=0 len=268
quiche::recovery: 619cfb4161d40bd440ebeadb2fcac2b2 timer=998.895136ms latest_rtt=0ns srtt=None min_rtt=0ns rttvar=166.5ms loss_time=[None, None, None] loss_probes=[0, 0, 0] cwnd=13500 ssthresh=18446744073709551615 bytes_in_flight=369 app_limited=true congestion_recovery_start_time=None delivered=0 delivered_time=3.773824ms recent_delivered_packet_sent_time=3.774768ms app_limited_at_pkt=0 pacing_rate=0 last_packet_scheduled_time=Some(Instant { tv_sec: 150459, tv_nsec: 830616540 }) hystart=window_end=None last_round_min_rtt=None current_round_min_rtt=None rtt_sample_count=0 lss_start_time=None
sent 1200 bytes
done writing
quiche: 619cfb4161d40bd440ebeadb2fcac2b2 rx pkt Initial version=1 dcid=619cfb4161d40bd440ebeadb2fcac2b2 scid=3bd8856ac3f9f43995ffeefde088b7d5 token= len=117 pn=0
quiche: 619cfb4161d40bd440ebeadb2fcac2b2 rx frm ACK delay=1241 blocks=[2..2]
quiche::recovery: 619cfb4161d40bd440ebeadb2fcac2b2 packet newly acked 2
quiche: 619cfb4161d40bd440ebeadb2fcac2b2 rx frm CRYPTO off=0 len=90
quiche::tls: 619cfb4161d40bd440ebeadb2fcac2b2 set write secret lvl=Handshake
quiche::tls: 619cfb4161d40bd440ebeadb2fcac2b2 set read secret lvl=Handshake
quiche: 619cfb4161d40bd440ebeadb2fcac2b2 rx pkt Handshake version=1 dcid=619cfb4161d40bd440ebeadb2fcac2b2 scid=3bd8856ac3f9f43995ffeefde088b7d5 len=1000 pn=0
quiche: 619cfb4161d40bd440ebeadb2fcac2b2 rx frm CRYPTO off=0 len=979
recv 1200 bytes
quiche: 619cfb4161d40bd440ebeadb2fcac2b2 rx pkt Handshake version=1 dcid=619cfb4161d40bd440ebeadb2fcac2b2 scid=3bd8856ac3f9f43995ffeefde088b7d5 len=226 pn=1
quiche: 619cfb4161d40bd440ebeadb2fcac2b2 rx frm CRYPTO off=979 len=204
quiche::tls: 619cfb4161d40bd440ebeadb2fcac2b2 write message lvl=Handshake len=36
quiche::tls: 619cfb4161d40bd440ebeadb2fcac2b2 set write secret lvl=OneRTT
quiche::tls: 619cfb4161d40bd440ebeadb2fcac2b2 set read secret lvl=OneRTT
quiche: 619cfb4161d40bd440ebeadb2fcac2b2 connection established: proto=Ok("hq-interop") cipher=Some(AES128_GCM) curve=Some("X25519") sigalg=Some("rsa_pss_rsae_sha256") resumed=false TransportParams { original_destination_connection_id: Some(02391c6c156e444a5651027f1d5c92b0), max_idle_timeout: 5000, stateless_reset_token: None, max_udp_payload_size: 1350, initial_max_data: 10000000, initial_max_stream_data_bidi_local: 1000000, initial_max_stream_data_bidi_remote: 1000000, initial_max_stream_data_uni: 0, initial_max_streams_bidi: 100, initial_max_streams_uni: 0, ack_delay_exponent: 3, max_ack_delay: 25, disable_active_migration: false, active_conn_id_limit: 2, initial_source_connection_id: Some(3bd8856ac3f9f43995ffeefde088b7d5), retry_source_connection_id: Some(3bd8856ac3f9f43995ffeefde088b7d5), max_datagram_frame_size: None }
recv 267 bytes
recv would block
done reading
connection established: hq-interop
sent HTTP request
quiche: 619cfb4161d40bd440ebeadb2fcac2b2 tx pkt Initial version=1 dcid=3bd8856ac3f9f43995ffeefde088b7d5 scid=619cfb4161d40bd440ebeadb2fcac2b2 token=71756963686502008ca47f000001000000000000000002391c6c156e444a5651027f1d5c92b0 len=6 pn=3
quiche: 619cfb4161d40bd440ebeadb2fcac2b2 tx frm ACK delay=786 blocks=[0..0]
quiche::recovery: 619cfb4161d40bd440ebeadb2fcac2b2 timer=28.279991ms latest_rtt=11.557915ms srtt=Some(11.557915ms) min_rtt=11.557915ms rttvar=5.778957ms loss_time=[None, None, None] loss_probes=[0, 0, 0] cwnd=13500 ssthresh=18446744073709551615 bytes_in_flight=0 app_limited=true congestion_recovery_start_time=None delivered=369 delivered_time=6.417197ms recent_delivered_packet_sent_time=21.630006ms app_limited_at_pkt=369 pacing_rate=1168123 last_packet_scheduled_time=Some(Instant { tv_sec: 150459, tv_nsec: 848448659 }) hystart=window_end=None last_round_min_rtt=None current_round_min_rtt=None rtt_sample_count=0 lss_start_time=None
quiche: 619cfb4161d40bd440ebeadb2fcac2b2 tx pkt Handshake version=1 dcid=3bd8856ac3f9f43995ffeefde088b7d5 scid=619cfb4161d40bd440ebeadb2fcac2b2 len=46 pn=0
quiche: 619cfb4161d40bd440ebeadb2fcac2b2 tx frm ACK delay=346 blocks=[0..1]
quiche: 619cfb4161d40bd440ebeadb2fcac2b2 tx frm CRYPTO off=0 len=36
quiche::recovery: 619cfb4161d40bd440ebeadb2fcac2b2 timer=34.553486ms latest_rtt=11.557915ms srtt=Some(11.557915ms) min_rtt=11.557915ms rttvar=5.778957ms loss_time=[None, None, None] loss_probes=[0, 0, 0] cwnd=13500 ssthresh=18446744073709551615 bytes_in_flight=104 app_limited=true congestion_recovery_start_time=None delivered=369 delivered_time=6.583204ms recent_delivered_packet_sent_time=21.795987ms app_limited_at_pkt=369 pacing_rate=1168123 last_packet_scheduled_time=Some(Instant { tv_sec: 150459, tv_nsec: 848625395 }) hystart=window_end=None last_round_min_rtt=None current_round_min_rtt=None rtt_sample_count=0 lss_start_time=None
quiche: 619cfb4161d40bd440ebeadb2fcac2b2 dropped epoch 0 state
quiche: 619cfb4161d40bd440ebeadb2fcac2b2 tx pkt Short dcid=3bd8856ac3f9f43995ffeefde088b7d5 key_phase=false len=1109 pn=0
quiche: 619cfb4161d40bd440ebeadb2fcac2b2 tx frm STREAM id=4 off=0 len=18 fin=true
quiche: 619cfb4161d40bd440ebeadb2fcac2b2 tx frm PADDING len=1086
quiche::recovery: 619cfb4161d40bd440ebeadb2fcac2b2 timer=34.137202ms latest_rtt=11.557915ms srtt=Some(11.557915ms) min_rtt=11.557915ms rttvar=5.778957ms loss_time=[None, None, None] loss_probes=[0, 0, 0] cwnd=13500 ssthresh=18446744073709551615 bytes_in_flight=1247 app_limited=true congestion_recovery_start_time=None delivered=369 delivered_time=7.008072ms recent_delivered_packet_sent_time=22.220785ms app_limited_at_pkt=369 pacing_rate=1168123 last_packet_scheduled_time=Some(Instant { tv_sec: 150459, tv_nsec: 848828310 }) hystart=window_end=Some(0) last_round_min_rtt=None current_round_min_rtt=None rtt_sample_count=0 lss_start_time=None
sent 1350 bytes
done writing
quiche: 619cfb4161d40bd440ebeadb2fcac2b2 rx pkt Handshake version=1 dcid=619cfb4161d40bd440ebeadb2fcac2b2 scid=3bd8856ac3f9f43995ffeefde088b7d5 len=23 pn=2
quiche: 619cfb4161d40bd440ebeadb2fcac2b2 rx frm ACK delay=234 blocks=[0..0]
quiche::recovery: 619cfb4161d40bd440ebeadb2fcac2b2 packet newly acked 0
quiche: 619cfb4161d40bd440ebeadb2fcac2b2 rx pkt Short dcid=619cfb4161d40bd440ebeadb2fcac2b2 key_phase=false len=434 pn=0
quiche: 619cfb4161d40bd440ebeadb2fcac2b2 rx frm ACK delay=94 blocks=[0..0]
quiche::recovery: 619cfb4161d40bd440ebeadb2fcac2b2 packet newly acked 0
quiche: 619cfb4161d40bd440ebeadb2fcac2b2 dropped epoch 1 state
quiche: 619cfb4161d40bd440ebeadb2fcac2b2 rx frm HANDSHAKE_DONE
quiche: 619cfb4161d40bd440ebeadb2fcac2b2 rx frm CRYPTO off=0 len=396
quiche: 619cfb4161d40bd440ebeadb2fcac2b2 rx frm STREAM id=4 off=0 len=5 fin=true
recv 515 bytes
recv would block
done reading
stream 4 is readable
byez
quiche: 619cfb4161d40bd440ebeadb2fcac2b2 tx pkt Short dcid=3bd8856ac3f9f43995ffeefde088b7d5 key_phase=false len=4 pn=1
quiche: 619cfb4161d40bd440ebeadb2fcac2b2 tx frm APPLICATION_CLOSE err=0 reason=[]
quiche: 619cfb4161d40bd440ebeadb2fcac2b2 tx frm PADDING len=1
quiche::recovery: 619cfb4161d40bd440ebeadb2fcac2b2 timer=60.858617ms latest_rtt=3.3692ms srtt=Some(9.631458ms) min_rtt=3.303141ms rttvar=6.587648ms loss_time=[None, None, None] loss_probes=[0, 0, 0] cwnd=13500 ssthresh=18446744073709551615 bytes_in_flight=38 app_limited=true congestion_recovery_start_time=None delivered=1616 delivered_time=1.08835ms recent_delivered_packet_sent_time=4.661211ms app_limited_at_pkt=0 pacing_rate=1401723 last_packet_scheduled_time=Some(Instant { tv_sec: 150459, tv_nsec: 853147728 }) hystart=window_end=Some(0) last_round_min_rtt=None current_round_min_rtt=None rtt_sample_count=0 lss_start_time=None
sent 38 bytes
done writing
timeout
done writing
quiche: 619cfb4161d40bd440ebeadb2fcac2b2 draining timeout expired
timeout
done writing
connection closed, recv=5 sent=7 lost=0 rtt=9631458ns
2.3 截图
【server】
【client】