答案 0 :(得分:0)
通常,端点无法建立关联并发送ABORT块作为INIT上的响应。这可能发生在各种情况下(例如,错误配置,当您没有在服务器端为该关联创建端点;或者缺少资源时)。
INIT块有点特殊(携带它的数据包总是在公共头中将验证标记设置为零)。 INIT块也有所谓的启动标记 - 它基本上是一个验证标记,INIT块的发送者希望在该关联范围内收到它将收到的所有数据包。
当ABORT作为对INIT块的响应发送时,它将被发送,并将验证标记设置为INIT的init标记。这正是您在wireshark日志中可以看到的内容。
您的日志文件中似乎很奇怪的是ABORT块的发送方在使用t-bit时不遵循RFC 4960。
RFC 4960, chapter 8.4,子弹3说:
如果,无论如何 原因是,INIT无法正常处理,ABORT必须处理 作为响应发送,包的验证标签 包含ABORT块必须是的启动标签 接收到INIT块,并且ABORT块的T位必须是 设置为0,表示未反映验证标记。
在您的情况下,ABORT块的发送方使用init标记作为验证标记(如RFC中所定义),但它也将t-bit设置为1 - 它违反了RFC。由于携带ABORT块的数据包中的t位设置不正确,因此它会阻止INIT的发送方正确处理它。基本上INIT块的发送方无法处理该ABORT。
ABORT的发件人也可以在ABORT块中包含原因代码,以提供有关ABORT原因的更多详细信息。然而,无论出于什么原因,它还没有完成,ABORT的实际原因仍然是个谜。
总结: