摘要
- URG 与紧急指针不会创建第二条数据通道;紧急信息仍位于 TCP 的普通序列空间中。
- RFC 793 包含两套冲突的边界规则。RFC 1122 选择“最后一个紧急字节”,RFC 6093 后来又使标准与广泛部署的“紧急数据之后的字节”做法一致。
- RFC 9293 保留现行规则和实现义务,但没有把它变成优先通道,也不鼓励新应用建立依赖。
设置 URG 后,16 位紧急指针被解释为相对于报文段序列号的正偏移,因此它与普通数据属于同一个序列空间。只要标记点在序列空间中仍领先于 RCV.NXT,接收方就处于紧急模式;接收进度追上该点后便回到普通模式。字节始终留在数据流内。某些套接字 API 默认把一个字节呈现为“带外”,那是 API 约定,而不是第二种传输服务。
原始矛盾只差一个位置,却影响深远。RFC 793 的首部说明把指针放在紧急数据之后的字节上,而 SEND 处理又把 SND.UP 设为 SND.NXT-1,指向最后一个紧急字节。RFC 1122 选择后者,并要求支持任意长度的紧急序列以及向应用异步通知。然而 RFC 6093 发现,其调查的广泛部署实现采用的是“后续字节”解释,因此更新 RFC 793、RFC 1011 和 RFC 1122,将这一实践写入标准。RFC 9293 把它延续为当前的强制规则。
接收方已经处于紧急模式时,指针再次更新未必触发新的应用通知,所以发送方的紧急调用次数不必与接收方的通知次数一一对应。RFC 6093 还记录了部分中间设备会清除 URG 并把指针置零,但并未声称所有设备都如此。现有来源也不能证明今天的使用比例、操作系统默认值或攻击频率。
资料来源
会员简报
档案背景详情
使用相应会员等级登录,即可解锁完整简报与来源注释。
仅限 Strategic Circle
Strategic Circle
所有读者均可浏览。加入并登录后可解锁档案简报。
加入 Strategic Circle仅限 Leadership Alliance
Leadership Alliance
符合条件的 IP 资产所有者和管理层可登录查看 Leadership Alliance 简报。
加入 Leadership Alliance
