TCP协议如何实现可靠传输

TCP最主要的特点

TCP是面向连接的运输层协议,在无连接的、不可靠的IP网络服务基础之上提供可靠交付的服务。为此,在IP的数据报服务基础之上,增加了保证可靠性的一系列措施。

TCP最主要的特点:

  1. TCP是面向连接的输出层协议

每一条TCP连接只能有两个端点,每条TCP连接只能是点对点的(一对一)

2.TCP提供可靠交付的服务

3.TCP提供全双工通信(TCP协议会维护两个缓冲区,分别是接收缓冲区和发送缓冲区)

4.面向字节流

  • TCP中的"流"指的是流入或流出进程的字节序列。
  • 面向字节流:虽然应用程序和TCP的交互是一次一个数据块,但TCP把应用程序交下来的数据看成仅仅是一连串无结构的字节流。

TCP如何实现可靠传输

  • TCP每次发送完一个分组就停止发送,等待对方的确认。在收到确认后再发送下一个分组。
  • 全双工通信的双方既是发送方也是接收方。
  • 假设仅考虑A发送数据,而B接收数据并发送确认。因此A叫做发送方,而B叫做接收方。

发送端如何知道接收端是否正确收到了M1呢?

解决方法:超时重传

发送端为每一个已发送的分组设置一个超时计时器。

发送端只要在超时计时器到期之前收到了相应的确认,就撤销该超市计时器,继续发送下一个分组M2

若发送端在超时计时器规定时间内没有收到B的确认,就认为分组错误或丢失,就重发该分组。

提高传输效率:流水线传输

流水线传输:在收到确认之前,发送方连续发出多个分组。

由于在信道上一直有数据不间断地传送,流水线传输可获得很高的信道利用率

连续ARQ协议和滑动窗口协议采用流水线传输方式。

连续ARQ协议

发送窗口:发送方维持一个发送窗口,位于发送端扣内的分组都可被连续发送出去,而不需要等待对方的确认。

发送窗口滑动:发送方每收到一个确认,就把发送窗口向前滑动一个分组的位置。

累计确认:接收方对按序到达的最后一个分组发送确认,表示:到这个分组位置的所有分组都已正确收到了

TCP包

相关推荐
电子科技圈4 分钟前
SiFive车规级RISC-V IP获IAR最新版嵌入式开发工具全面支持,加速汽车电子创新
嵌入式硬件·tcp/ip·设计模式·汽车·代码规范·risc-v·代码复审
何妨呀~5 分钟前
Linux在VMware上添加磁盘与扩展分区
linux·运维·服务器
model200524 分钟前
Web 服务和 SFTP 用户 操作目录
linux·运维·服务器
kevin_水滴石穿28 分钟前
docker-compose.yml案例
java·服务器·开发语言
谈笑也风生28 分钟前
验证IP地址(三)
python·tcp/ip·mysql
OurBMC社区31 分钟前
玩转OurBMC第二十三期:OurBMC之PCIe接口应用(下)
linux·运维·网络
初圣魔门首席弟子40 分钟前
核心 Bug:客户端与服务器端口不匹配(导致请求无法送达)
linux·网络
是垚不是土43 分钟前
基于Blackbox Exporter的网络服务黑盒监控体系实践
网络·数据库·安全·http·微服务·prometheus
福尔摩斯张1 小时前
TCP协议深度解析:从报文格式到连接管理(超详细)
linux·c语言·网络·c++·笔记·网络协议·tcp/ip
刀刀是个萌妹子1 小时前
使用CloneZilla还原操作系统
linux·运维·服务器