面试题答案
一键面试方法一:序列号与确认机制
- 原理:
- 发送端:在UDP数据包头部添加序列号字段,每个数据包按顺序编号。发送完一个数据包后,启动一个定时器。
- 接收端:接收到数据包后,根据序列号判断数据包是否按序到达,若按序则向发送端回复一个包含该数据包序列号的确认(ACK)包。
- 发送端:若在定时器超时前收到ACK包,说明该数据包已被成功接收,关闭定时器并发送下一个数据包;若定时器超时仍未收到ACK包,则重发该数据包,并重新启动定时器。通过这种方式,确保每个数据包都能被接收端正确接收。
方法二:校验和机制
- 原理:
- 发送端:在UDP数据包中添加校验和字段。发送前,根据数据包的内容(包括数据部分和头部)计算一个校验和值,并将其填入校验和字段。
- 接收端:接收到数据包后,按照同样的计算方法重新计算校验和。然后将计算得到的校验和与数据包中携带的校验和进行比较。如果两者相等,说明数据包在传输过程中未发生错误;如果不相等,则说明数据包可能损坏,接收端可以选择丢弃该数据包,并向发送端请求重发(若结合上述序列号与确认机制)。这样可以在一定程度上保证数据的完整性。