UDP模仿TCP

本文介绍了如何使用UDP模仿TCP协议的一些关键特性,如三次握手、四次挥手、超时重传和快速重传。在设计中,包含了包头设计、状态管理以及发送和接收端的策略,以确保在环回网络上的可靠性。接收端接收到数据后立即回应ACK,但不处理ACK包,同时处理可能的数据丢失、重复、损坏和乱序问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值