TCP与UDP的一些知识点

Q:TCP如何保证可靠性?7种方式
A:TCP通过
校验和(判断这个数据的首部和数据本身有没有发生变化,有就不回复,等超时重传)
超时重传(TCP发出一个段之后,他会启动一个定时器,等待目的端确定收到这个报文,
如果不能及时收到一个确认回复,那么他会重发一个报文段)
确认应答(收到之后,过很短一端时间,可能是做完包检验之后才发确认)
序列号(通过序列号保证数据是正确的顺序交给应用层呢!)
重发控制(能够丢弃重复数据呢)
窗口控制(TCP提供了流量控制,TCP连接的每一方都有一个固定大小的缓冲区,为了防止快主机让慢主机的
缓冲区溢出,可以采用滑动窗口的方式来避免这个情况的发生)
连接管理呢!(TCP是面向有链接,在交换数据之前必须先建立连接呢,从而保证两端存在)


TCP传输步骤:
具体步骤如下:
(1)为了保证数据包的可靠传递,发送方必须把已发送的数据包保留在缓冲区;
(2)并为每个已发送的数据包启动一个超时定时器;
(3)如在定时器超时之前收到了对方发来的应答信息(可能是对本包的应答,也可以是对本包后续包的应答),则释放该数据包占用的缓冲区;
(4)否则,重传该数据包,直到收到应答或重传次数超过规定的最大次数为止。
(5)接收方收到数据包后,先进行CRC校验,如果正确则把数据交给上层协议,然后给发送方发送一个累计应答包,表明该数据已收到,如果接收方正好也有数据要发给发送方,应答包也可方在数据包中捎带过去。


如何确定UDP传输中是数据包是否被接收方正确接收。(这有没有那个确认应答的影子?!)
可以在每个数据包中插入一个唯一的ID,比如timestamp或者递增的int。 发送方在发送数据时将此ID和发送时间记录在本地。 接收方在收到数据后将ID再发给发送方作为回应 发送方如果收到回应,则知道接收方已经收到相应的数据包;如果在指定时间内没有收到回应,则数据包可能丢失,需要重复上面的过程重新发送一次,直到确定对方收到。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值