当前位置:网站首页>什么是三次握手和四次挥手(清晰易懂)
什么是三次握手和四次挥手(清晰易懂)
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包并刷新超时等待时间。

边栏推荐
- 3 模块二:科研工具使用
- 剑指offer_抽象建模能力
- 元宇宙社交应用,靠什么吸引用户「为爱发电」?
- How to switch Green Shield encryption to IP-Guard encryption smoothly
- Network Skill Tree
- 交换机和路由器技术-34-动态NAT
- Weekly recommended short video: your commonly used Polaroid, its predecessor turned out to be like this!
- [FPGA tutorial case 49] Control case 1 - FPGA-based PID controller verilog implementation
- Switch and Router Technology - 32 - Named ACL
- 走出迷宫的最短路径
猜你喜欢

交换机和路由器技术-33-静态NAT
![[E-commerce operation] How to formulate a social media marketing strategy?](/img/fe/fc1270e608abbce02f83fcb712e562.jpg)
[E-commerce operation] How to formulate a social media marketing strategy?

每周推荐短视频:你常用的拍立淘,它的前身原来是这样的!

论文笔记:Bag of Tricks for Long-Tailed Visual Recognition with Deep Convolutional Neural Networks

Use Adobe genuine software for prostitution to reduce the slow employment and non-employment of fresh graduates

Merkel Studio--OpenEuler Training Notes (1)

How to use svg-icon (svg-sprite-loader plugin)

交换机和路由器技术-28-OSPF的NSSA区域

Switch and Router Technology - 28 - NSSA Areas for OSPF

Switch and Router Technology-33-Static NAT
随机推荐
交换机和路由器技术-33-静态NAT
交换机和路由器技术-26-OSPF末梢区域配置
Let's talk programming languages together
C语言:实用调试技巧
prometheus:(二)监控概述(你永远逃不出我的手掌哈哈)
嵌入式分享合集33
【FPGA教程案例49】控制案例1——基于FPGA的PID控制器verilog实现
Optimization is a kind of habit low starting point is the "standing near the critical"
MFC 进程间通信(共享内存)
走出迷宫的最短路径
CAD2020 打开错误报告 e06d7363h Exception at 13644F69h
C语言题解:谁是凶手!
网络技能树
交换机和路由器技术-29-OSPF虚链路
In the closing pages/uninstall (unload) sends a request to the server before the document
send_sig: kernel execution flow
ERROR: Could not install packages due to an OSError: [Errno 2] No such file or directory: '/data/xxxx
2.2 user manual] [QNX Hypervisor 10.15 vdev timer8254
2022煤矿瓦斯检查考试题模拟考试题库及答案
Project Practice Lecture 27: Application of Status Mode in Duplicate Brands