首页 > 其他分享 >tcp三次握手,四次挥手(面试题)

tcp三次握手,四次挥手(面试题)

时间:2023-02-08 14:11:07浏览次数:42  
标签:面试题 ACK 报文 tcp 发送 四次 握手 服务端 客户端

tcp三次握手

1.第一次握手:客户端给服务器发送一个syn报文;

2.第二次握手:服务器收到 SYN 报文之后,会应答一个 SYN+ACK 报文;

3.第三次握手:客户端收到 SYN+ACK 报文之后,会回应一个 ACK 报文;

4.服务器收到 ACK 报文之后,三次握手建立完成。

作用:为了确认双方的接收与发送能力是否正常。

第一次握手:客户端发送网络包,服务端收到了。这样服务端就能得出结论:客户端的发送能力、服务端的接收能力是正常的。

第二次握手:服务端发包,客户端收到了。这样客户端就能得出结论:服务端的接收、发送能力,客户端的接收、发送能力是正常的。不过此时服务器并不能确认客户端的接收能力是否正常。

第三次握手:客户端发包,服务端收到了。这样服务端就能得出结论:客户端的接收、发送能力正常,服务器自己的发送、接收能力也正常。

因此,需要三次握手才能确认双方的接收与发送能力是否正常。

 

三次握手的作用

     三次握手的作用也是有好多的,多记住几个,保证不亏。例如:
      1、确认双方的接受能力、发送能力是否正常。
      2、指定自己的初始化序列号,为后面的可靠传送做准备。
      3、如果是 https 协议的话,三次握手这个过程,还会进行数字证书的验证以及加密密钥的生成到。

TCP四次挥手:

1、第一次挥手:客户端发送一个 FIN 报文,报文中会指定一个序列号。此时客户端处于FIN_WAIT1状态。

2、第二次握手:服务端收到 FIN 之后,会发送 ACK 报文,且把客户端的序列号值 + 1 作为 ACK 报文的序列号值,表明已经收到客户端的报文了,此时服务端处于 CLOSE_WAIT状态。

3、第三次挥手:如果服务端也想断开连接了,和客户端的第一次挥手一样,发给 FIN 报文,且指定一个序列号。此时服务端处于 LAST_ACK 的状态。

4、第四次挥手:客户端收到 FIN 之后,一样发送一个 ACK 报文作为应答,且把服务端的序列号值 + 1 作为自己 ACK 报文的序列号值,此时客户端处于 TIME_WAIT 状态。需要过一阵子以确保服务端收到自己的 ACK 报文之后才会进入 CLOSED 状态

5、服务端收到 ACK 报文之后,就处于关闭连接了,处于 CLOSED 状态。

 

标签:面试题,ACK,报文,tcp,发送,四次,握手,服务端,客户端
From: https://www.cnblogs.com/moonshery/p/17101543.html

相关文章

  • java面试题(四)
    1.java面试题(四)1.1cap理论,base理论1.Consistency(一致性):即更新操作成功并返回客户端后,所有节点在同一时间的数据完全一致。对于客户端来说,一致性指的是并发访问......
  • 参加的面试题
    一、mysql优化的方法1、选择最合适的字段类型   Mysql是一种关系型数据库,表越小询也就越快。因此,在创建表将表中字段的宽度舍得尽可能小。2、尽量把字段设置为NOTNU......
  • #yyds干货盘点# LeetCode面试题:整数反转
    1.简述:给你一个32位的有符号整数x,返回将x中的数字部分反转后的结果。如果反转后整数超过32位的有符号整数的范围 [−231, 231 −1],就返回0。假设环境不允许......
  • http - 三次握手四次挥手
     通俗地讲:三次握手第一次握手:客户端要和服务端进行通信,首先要告知服务端一声,遂发出一个SYN=1的连接请求信号,”服务端,我想给你发送数据”。第二次握手:当服务端接收到......
  • 滴滴前端一面必会vue面试题(附答案)
    实现双向绑定我们还是以Vue为例,先来看看Vue中的双向绑定流程是什么的newVue()首先执行初始化,对data执行响应化处理,这个过程发生Observe中同时对模板执行编译,找到其中......
  • 前端vue面试题
    父子组件生命周期调用顺序(简单)渲染顺序:先父后子,完成顺序:先子后父更新顺序:父更新导致子更新,子更新完成后父销毁顺序:先父后子,完成顺序:先子后父diff算法时间复杂度:个树......
  • 阿里前端一面必会react面试题总结
    React中怎么检验props?验证props的目的是什么?React为我们提供了PropTypes以供验证使用。当我们向Props传入的数据无效(向Props传入的数据类型和验证的数据类型不符)就会在控......
  • 前端面试题学习-个人总结笔记 Day 5 JS
    前端面试题学习-个人总结笔记Day5JS这是看别人总结的基础上再度总结的,总结的链接如下链接1.前端路由+检测浏览器版本+Polyfill+文件扩展名+Object.is2.e......
  • Redis面试题
    一、Redis是什么?Redis是一个key-value存储系统,它支持存储的value类型相对更多,包括string、list、set、zset(sortedset--有序集合)和hash。这些数据结构都支持push/pop、add......
  • 前端面试题学习-个人总结笔记 Day 4 JS
    前端面试题学习-个人总结笔记Day4JS这是看别人总结的基础上再度总结的,总结的链接如下链接1.对闭包的理解+严格模式+判断对象是否属于某个类+map某个案例2.......