看见网上说“这个 ID 是客户端随机产生的64位”。具体是根据什么生成的呢。如何保证在切换了IP和端口后connection_id还是一样的。
1条回答 默认 最新
- muyige0852 2022-08-18 10:24关注
要想理解 quic 的 connection id,首先要理解什么是 connection(连接),在 linux 内核用于区分 connection 并给 connection 标记状态的模块是 conntrack,它是根据五元组(协议,源 IP,源端口,目的 IP,目的端口)来区分连接的,但是因为由 NAT 的存在,这种方式的弊端就很明显了,NAT 之后五元组的信息就变了,这就不能全链路的区分一个连接。QUIC 为了解决这个问题就在报文头加了 connection id,connection id 又分为两部分:source connection id 和 destination connection id。
现在来回答你的问题:
1、这个 ID 是客户端随机产生的64位
这个不完全准确,只是在握手阶段客户端的 destination connection id 是随机生成的。
2、如何保证在切换了IP和端口后connection_id还是一样的
QUIC 没有要求 connection_id 一样,事实上 client 发生迁移后 connection_id 一定会变化。迁移后保持不变的是 stream id,QUIC 是根据 stream id 来区分应用了。解决 无用评论 打赏 举报
悬赏问题
- ¥15 delphi webbrowser组件网页下拉菜单自动选择问题
- ¥15 wpf界面一直接收PLC给过来的信号,导致UI界面操作起来会卡顿
- ¥15 init i2c:2 freq:100000[MAIXPY]: find ov2640[MAIXPY]: find ov sensor是main文件哪里有问题吗
- ¥15 运动想象脑电信号数据集.vhdr
- ¥15 三因素重复测量数据R语句编写,不存在交互作用
- ¥15 微信会员卡等级和折扣规则
- ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
- ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
- ¥15 gdf格式的脑电数据如何处理matlab
- ¥20 重新写的代码替换了之后运行hbuliderx就这样了