提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 简介
  • 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握手是三次握手而不是两次相关推荐

  1. 一些通讯知识、TCP/IP、三次握手四次分手(正确的图,网上很多错了)、HTTP\HTTPS、DNS、UDP

    总述 这里会按照一个浏览器(客户端)是向服务器请求资源的路径来分享知识点 有些内容在之前的博客有,您可以自取 浏览器(客户端)是如何向服务器请求资源的呢? 见下图: 客户端输入网址(输入搜索内容也是一 ...

  2. 通俗理解tcp/ip的三次握手和四次分手

    转载地址:https://github.com/jawil/blog/issues/14 最近在恶补计算机网络方面的知识,之前对于TCP的三次握手和四次分手也是模模糊糊,对于其中的细节更是浑然不知,最 ...

  3. 白话解说TCP/IP协议三次握手和四次挥手

    白话解说TCP/IP协议三次握手和四次挥手 1.背景 和女朋友异地恋一年多,为了保持感情我提议每天晚上视频聊天一次. 从好上开始,到现在,一年多也算坚持下来了. 1.1.问题 有时候聊天的过程中,我的 ...

  4. 三次握手和四次挥手图解_详解 TCP 连接的“三次握手”与“四次挥手”

    作者 | AhuntSun 责编 | Elle TCP connection 客户端与服务器之间数据的发送和返回的过程当中需要创建一个叫TCP connection的东西: 由于TCP不存在连接的概念 ...

  5. 详解 TCP 连接的“ 三次握手 ”与“ 四次挥手 ”

    作者 |  AhuntSun 责编 | Elle TCP connection 客户端与服务器之间数据的发送和返回的过程当中需要创建一个叫TCP connection的东西: 由于TCP不存在连接的概 ...

  6. 单片机tcp异常处理_TCP三次握手、四次挥手出现意外情况时,为保证稳定,是如何处理的...

    一. 序 当我们聊到 TCP 协议的时候,聊的最多的就是三次握手与四次挥手.但是大部分资料和文章,写的都是正常的情况下的流程.但是你有没有想过,三次握手或者四次挥手时,如果发生异常了,是如何处理的?又 ...

  7. TCP协议及三次握手的过程

    在这里插入代码片@TOC TCP协议以及三次握手 提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 TCP协议以及三次握手 1.TCP协议是什么? 2.TCP协议的作用 3. ...

  8. TCP为什么需要三次握手四次挥手

    TCP为什么需要三次握手四次挥手 三次握手 TCP是通过程序实现的,可靠的,面向连接的协议.而程序是严谨的,每一次建立连接都会进行"三次握手"这样的步骤. 建立连接的目的是为了可靠 ...

  9. TCP 连接的“ 三次握手 ”与“ 四次挥手 ”

    TCP 协议简介 TCP 是互联网核心协议之一,本文介绍它的基础知识. 一.TCP 协议的作用 互联网由一整套协议构成.TCP 只是其中的一层,有着自己的分工. (图片说明:TCP 是以太网协议和 I ...

最新文章

  1. python绘制雷达图-使用Python绘制雷达图
  2. web.xml文件位于web项目的目录结构中的_看完这篇,别人的开源项目结构应该能看懂了...
  3. 产品经理该如何全局思考和分析行业产业链?
  4. nmap扫描局域网存活主机_安全工程师都在用的网络扫描软件,巧用ARP协议发现主机。第二节...
  5. Maven发布工程到私服
  6. react学习(72)--row上面加样式
  7. ubuntu14.04使用MySQL数据库安装配置Hive 1.2.1
  8. C#高仿腾讯QQ截图程序(改)
  9. delphi用IdTCPServer和IdTCPClient传输文件
  10. 《挑战程序设计竞赛》 读后感
  11. iOS关于应用出现未验证应用的解决方法
  12. [VK Cup 2016 - Round 3] - D Bearish Fanpages
  13. 如何对计算机进行磁盘整理,WinXP电脑磁盘碎片怎么整理,教您如何给XP系统电脑进行磁盘碎片整理...
  14. (转)Linux——pv、vg和lv的概念
  15. 写过的比较难受的题目
  16. 加载Glove预训练词向量到字典
  17. Nginx配置及常用配置
  18. Chimaera:用区块链游戏思维将《玩家一号》的“绿洲”变为现实;网易有道将推语音助手及智能音箱
  19. js添加、删除DOM元素
  20. window文件转换到linux,Window和Linux上的文件相互转换

热门文章

  1. 基于LSM-Tree的键值存储引擎的设计与实现
  2. vue3配置host和port,以及设置跨域(vite打包)
  3. 一首小诗—《致编程》
  4. 程序包无效:“CRX_HEADER_INVALID“ 解决办法
  5. 过年扫五福,干脆我用Python做一个五福生成器
  6. 22.卷积神经网络实战-Lenet5
  7. 计算机毕业设计ssm民族地区文化调研与数字化保护技术研究—青海特色美食制作工艺数字化保护平台90b5b系
  8. iptables规则备份和恢复
  9. 共创美好生活 -- 新国都十七周年庆
  10. OSChina 周三乱弹 —— 喜欢你的时候尾巴会竖起来