错误原因:自己加了一个NC chunk header.....
仔细分析:一个packet大小为1500字节,出去common header,还剩下1468字节给数据,这个数据包括了很多chunk(chunk的头和chunk中的净荷数据),自己加了这个NC header之后,把这个NC Header的大小也加到sHdr.usLength中了,导致这个量的值变成了1488>1468。
然后在RtxMarkedChunks()这个函数中,有个break语句的判断条件就牵扯到这个值的大小。这个错误导致在该函数中一直死循环。
反思:1.写协议的时候要严谨一点 2.学会使用GDB调试 3.出现死循环可能的原因就是 break 4.写协议的时候,写完一个模块就要测试,并且注意做好版本控制。