请问有没有人能解释一下如何处理乱序数据包。我正在使用原始套接字捕获数据包,并在其到达时解析它们,但其中一些数据包的顺序不正确,例如:
Id...........Flags 16390 : (PSH, ACK) 16535 : (PSH, ACK) 16638 : (ACK) 16640 : (PSH, ACK) 16639 : (ACK) 16695 : (PSH, ACK)
ID为16390、16535和16695的数据包是独立的数据包,可以自由处理。 ID为16638、16640和16639的数据包是一个数据包序列,在解析之前应该按升序排列。
更糟糕的是,带有推送标志的数据包有时会先到达,所以我只是将它们传递给解析器,然后前面的数据包到达,解析器就将其丢弃为损坏的数据包。
有没有办法解决这个问题?
Id...........Flags 16390 : (PSH, ACK) 16535 : (PSH, ACK) 16638 : (ACK) 16640 : (PSH, ACK) 16639 : (ACK) 16695 : (PSH, ACK)
ID为16390、16535和16695的数据包是独立的数据包,可以自由处理。 ID为16638、16640和16639的数据包是一个数据包序列,在解析之前应该按升序排列。
更糟糕的是,带有推送标志的数据包有时会先到达,所以我只是将它们传递给解析器,然后前面的数据包到达,解析器就将其丢弃为损坏的数据包。
有没有办法解决这个问题?