| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 网络协议 -> 多测师浅谈TCP与UDP三次握手的原理 -> 正文阅读 |
|
[网络协议]多测师浅谈TCP与UDP三次握手的原理 |
我们经常浏览网页,网络聊天等,这些都是通过TCP协议以及UDP协议进行传输的。TCP和UDP协议都工作在传输层,都是在程序之间以二进制数进行数据的传输。 那么TCP与UDP协议他们之间具体有什么区别呢? 答:一个基于链接,一个基于非链接 例:如果将人与人之间的通信比喻成进程与进程之间的通信 1.基于非链接可以比喻成写信: 1.对方是否能收到信息 2.内容是否完整 3.如果有两封信,是否按照先后顺序进行接收 2.基于链接可以比喻成打电话: 打电话则不同于写信的操作,电话接通、相互通话、结束挂断等操作流程,都是可以得到对方确认的。 总结:打电话是基于链接的,也就是TCP协议;写信是基于非链接的,也就是UDP协议 多测师教育培训之什么是三次握手?: 答:三次握手是建立通讯链接的过程。 1.发送端(客户端)发送一个数据包给接收端(服务器),询问我是否可以与你建立链接,这个数据包我们称为SYN包,同时SYN包里会生成序列号。 2.如果服务端同意链接,就会回复客户端,发送数据包SYN加上ACK+1包 注意:ACK包(ACK包有自己的固定格式,长度大小,由接收方发送给请求方,表示发送的SYN信息确认无误,1表示数据确认有效) 3.客户端收到了服务端的确认信息(SYN+ACK)包后,向服务端发送ACK包,即建立链接成功 总结:这个交互的过程分为三次,发送了3个数据包,所以我们称之为三次握手 为什么是三次握手而不是两次握手呢? 答:是为了防止已失效的报文信息突然又传到服务端引起错误 假如采用两次握手建立链接: 客户端向服务端发送一个请求数据包(SYN包),如果因为一些未知原因(网络等)导致没有到达服务器,就会在传输过程中的某个节点产生滞留。 而为了建立链接,客户端会再次发送一个请求(SYN包)给服务端,这次的包正常送达,服务端回复SYN+ACK包,从而建立链接。然而,当阻塞的第一个数据包突然恢复时,第一个SYN包也送达到服务器,那么这个时候客户端会误认为客户端又发起了一个新的请求,服务端就会认为是两个链接状态,而客户端会认为是一个链接,从而导致了两个端的状态不一致。 总结:采用三次握手进行确认,往往就是为了解决网络信号不稳定 如需了解更多测试技术信息请关注: 深圳多测师软件与技术服务有限公司 |
|
网络协议 最新文章 |
使用Easyswoole 搭建简单的Websoket服务 |
常见的数据通信方式有哪些? |
Openssl 1024bit RSA算法---公私钥获取和处 |
HTTPS协议的密钥交换流程 |
《小白WEB安全入门》03. 漏洞篇 |
HttpRunner4.x 安装与使用 |
2021-07-04 |
手写RPC学习笔记 |
K8S高可用版本部署 |
mySQL计算IP地址范围 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 21:50:20- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |