udp模仿tcp类似于socket实现tcp的功能(单方向),比如三次握手,四次挥手,超时重传快速重传等等。
模拟TCP的功能
- 三次握手
- 四次挥手
- 发送端要带有计时器,要实现RTT估计和RTO(重传计时器)估计。RTT如下
SampleRTT某报文段被发出到对该报文段的确认被收到之间的时间量
EstimatedRTT=(1-α)* EstimatedRTT+α*SampleRTT(α=0.125?)
DevRTT=(1-β)DevRTT+β|SampleRTT-EstimatedRTT| (β=0.25?)
TimeoutInterval = EstimatedRTT + 4 *DevRTT(初始值:EstimatedRTT = 500 milliseconds, DevRTT = 250 milliseconds)
TimeoutInterval = EstimatedRTT + gamma * DevRTT
- 可靠数据传输:发送端维护最早未被确认的字节序号(sendbase), 下一个要发送的字节的序号(nextSeqNum), 通过单一计时器来实现超时重传,通过冗余ACK来实现快速重传。
- 流量控制:有一个在任何时刻能保持的最大的未确认的 《字节数》(最大窗口数),包能够有的最多字节数。
- 因为是在环回网络上测试,所以要模拟数据包出现TCP中的意外–丢失,延迟,损坏,乱序
- 接收端收到后立刻返回ACK。