TCP协议,传输控制协议(英语:Transmission Control Protocol,缩写为 TCP)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义。

TCP通信需要经过创建连接、数据传送、终止连接三个步骤。

TCP通信模型中,在通信开始之前,一定要先建立相关的链接,才能发送数据,类似于生活中,"打电话""

TCP特点

1. 面向连接

通信双方必须先建立连接才能进行数据的传输,双方都必须为该连接分配必要的系统内核资源,以管理连接的状态和连接上的传输。

双方间的数据传输都可以通过这一个连接进行。

完成数据交换后,双方必须断开此连接,以释放系统资源。

这种连接是一对一的,因此TCP不适用于广播的应用程序,基于广播的应用程序请使用UDP协议。

2. 可靠传输

1)TCP采用发送应答机制

TCP发送的每个报文段都必须得到接收方的应答才认为这个TCP报文段传输成功

2)超时重传

发送端发出一个报文段之后就启动定时器,如果在定时时间内没有收到应答就重新发送这个报文段。

TCP为了保证不发生丢包,就给每个包一个序号,同时序号也保证了传送到接收端实体的包的按序接收。然后接收端实体对已成功收到的包发回一个相应的确认(ACK);如果发送端实体在合理的往返时延(RTT)内未收到确认,那么对应的数据包就被假设为已丢失将会被进行重传。

3)错误校验

TCP用一个校验和函数来检验数据是否有错误;在发送和接收时都要计算校验和。

4) 流量控制和阻塞管理

流量控制用来避免主机发送得过快而使接收方来不及完全收下。

TCP与UDP的不同点

  • 面向连接(确认有创建三方交握,连接已创建才作传输。)
  • 有序数据传输
  • 重发丢失的数据包
  • 舍弃重复的数据包
  • 无差错的数据传输
  • 阻塞/流量控制

最新文章

  1. pt-mext
  2. CRM(客户关系管理)
  3. jQuery DOM操作
  4. windows下的Nodejs及npm的安装、常用命令,Nodejs开发环境配置
  5. pentaho saiku 安装全过程
  6. 用t4模板和head.js进行css和js的版本控制
  7. ASP.NET MVC5 高级编程 第2章 控制器
  8. VCL里为什么要用类函数代替API,为什么要用CM_消息代替虚函数
  9. the NTP socket is in use, exiting
  10. 使用Notify 和 wait ,使用Linklist实现生产者消费者问题
  11. centos7如何关闭防火墙
  12. SQL基础-----DDL
  13. 用js来实现那些数据结构15(图01)
  14. MyEclipse2015优化
  15. Rollup处理并打包JS文件项目实例
  16. tomcat修改端口号
  17. RocketMQ消息存储
  18. MFS - MooseFS 文件系统
  19. Android studio 中创建AIDL Service
  20. Python: 类中为什么要定义__init__()方法

热门文章

  1. [永恒之黑]CVE-2020-0796(漏洞复现)
  2. [leetcode]110BalancedBinaryTree平衡二叉树
  3. 【探索之路】机器人篇(2)-ROS系统并创建工作空间和项目
  4. 01 . Go之从零实现Web框架(类似Gin)
  5. JavaDailyReports10_08
  6. java数组之排序
  7. js 中的 DOM 和 BOM
  8. AI算法测评事项
  9. 项目实战--JSON.toJSONString()
  10. Azure Terraform(三)部署 Web 应用程序