转载至:https://www.cnblogs.com/xiaokang01/p/10033267.html

TCP协议如何保证可靠传输

概述

TCP协议保证数据传输可靠性的方式主要有:

(校 序 重 流 拥)

校验和:

发送的数据包和二进制相加然后取反,目的是检测数据在传输过程中的任何变化。如果收到段的检验和有差错,TCP将丢弃这个报文段和不确认收到此报文段。

确认应答+序列号(累计确认+seq)

接收方收到报文就会确认(累积确认:对所有按序接收的数据的确认)

TCP给发送的每一个包进行编号,接收方对数据包进行排序,把有序数据传送给应用层。

超时重传:

当TCP发出一个段后,它启动一个定时器,等待目的端确认收到这个报文段。如果不能及时收到一个确认,将重发这个报文段。

流量控制:

TCP链接的每一方都有固定大小的缓冲空间,TCP的接收端只允许发送端发送接收端缓冲区能接纳的数据。当接收方来不及处理发送方的数据,能提示发送方降低发送的速率,防止包丢弃。TCP使用的流量控制协议是可变大小的滑动窗口协议。接收方有即时窗口(滑动窗口),随ACK报文发送。

拥塞控制;

当网络拥塞时,减少数据的发送。

最新文章

  1. centos7 docker activemq
  2. iOS 自带二维码扫描功能的实现
  3. <input type="file"> change事件异常处理办法
  4. 在ubuntu14.04上配置cuda_caffe_cudnn_anaconda_digits
  5. 论文阅读之 Inferring Analogous Attributes CVPR 2014
  6. 什么是JDK
  7. php笔记02:整型细节说明
  8. [算法]线段树(IntervalTree)
  9. php 序列化储存和转化 json_encode() json_decode($q,true)
  10. cocos2d-x中的init,onEnter,onExit......
  11. iOS workspace 依次编译多个工程
  12. NoSQL数据库之Redis数据库:Redis的介绍与安装部署
  13. ViewPager 实现 Galler 效果, 中间大图显示,两边小图展示(优化篇)
  14. Java基础-单列设计模式
  15. SQL SERVER数据库级的触发器
  16. 使用aws中国的s3时,制订bucket poicy时注意注意……
  17. 1122 Hamiltonian Cycle (25 分)
  18. [转]使用互斥对象让程序只运行一次(delphi)
  19. centos6.5安装logwatch监控日志
  20. ajax和SSH请求中乱码的一些解决方法

热门文章

  1. 单片机中volatile的应用
  2. “四大高手”为你的 Vue 应用程序保驾护航
  3. 快速安装与配置kubernetes集群搭
  4. 报错:net::err_unknown_url_scheme的解决办法
  5. 怎么在自己的windows上创建虚拟机(linux centos7)
  6. java的基本类型和类型转化
  7. 能动的电脑配件「GitHub 热点速览 v.22.11」
  8. tp5 数据库迁移及数据填充
  9. Mysql-基础-DDL-数据定义语言
  10. python 生产数据表脚本