可以在应用层保证数据传输的可靠性,比如设置一个定时器用来实现超时重传,然后对于接到的数据进行一个确认的操作。
原理上来讲因为UDP在传输层无法保证可靠传输,所以要使用UDP实现可靠传输,就要在他的上层或直接在应用层进行TCP可靠传输的逻辑实现。
-
超时重传(定时器)
-
有序接收(包的序列号)
-
应答确认(Seq/Ask应答机制)
当客户端通过UDP发送一个包到服务端时,如果服务端收到了,那么就要返回一个确认包进行确认。(如果确认的包没收到呢,那么就重传,如果服务端收到重传的信息,但是seq不符合条件,那么就再次回复ASK信息)。
这样会有一个问题:就是如果客户端没收到ask,就会重传,而且如果对每一个信息都需要ask确认的话,那么效率就很低。 -
滑动窗口/流量控制(滑动窗口机制)