简述

  1. 第一次握手,发送SYN报文,传达信息:“你好,我想建立连接”;
  2. 第二次握手,回传SYN+ACK报文,传达信息:“好的,可以建立链接”;
  3. 第三次握手,回传ACK报文,传到信息:“好的,我知道了,那我们连接”。然后就建立连接了。在发送报文之前各方都要确认可以进行连接。

建立连接的过程是利用客户服务器模式,假设主机A为客户端,主机B为服务器端。

  1. TCP的三次握手过程:主机A向B发送连接请求;主机B对收到的主机A的报文段进行确认;主机A再次对主机B的确认进行确认。
  2. 采用三次握手是为了防止失效的连接请求报文段突然又传送到主机B,因而产生错误。失效的连接请求报文段是指:主机A发出的连接请求没有收到主机B的确认,于是经过一段时间后,主机A又重新向主机B发送连接请求,且建立成功,顺序完成数据传输。考虑这样一种特殊情况:主机A第一次发送的连接请求并没有丢失,而是因为网络节点导致延迟达到主机B,主机B以为是主机A又发起的新连接,于是主机B同意连接,并向主机A发回确认,但是此时主机A根本不会理会,主机B就一直在等待主机A发送数据,导致主机B的资源浪费。
  3. 采用两次握手不行,原因就是上面说的失效的连接请求的特殊情况。
  • 如果采取两次握手,相当于第二次握手结束便建立连接,如果发送SYN的一方不想连接了,也不会有反馈,另一方却一直在等待,浪费了时间。
  • 当然可以采取4次甚至N次握手,但是建立连接的时间太长,效果也会大打折扣。
  • 因此3次握手属于最佳方案,既保证了可靠性,又节俭了建立连接的时间

TCP三次握手如果使用二次握手代替则会出现的问题相关推荐

  1. 握手失败_拜托了,看完这篇别再问我什么是TCP三次握手和四次挥手

    TCP三次握手和四次挥手的问题在面试中是最为常见的考点之一.很多读者都知道三次和四次,但是如果问深入一点,他们往往都无法作出准确回答. 三次握手如何建立连接? 三次握手建立链接 从图中可以清楚的看到, ...

  2. 面试官,求你了别再问我TCP三次握手和四次挥手了(含面试题)

    少点代码,多点头发 三次握手建立链接,四次挥手断开链接.这个问题算非常经典的问题,也是面试官非常喜欢问的问题. 不夸张的说,龙叔在校招面试的时候每一家公司都问到过关于三次握手和四次挥手相关的问题,相信 ...

  3. c++ tcp 封装_关于TCP三次握手和四次挥手问题,求你别再问了问了...

    少点代码,多点头发 三次握手建立链接,四次挥手断开链接.这个问题算非常经典的问题,也是面试官非常喜欢问的问题. 不夸张的说,龙叔在校招面试的时候每一家公司都问到过关于三次握手和四次挥手相关的问题,相信 ...

  4. Tcp三次握手连接梳理

    之前一直对tcp的三次握手和四次挥手总是懵懵懂懂,感觉知道个大概,但是又说不清楚.所以查阅了一些网上的优秀文章,在这里尝试梳理一下加深自己理解和记忆. 一.TCP报文段结构 要了解三次握手的过程中发送 ...

  5. 淘宝二面,面试官居然把TCP三次握手问的这么详细

    TCP 的三次握手和四次挥手,可以说是老生常谈的经典问题了,通常也作为各大公司常见的面试考题,具有一定的水平区分度.看似是简单的面试问题,如果你的回答不符合面试官期待的水准,有可能就直接凉凉了. 本文 ...

  6. java锁一次交互二次握手_Java后台开发面试实战(二):TCP三次握手四次挥手

    感谢牛客网网友提供的面试经验! 1. 解释一下TCP三次握手四次挥手 图片来源于微信公众号:码农求职小助手 答: 嗯(稍作思考)- 三次握手简单来说,在数据传输开始前: 第一次握手:客户端向服务端发送 ...

  7. tcp 二次握手时延_一篇搞懂TCP的三次握手 四次挥手

    TCP的三次握手四次挥手,估计大家都听过.但是真的能把每一步说明白的人比较少.我还记得在之前面试的时候被面试官一顿问,然后一脸懵B... 都是大学没好好上课 ,这篇文章就跟大家讲讲到底这三握四挥是在搞 ...

  8. tcp当主动发出syn_(二)深入浅出TCPIP之再识TCP,理解TCP三次握手(上)

    TCP作为一种可靠传输控制协议,其核心思想:既要保证数据可靠传输,又要提高传输的效率,而用三次握手恰恰可以满足以上两方面的需求! 1.三次握手 所谓的三次握手即TCP连接的建立.这个连接必须是一方主动 ...

  9. TCP/IP学习笔记(二)TCP三次握手

    TCP是一种面向连接的流传输协议,提供了对数据传输时的各种控制功能,比如 当丢包时可以重新发送 即使数据到达顺序错乱也可以保证数据的有序性 由于TCP是面向连接的协议,所以必须在确定通信对端存在时才会 ...

最新文章

  1. RPC 笔记(08)— socket 通信(多进程多线程服务器)
  2. cxf生成客户端代码
  3. 关于字符串属性的几道面试题目
  4. EasyExcel 2 上传 下载
  5. mysql 事物状态有几种_mysql第三章 事务以及日志
  6. Android向本地写入一个XML文件和解析XML文件
  7. 【数据库系统概论】考研第一部分重点分析【1.1】
  8. 介绍一些平时用得到的服务/组件
  9. javascript . 05 json的组成、for...in 遍历对象、简单数据类型与复杂数据类型的传值与传址、内置对象...
  10. tcp连接时,BROKEN PIPE错误的原因以及解决方法
  11. 计算机网络工程课程设计
  12. WPS/Word参考文献格式规范及引用的方法
  13. Python-移位密码、仿射变换解密
  14. MSM8953修改开机动画
  15. saas系统和php mysql的区别_saas模式与传统软件的区别
  16. pg_bigm与pg_trgm的安装、测试、对比
  17. Win11此应用无法在你的电脑上运行怎么解决
  18. golang中的并发竞争态
  19. 《位置大数据隐私管理》—— 第1章 位置信息与隐私保护 1.1 位置大数据
  20. 一文简述BSD,System V ,POSIX,SUS版本历史, 以及glibc移植的特性测试宏

热门文章

  1. 地震引发的网络关系简化论
  2. hfs支持php文件系统,HFS+文件系统的发展及特点介绍
  3. android 视频相册,安卓11版本保存视频到相册,提示保存成功,相册里没有视频...
  4. VC2005操作Word
  5. ie11 java 下载文件_Javaweb实现上传下载文件的多种方法
  6. 认真学习InnoDB的数据存储结构中的区、段与表空间
  7. 省级森林防火应急指挥系统
  8. 北峰助力黑龙江森林防火数字超短波通信系统建设
  9. c语言人民币小写转换成大写,C语言实现人民币小写转大写
  10. IIC(I2C)通信协议详解