TCP/UDP

TCP/UDP协议是TCP/IP协议的核心,位于TCP/IP协议的传输层,用于提可靠传输。

TCP

传输控制协议。位于传输层,提供面向连接,可靠的字节流服务并且提供超时重发,丢弃重复数据,检验数据,流量控制等功能保证数据能从一端传到另一端;字节流是指为方便传输将大块数据分割成以报文为单位的数据包进行管理;可靠的传输服务是指能将数据准确可靠的传送给对方(能够确认数据最终是否到达对方)。

UDP

用户数据报协议。面向数据报的传输层协议,提供面向无连接,不可靠的数据流传输服务,传输速度快。只负责传输用户发给IP层的数据报,不提供报文到达确认,排序以及流量控制。

TCP保证可靠传输的方式
  • 校验和:
    目的:检测数据在传输过程中的变化,如果接收端计算出的校验和跟发送方的校验和比较有差错,TCP将丢弃这个报文段并不确认收到此报文段;

    校验和的计算方式:
    实现过程:把发送的进行检验的数据和运算的数据分成若干个16位的位串,每个位串看成一个二进制数,对这些16位的二进制数进行1的补码和运算(带循环进位(end round carry)的加法,最高位有进位应循环进到最低位),累加的结果再取反码即生成了检验码,将检验码放入检验和字段中。
    注意: 如果接收方比对校验和与发送方不一致,那么数据一定传输有误。但是如果接收方比对校验和与发送方一致,数据不一定传输成功。

  • 确认应答与序列号:
    序列号:TCP传输时将每个字节的数据都进行了编号,这就是序列号。序列号能将接收到的数据根据序列号排序,并且去掉重复序列号的数据。
    确认应答:TCP传输过程中每次接收方收到数据后,都会发送ACK报文对传输方进行确认应答。ACK报文中带有对应的序列号,告诉发送方,接收到了哪些数据,下一次的数据从哪里发。

  • 超时重传:
    在进行TCP传输时,由于确认应答和序列号机制,发送端在发送一部分数据后,会等待接收端发送的ACK报文。但由于网络原因可能会出现:

  1. 数据在发送过程中发生了丢包,接收端没有接收到;
  2. 接收端接收到数据后,发送了ACK报文,但ACK报文发生了丢包,发送端没有接收到。

TCP使用超时重传机制来解决问题,发送端在发送数据之后,会等待一段时间,如果时间到达后,还没收到ACK报文,则重新发送刚才的数据。接收端在接收到重发的数据,会从序列号中确认数据是否已经接收过,如果没有接收过,则接收数据,并返回ACK报文;如果已经接收过,则直接抛弃,返回ACK报文。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值