美文网首页
为什么TCP需要三次握手而不是两次?

为什么TCP需要三次握手而不是两次?

作者: 刀尖红叶 | 来源:发表于2017-03-11 13:33 被阅读352次

《Computer Networking: A Top-Down Approach》讲解TCP那章里有个疑问:为什么TCP需要三次握手而不是两次?网上看的答案不太符合我的想法,而我的答案是:性能!

首先看下经典的TCP三次握手图解:

我之前疑惑的一点就是在第1次握手(Client发送连接请求)和第2次握手(Server返回确认信息)后,第3次不就可以直接传数据了吗,何必有第3次握手确认?其实从性能方面考虑就能把2次握手排除了:

1.TCP不同于UDP,除了监听的主socket进程外,对于每个client,Server还会生成各自独立的socket来通信,而一个socket进程的建立很耗CPU的

2.假如TCP被设计成前2次握手建立连接、第3次就用来传数据;那么第一次握手时Server就需要建立一个对应此client的socket进程,等第2次握手被client处理完毕,client就直接连接此socket通信了

3.但第一次握手就建立监听socket进程是很冒险的:假如网络不好,一个client发送的第一次握手请求很久才到达Server,然后Server在建立了socket通信进城后发送第二次握手回应client,但因为timeout,此时这个握手请求肯定无效,但Server还是为此建立了个socket通信进程,而一个socket进程的建立很耗CPU的,实在是很浪费~甚至黑客发起SYN flood攻击时,Server这种一次握手建立socket方式会死的更快~

因此,我认为TCP3次握手后才建立socket通信是一种考虑到性能的设计方式

相关文章

  • TCP 三次握手与四次挥手

    目录 TCP与UDP的区别TCP 三次握手为什么需要三次握手?而不是两次TCP 四次挥手为什么需要等待 2MSL为...

  • TCP的三次握手和四次挥手

    TCP通过三次握手建立连接 为什么需要三次握手而不是两次或者四次? 三次握手是为了保证可靠传输,两次握手只能保证客...

  • tcp为什么是三次握手

    参考 TCP 为什么是三次握手,而不是两次或四次? 1. tcp三次握手流程 由图可知,tcp三次握手的关键在于,...

  • TCP三次握手、四次挥手漫画

    乔戈里大神的漫画TCP连接为什么是三次握手,而不是两次握手,也不是四次握手?TCP断开连接为什么是四次挥手,不是二...

  • TCP的三次握手和四次挥手

    目录 名词解释 TCP的三次握手TCP建立链接的步骤TCP的三次握手步骤思考:TCP握手为什么不是两次 or 四次...

  • 快速理解TCP/IP三次握手与四次挥手

    TCP/IP三次握手 TCP建立连接为什么是三次握手,而不是两次或四次?TCP,名为传输控制协议,是一种可靠的传输...

  • 三次握手与四次挥手图文详解

    本文介绍TCP的三次握手与四次挥手,以及TCP 为什么是三次握手,而不是两次或四次?TCP名为传输控制协议,是一种...

  • TCP三次握手

    什么是tcp/ip协议?TCP的三次握手指的是什么,为什么一定要三次握手,而不是四次或者是两次? 1.背景介绍 网...

  • 趣解 三次握手, 四次挥手

    转自知乎 -- TCP 为什么是三次握手,而不是两次或四次? 三次握手 A: 喂,你听得见么? B: 我听得见呀,...

  • 网络通信

    Tcp通信原理了解吗? Tcp连接需要进行三次握手,断开需要四次挥手。 为什么TCP连接需要三次握手分开需要四次握...

网友评论

      本文标题:为什么TCP需要三次握手而不是两次?

      本文链接:https://www.haomeiwen.com/subject/ovbagttx.html