计算机网络面试题(十九):TCP三次握手,为什么是三次?

news/2024/5/17 17:27:48 标签: 网络, http, tcp
http://www.w3.org/2000/svg" style="display: none;">

https://img-blog.csdnimg.cn/20200815191045412.jpg#pic_center" alt="在这里插入图片描述" />
https://img-blog.csdnimg.cn/20200815191053504.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDQ3ODM3OA==,size_16,color_FFFFFF,t_70#pic_center" alt="在这里插入图片描述" />

文章目录

  • TCP
    • TCP为什么采用三次握手?
    • 总结


TCP

TCP是一种面向对象的单播协议(一对一),在发送数据前,通信双方必须要在彼此之间建立一条连接

连接:其实已一条虚拟的概念,具体是指客户端和服务端的内存里保存的一份关于对方的信息,例如:IP地址、端口号……

TCP可以看成是一种字节流,TCP会处理IP层及以下层的丢包、重复和错误问题。在连接的建立过程中,通信双方需要交换一些连接的参数,这些参数放在TCP报文的首部

TCP协议提供了一种可靠、面向连接的、字节流、传输层的服务

  • 采用三次握手建立连接
  • 采用四次挥手断开连接

TCP为什么采用三次握手?

  • 握手的目的:建立可靠连接
  • 三次握手的目的让通信双方都能确认自身和对方具有正确的收发能力

第三握手还有一个功能:防止失效的连接请求到达服务器,服务器错误的打开了失效连接

  1. 第一次握手:客户端发送网络包,服务端接受网路包
  • 客户端发送完之后,属于“懵逼”状态
  • 服务端接受到网络包后可以得出结论:客户端具有发送能力,自身具备接受能力
  1. 第二次握手:服务端发送网络包,客户端接受网络
  • 服务端发送完之后,进入“懵逼”状态
  • 客户端接受到网络包之后得出结论:基于上一个发送的网络包服务端接收到了,所以服务端具有收发能力,我具有收发能力

注意:此时只是客户端知道双方具有收发能力,服务端仅仅知道客户端有发送能力,自己有接受能力

  1. 第三次握手:客户端发送网络包,服务端接受网络

此时服务端也知道了双方都具有收发能力

经历了三次握手,客户端和服务端才都知道双方具有收发能力,之后可以正常通信了

如何理解: 每一次握手之后你会发现,只有接受方能得出结论,发送方啥也不知道

我发包了,到没?发出去没?


总结

综上所述,必须要经过三次握手过程才能让客户端和服务端都知道双方具有正常的收发能力,两次做不到


http://www.niftyadmin.cn/n/1488572.html

相关文章

操作系统面试题(二十):导致线程出现死锁的情况

线程死锁 互斥(Mutual Exclusion) 一次只能有一个线程使用该资源,利用互斥锁锁住。如果另一个线程请求该资源,则必须延迟请求,知道该线程释放资源为止 保持并等待(Hold and wait) 一个线程占有…

计算机网络面试题(二十):TCP四次挥手,为什么要四次?

文章目录TCP四次挥手总结TCP四次挥手 参考文章:计算机网络面试题(九):TCP四次挥手 TCP连接是双向传输的对等模式(即双方都可以同时向对方发送/接受数据),当有一方要关闭连接时,会发…

数据库MySQL基础(五):数据表的操作

文章目录数据表的操作【1】删除数据库【2】注意【3】数据表重命名【4】删除一张表【5】对表一列的修改【5.1】增加一列【5.2】增加一列到指定位置【5.3】删除一列【5.4】重命名一列【5.5】修改一列数据类型【6】表内容修改【6.1】修改表中某个值【6.2】删除一行记录数据表的操作…

操作系统面试题(二十一):什么是DMA

DMA DMA(Direct Memory Access 直接内存访问) DMA意味着CPU授予I/O模块权限不涉及在不涉及CPU的情况下依然可以读取/写入内存,即DMA不需要CPUde支持 DMAC(DMA 控制器) 控制直接内存访问的过程 DMA的优点&#xff1a…

Python网络编程(三):TCP编程

文章目录TCP编程【1】客户端【2】服务端【3】实验【4】小结TCP编程 Socket是网络编程的一个抽象概念,通常我们用一个Socket表示打开了“网络连接”,而打开一个Socket需要知道目标计算机的IP地址,进程端口号,以及需要指定协议类型…

操作系统面试题(二十二):什么是僵尸进程

僵尸进程 僵尸进程是已经完成且处于终止状态,但在进程表中任然存在的进程。僵尸进程通常存在于父子关系的进程中,由于父进程仍需读取子进程的退出状态导致的

Python网络编程(四):UDP编程

UDP编程 TCP是建立可靠连接,并且通信双方都可以以字节流的形式发送数据UDP(面向数据包协议)则是面向无连接的 使用UDP协议时,不需要建立连接,只需要知道对方的IP地址和端口号既可以发送数据了 能不能到达就不知道了 …

VS code中django-html文件自动格式化后混乱了

弄了好多办法,最后发现是我安装了一个代码自动补全插件 按下F1,在设置中找到这个插件进行如下操作即可