确保可靠性的TCP协议【杂谈】
时间:2021-08-08
本文章向大家介绍确保可靠性的TCP协议【杂谈】,主要包括确保可靠性的TCP协议【杂谈】使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
回首这几年,凡是做的好的东西背后都有【习惯】在支撑,凡是做的不好的东西背后都缺乏稳定【习惯】。习惯就是【系统】。
今天给大家简单聊一聊【确保可靠性的TCP协议】。
按层次分,TCP位于传输层,提供可靠的字节流服务。
所谓的字节流服务(Byte Stream Service)是指,为了方便传输,将大块数据分割成以报文段(segment)为单位的数据包进行管理。而可靠的传输服务是指,能够把数据准确可靠地传给对方。一言以蔽之,TCP协议为了更容易传送大数据才把数据分割,而且TCP协议能够确认数据最终是否送达到对方。
为了准确无误地将数据送达目标处,TCP协议采用了三次握手(three-way handshaking)建立连接。用TCP协议把数据包送出去后,TCP不会对传送后的情况置之不理,它一定会向对方确认是否成功送达。握手过程中使用了TCP的标志(flag)--SYN(synchronize)和ACK(acknowledgement).
发送端首先发送一个带 SYN 标志的数据包给对方。接收端收到后,回传一个带有 SYN / ACK 标志的数据包以示传达确认信息。最后,发送端再回传一个带 ACK 标志的数据包,代表 “握手” 结束。
若在握手过程中某个阶段莫名终断,TCP协议会再次以相同的顺序发送相同的数据包。
除了上次三次握手,TCP协议还有其他各种手段来保证通信的可靠性。
协议对比:
1、TCP
- TCP 是面向连接的传输控制协议。
- TCP 具有高可靠性,确保传输数据的正确性,不出现丢失或乱序。
- TCP 协议可以保证接收端毫无差错地接收到发送端发出的字节流,为应用程序提供可靠的通信服务。(对可靠性要求高的通信系统往往使用 TCP 传输数据。比如 HTTP 运用 TCP 进行数据的传输。)
2、UDP
- UDP 提供了无连接的数据报服务。
- UDP 在传输数据前不建立连接,不对数据报进行检查与修改,无须等待对方的应答,所以会出现分组丢失、重复、乱序,应用程序需要负责传输可靠性方面的所有工作。
- UDP 具有较好的实时性,工作效率较 TCP 协议高。
- UDP 段结构比 TCP 的段结构简单,因此网络开销也小。
以下为历史文章链接:
【软件测试基础】
【互联网协议】
以上原文来自我的公众号【不只是测试】,扫描加关注哦O(∩_∩)O~
原文地址:https://www.cnblogs.com/TesterChang/p/15114899.html
- layui动态设置下拉框数据,根据后台数据设置选中
- BCryptPasswordEncoder加密及判断密码是否相同
- 两个HTML,CSS布局实例
- cors解决Web跨域访问问题
- Java之集合初探(二)Iterator(迭代器),collections,打包/解包(装箱拆箱),泛型(Generic),comparable接口
- IIS中实现HTTPS的自动跳转
- Windows Server下IIS安装PHP+MySql环境
- Python玩机器学习简易教程
- 腾讯云服务器搭建个人博客教程
- Ubuntu下安装Nginx+PHP+MySql环境
- JavaScript 对象
- HTML 表单
- HTML DOM
- HTML 标签
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- MySQL8功能详解——Common table expression (CTE)
- 游戏数据分析
- MySQL8功能详解——隐藏索引
- python 操作excel(附案例)
- 如何在 Spring Boot 中 读写数据
- MyBatis 多表操作
- 从0打造wordpress插件wp2oc fileshare (1) – 将wp存储后端做进owncloud
- Python 爬虫保存图片
- 抛物线法、牛顿法、弦截法求根实例
- org.springframework.web.client.ResourceAccessException: I/O error on POST request....
- 升级MySQL InnoDB Cluster的元数据
- 数据分析项目-数据分析岗位近况分析
- Eureka 的服务发现 Discovery 简单配置
- python自动化之JS处理滚动条
- Docker 中启动 ZooKeeper