当前位置:网站首页>什么是三次握手和四次挥手(清晰易懂)
什么是三次握手和四次挥手(清晰易懂)
2022-08-11 05:03:00 【一起去飞~】
很多小伙伴在刚开始学习网络课程的时候不明白TCP是如何进行可靠的传输的(也包括我哈哈),现在我就来把它讲明白,这也是一道经常会问到的面试题,相信你们看了之后会有更清晰的认识。
下文几个英文缩写的意思先解答一下:SYN(同步)、ACK(确认)、FIN(finish完成)。

三次握手:
这是建立客户端和服务端连接的过程:当客户端向服务端发起连接时,会先发一包连接请求数据过去询问一下,能否与你建立连接呀,这个数据包我们称为SYN包,如果服务端同意连接,则回复一个SYN+ACK包,客户端收到之后回复一个ACK包,连接建立。因为这个过程发了三包数据,我们称之为三次握手。

面试一:为什么是三次握手而不是两次、四次呢?
这是为了防止已经失效的请求报文,突然有传到了服务器引起错误。
假设采用两次握手建立连接,客户端发送一个SYN包来请求连接,因为某些未知的原因,并没有到达服务器,在中某个网络节点产生了滞留,为了建立连接客户端会重发一个SYN包,这次的数据包正常送达,服务端回复SYN+ACK建立了连接,但第一次数据阻塞的网络节点突然恢复,第一个SYN包又送到服务器,这是服务端会误认为是客户端又发起了一个新的连接,从而在两次握手之后,进入等待数据状态;服务端认为是两个连接,而客户端认为是一个连接,造成了状态不一致。如果在三次握手对的情况下,服务端收不到最后的ACK包,自然不会认为连接建立成功,所以三次握手才能保证网络信道可靠。三次已经够了,就不需要浪费资源,进行第四次握手了。
面试二:为什么需要三次握手?
1.因为三次握手才能保证双方具有接收和发送的能力。
2.避免历史连接。
3.同步双方序列号。
4.避免资源浪费。
四次挥手:
这是发起关闭连接的请求,客户端和服务端都能主动发起关闭请求,假设这里是客户端主动发起关闭请求,这个时候客户端会在报文中开启FIN和ACK两个控制位,FIN就是finish结束的意思,这里也就是要确认要结束会话,此时服务器会先发送ACK来进行确认,此时客户端并没有正式关闭通道,因为服务器那边可能还需要发送其他数据,等服务器端发送完数据之后会再发送一个FIN+ACK来进行最后的确认,最后客户端得到最终的结束确认后会发送一个ACK来进行确认。如果客户端发送最后一个ACK包之后,等待一段时间,如果在这段时间服务端没有接收到最后的ACK包会重发FIN包,客户端也会重新响应这个FIN包,并重发ACK包并刷新超时等待时间。

边栏推荐
- [QNX Hypervisor 2.2用户手册]10.15 vdev timer8254
- About CC Attacks
- 交换机和路由器技术-29-OSPF虚链路
- [QNX Hypervisor 2.2 User Manual] 10.16 vdev virtio-blk
- Switch and Router Technology-34-Dynamic NAT
- 澳大利亚网络空间安全体系建设论析
- 梅克尔工作室--OpenEuler培训笔记(1)
- FPGA engineer interview questions collection 121~130
- 2021年网络规划设计师下午案例题
- [QNX Hypervisor 2.2用户手册]10.16 vdev virtio-blk
猜你喜欢

Switch and Router Technology - 25 - OSPF Multi-Area Configuration

Paper Notes: Bag of Tricks for Long-Tailed Visual Recognition with Deep Convolutional Neural Networks

网络协议1

The use of async (asynchronous) and await

Dry goods: The principle and practice of server network card group technology

绿盾加密如何顺利切换成IP-Guard加密

C statement: data storage

How to switch Green Shield encryption to IP-Guard encryption smoothly

MySQL必知必会(初级篇)

Switches and routers technology - 24 - configure OSPF single area
随机推荐
应用层协议——DNS
Golden Warehouse Database KingbaseGIS User Manual (6.8. Geometry Object Input Function)
Thymeleaf
在 关闭页面/卸载(unload)文档 之前向服务器发送请求
Prometheus :(一)基本概念
如何缓解压力、拒绝内耗【1】
How to use svg-icon (svg-sprite-loader plugin)
用白嫖的Adobe正版软件,减少应届毕业生的慢就业、不就业等现象
金仓数据库 KingbaseGIS 使用手册(6.8. 几何对象输入函数)
MQ框架应用比较
交换机和路由器技术-36-端口镜像
我的LaTeX入门
ALSA音频架构 -- aplay播放流程分析
交换机和路由器技术-30-标准ACL
Zabbix builds enterprise-level monitoring and alarm platform
Unity WebGL RuntimeError: integer overflow
How IP-Guard prohibits running U disk programs
Resize() usage row pit in vector
Sub-database sub-table ShardingSphere-JDBC notes arrangement
MFC 进程间通信(共享内存)