为什么TCP握手是三次握手而不是两次
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 简介
- 1. 三次握手
- 2. 两次握手
- 3. 两次握手的问题
- 总结
简介
TCP连接需要三次握手,旨在通过同步两方之间交换的消息来建立可靠的通信。
1. 三次握手
在TCP中,三次握手使用 SYN 和 ACK 消息在两方之间建立连接。但是,除了提供它们的序列号之外,服务端和客户端还相互确认序列号,确认序列号的动作避免了 SYN 重复错误的发生。
下图演示了三次握手的过程:
首先,客户端(或称连接发送方)将带有客户端的序列号 (X) 的 SYN 消息发送到服务端(或称连接接收方)。服务端回复包含服务端序列号 (Y) 并确认客户端的序列号 (X) 的 SYN-ACK。之后,客户端发送 ACK 消息确认服务端的序列号(Y),最终建立连接。
这是三次握手的过程,这个过程中,大家可能会想到,如果是为了让双方都能拿到客户端和服务端的序列号,其实两次握手可以拿到,为什么需要三次握手呢?下面我们就演示一下两次握手。
2. 两次握手
两次握手是一种简单的协议,用于在想要通信的两方之间建立连接。与三次握手一样,该协议也使用同步 (SYN) 和确认 (ACK) 消息。
简而言之,SYN 消息需要一个连接,并通知对方一个序列号来控制数据交换。实际上,TCP序列号是在特定流上传递的字节的计数器。反过来,ACK 消息用于确认收到(使用序列号)传入消息。
考虑到客户端/服务端模型,为了完成两次握手,客户端向服务端发送一个序列号为X的SYN消息。然后,服务端应确认(ACK)SYN 消息,提供另一个序列号 Y 并建立联系。 因此,序列号 X 将确认从客户端到服务端的消息,而序列号 Y 将确认从服务端到客户端的消息,如此一来,双方都能拿到客户端和服务端的序列号。
下图描述了两次握手过程:
3. 两次握手的问题
根据RFC793中的描述,之所以三次握手是必须的,就是存在一种情况:当来自服务端的 ACK 消息延迟太多,双向握手会带来潜在的问题。此时客户端认为发生连接超时(Timeout),会向服务端发送另一个带有新序列号(例如Z)的 SYN 消息。但是,如果服务端之前发送了一个 ACK(在收到X之后稍微延迟发送给客户端但是在Z之前),它将丢弃这个带有新序列号(例如Z)的 SYN 消息。反过来,客户端接收到延迟的 ACK 并假设它引用了最后发送的 SYN 消息。这是错误发生的地方:客户端将发送序列号为 Z 的消息,而服务端期望消息遵循序列号X。
下图显示了概述的问题:
总结
而三次握手过程很明显能解决所描述的两次握手问题,能够在发起消息的时候使用正确的序列号。
它们在两方之间建立了可靠的消息交换,我们可以得出结论,握手协议是当前网络通信的关键资源。
为什么TCP握手是三次握手而不是两次相关推荐
- 一些通讯知识、TCP/IP、三次握手四次分手(正确的图,网上很多错了)、HTTP\HTTPS、DNS、UDP
总述 这里会按照一个浏览器(客户端)是向服务器请求资源的路径来分享知识点 有些内容在之前的博客有,您可以自取 浏览器(客户端)是如何向服务器请求资源的呢? 见下图: 客户端输入网址(输入搜索内容也是一 ...
- 通俗理解tcp/ip的三次握手和四次分手
转载地址:https://github.com/jawil/blog/issues/14 最近在恶补计算机网络方面的知识,之前对于TCP的三次握手和四次分手也是模模糊糊,对于其中的细节更是浑然不知,最 ...
- 白话解说TCP/IP协议三次握手和四次挥手
白话解说TCP/IP协议三次握手和四次挥手 1.背景 和女朋友异地恋一年多,为了保持感情我提议每天晚上视频聊天一次. 从好上开始,到现在,一年多也算坚持下来了. 1.1.问题 有时候聊天的过程中,我的 ...
- 三次握手和四次挥手图解_详解 TCP 连接的“三次握手”与“四次挥手”
作者 | AhuntSun 责编 | Elle TCP connection 客户端与服务器之间数据的发送和返回的过程当中需要创建一个叫TCP connection的东西: 由于TCP不存在连接的概念 ...
- 详解 TCP 连接的“ 三次握手 ”与“ 四次挥手 ”
作者 | AhuntSun 责编 | Elle TCP connection 客户端与服务器之间数据的发送和返回的过程当中需要创建一个叫TCP connection的东西: 由于TCP不存在连接的概 ...
- 单片机tcp异常处理_TCP三次握手、四次挥手出现意外情况时,为保证稳定,是如何处理的...
一. 序 当我们聊到 TCP 协议的时候,聊的最多的就是三次握手与四次挥手.但是大部分资料和文章,写的都是正常的情况下的流程.但是你有没有想过,三次握手或者四次挥手时,如果发生异常了,是如何处理的?又 ...
- TCP协议及三次握手的过程
在这里插入代码片@TOC TCP协议以及三次握手 提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 TCP协议以及三次握手 1.TCP协议是什么? 2.TCP协议的作用 3. ...
- TCP为什么需要三次握手四次挥手
TCP为什么需要三次握手四次挥手 三次握手 TCP是通过程序实现的,可靠的,面向连接的协议.而程序是严谨的,每一次建立连接都会进行"三次握手"这样的步骤. 建立连接的目的是为了可靠 ...
- TCP 连接的“ 三次握手 ”与“ 四次挥手 ”
TCP 协议简介 TCP 是互联网核心协议之一,本文介绍它的基础知识. 一.TCP 协议的作用 互联网由一整套协议构成.TCP 只是其中的一层,有着自己的分工. (图片说明:TCP 是以太网协议和 I ...
最新文章
- python绘制雷达图-使用Python绘制雷达图
- web.xml文件位于web项目的目录结构中的_看完这篇,别人的开源项目结构应该能看懂了...
- 产品经理该如何全局思考和分析行业产业链?
- nmap扫描局域网存活主机_安全工程师都在用的网络扫描软件,巧用ARP协议发现主机。第二节...
- Maven发布工程到私服
- react学习(72)--row上面加样式
- ubuntu14.04使用MySQL数据库安装配置Hive 1.2.1
- C#高仿腾讯QQ截图程序(改)
- delphi用IdTCPServer和IdTCPClient传输文件
- 《挑战程序设计竞赛》 读后感
- iOS关于应用出现未验证应用的解决方法
- [VK Cup 2016 - Round 3] - D Bearish Fanpages
- 如何对计算机进行磁盘整理,WinXP电脑磁盘碎片怎么整理,教您如何给XP系统电脑进行磁盘碎片整理...
- (转)Linux——pv、vg和lv的概念
- 写过的比较难受的题目
- 加载Glove预训练词向量到字典
- Nginx配置及常用配置
- Chimaera:用区块链游戏思维将《玩家一号》的“绿洲”变为现实;网易有道将推语音助手及智能音箱
- js添加、删除DOM元素
- window文件转换到linux,Window和Linux上的文件相互转换
热门文章
- 基于LSM-Tree的键值存储引擎的设计与实现
- vue3配置host和port,以及设置跨域(vite打包)
- 一首小诗—《致编程》
- 程序包无效:“CRX_HEADER_INVALID“ 解决办法
- 过年扫五福,干脆我用Python做一个五福生成器
- 22.卷积神经网络实战-Lenet5
- 计算机毕业设计ssm民族地区文化调研与数字化保护技术研究—青海特色美食制作工艺数字化保护平台90b5b系
- iptables规则备份和恢复
- 共创美好生活 -- 新国都十七周年庆
- OSChina 周三乱弹 —— 喜欢你的时候尾巴会竖起来