TCP建立连接为什么不是两次握手?&TCP建立连接为什么是三次握手?(这两个问题的答案是一样的)

因为网络层是不可靠的。双方在通信的时候,就算是 TCP 连接,在网络层都有可能丢包,只不过是传输层有处理丢包的策略。若 TCP 连接是两次握手,那么突然来了一个已失效的客户端连接请求报文,服务器会把这次失效的连接当成正常的连接对待。谢希仁版计算机网络中给出的例子如下:client 发出的第一个连接请求报文段并没有丢失,而是在某个网络结点长时间的滞留了(可能是网络延迟),以致延误到连接释放以后的某个时间才到达 server。本来这是一个早已失效的报文段。但 server 收到此失效的连接请求报文段后,就误认为是 client 再次发出的一个新的连接请求。于是就向 client 发出确认报文段,同意建立连接。假设不采用"三次握手",那么只要 server 发出确认,新的连接就建立了。由于现在 client 并没有发出建立连接的请求,因此不会理睬 server 的确认,也不会向 server 发送数据。但 server 却以为新的传输连接已经建立,并一直等待 client 发来数据。这样,server 的很多资源就白白浪费掉了。采用"三次握手"可以防止上述现象发生。

其实两次握手还有一个不好的地方,就是会更容易受到 SYN 攻击。我之前把关于 SYN 攻击原理的知识做了整理。原本三次握手情况下,服务器在多次等不到客户端的 ACK 报文后,就会把分配的资源释放掉。现在换成两次握手,由于没有第三次的 ACK 报文,服务器的资源就会一直被"浪费"。

为什么TCP连接要三次握手?相关推荐

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

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

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

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

  3. 解析TCP连接之“三次握手”和“四次挥手”

    葡萄美酒夜光杯,欲饮琵琶马上催. 醉卧沙场君莫笑,古来征战几人回?----唐 · 王翰 · <凉州词> 前言 不管是面试别人还是被别人面试,有很大的可能会被问到TCP的"三次握手 ...

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

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

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

    详解 TCP 连接的"三次握手"与"四次挥手" 前言 TCP的三次握手(Three-Way Handshake) 1."三次握手"的详解 2 ...

  6. TCP连接,三次握手问题

    参考引用 Waking-up--github 面向信仰编程 一.为什么TCP建立连接需要三次握手 什么是连接:用于保证可靠性和流控制机制的数据,包括 Socket.序列号以及窗口大小. 首要原因:为了 ...

  7. 网络原理 | 传输层重点协议之TCP协议(TCP连接的三次握手与四次挥手、TCP的安全机制与效率机制)

    目录 TCP协议 安全机制 确认应答机制 超时重传机制 连接管理机制 三次握手 四次挥手 流量控制机制 ​编辑拥塞控制机制 效率机制 滑动窗口机制 延迟应答机制 捎带应答机制 TCP协议 · 传输层的 ...

  8. TCP连接时三次握手与是否携带数据

    1.三次握手(Three-way Handshake)其实就是指建立一个TCP连接时,需要客户端和服务器总共发送3个包.进行三次握手的主要作用就是为了确认双方的接收能力和发送能力是否正常.指定自己的初 ...

  9. TCP连接的三次握手四次挥手——类比异地恋情侣开始交往和分手(通俗易懂)

    首先,要详细解释的,先看下面两篇文章.这篇文章只是一个类比,可以辅助理解和记忆. 计算机网络--TCP三次握手详解为什么两次不行 计算机网络--TCP四次挥手过程详解 三次握手(开始交往) 男:(写一 ...

最新文章

  1. Mix3D:大规模三维场景的数据增强(3DV2021)
  2. python模拟内置函数reversed_Python内置函数reversed
  3. python在化学方面的应用-学材料、化学的要不要担心人工智能抢了自己的饭碗?...
  4. 支持向量机: Kernel
  5. java按钮调用 后台方法_onclick怎么调用后台中的一个方法
  6. POJ 1189 钉子和小球
  7. mysql crud_如何使用Laravel和MySQL构建您的第一个CRUD应用
  8. 爬虫 正则 bs4 xpath 中文乱码 管道符
  9. MINIEYE完成B轮融资,四维图新基金战略领投
  10. Codejock Suite Pro _16.3.X.国内最新版来了!
  11. 【android】悬浮球
  12. Java使用IKAnalyzer实现多关键字查询
  13. 线段树 hdu3265 Posters
  14. 【程序源代码】微信小程序商城管理系统(Java后台+微信小程序)最新版
  15. 清华计算机408考研真题资料经验分享
  16. matlab cftool光滑曲线导出为什么就不光滑了_快速傅里叶变换(FFT)中为什么要“补零”?...
  17. macOS 与 iOS 中的 Tagged Pointer
  18. 计蒜客 T1817 分解质因数(数论)
  19. 中国大学排名的爬虫实战
  20. 【Scrum】守、破、离(shu ha ri)

热门文章

  1. PostgreSQL学习笔记1之表定义
  2. 为啥国人偏爱 Mybatis,而老外喜欢 Hibernate/JPA 呢?
  3. [Kafka与Spark集成系列四] Spark运行结构
  4. Python中的GIL和深浅拷贝
  5. 音视频技术开发周刊:FFmpeg内置的一个无中生有的音视频输入数据 | 214
  6. 知乎云敲钟、比特币可购买特斯拉、用户隐私收集新规五一生效、 软件疯长等|Decode the Week...
  7. Python lambda表达式
  8. Windows10安装TensorFlow GPU版本
  9. mysql之慢查询详解,mysqldumpslow的使用
  10. Kafka集群在马蜂窝大数据平台的优化与应用扩展