在升级到iOS 16后,我发现iPhone/iOS的MTU大小似乎会减小。在升级到iOS 16之前,手机的MTU大小始终为185字节,这与多数链接声称iPhone的最大MTU相匹配 (例如:示例1、示例2和示例3)。但是,在升级到iOS 16后,iPhone发送的MTU大小降至77字节。这是使用相同的手机和iOS应用程序代码连接到一个可穿戴设备(即iPhone是中心设备,可穿戴设备是外围设备),该设备包含nRF52芯片组并始终发送247字节的MTU请求。 我成功捕获了嗅探日志,显示iPhone在使用iOS 15时回复了一个MTU为185的值(这是预期的):
而下面的嗅探日志则显示了iPhone在使用iOS 16时发送了一个缩小的MTU,只有77字节:
值得注意的一点是,重新启动手机似乎可以暂时解决问题,iPhone的MTU响应会恢复到185字节,但连接几次之后,iPhone又开始发送77字节。在iPhone上重启蓝牙无法解决问题,唯一的临时解决方法是重启手机。我们成功地在iPhone 11、iPhone 13 Pro Max和iPhone 14上重现了此问题。该问题在iOS 16和iOS 16.0.2中都出现了。鉴于没有CoreBluetooth API来修改MTU大小,这似乎纯粹是iOS 16的一个错误,我是正确的吗?有办法克服这个问题并强制手机恢复使用最大的185字节MTU吗?
![enter image description here](https://istack.dev59.com/aNLr0.webp)
![enter image description here](https://istack.dev59.com/rbG73.webp)