当前位置:网站首页>三次握手与四次挥手
三次握手与四次挥手
2022-08-11 08:57:00 【学习record】
目录
重要概念
SYN(同步请求信号)
ACK(响应信号)
ACK=1,响应有效
ACK=0,响应无效
ack(确认信号)
seq(序列号)
三次握手
第一次握手:
客户端向服务端发送SYN=1同步请求信号,序列号seq=x;客户端进入SYN_SEND状态(同步请求状态)
第二次握手:
服务端收到客户端的信号后,向客户端发送SYN=1信号,ack=x+1,ACK=1响应,seq=y;服务端状态有LISTEH转为SYN_SEND
第三次握手:
客户端收到信号后,发送SYN=1,seq=x+1,ack=y+1;客户端进入ESTABLISHED状态(连接状态),服务端收到信号后也进入ESTABLISHED状态。
问题1:为什么要三次握手?
答:第一次握手服务端知道客户端有信号发送功能;第二次握手,客户端知道服务端有信号接收和发送能力;第三次握手,服务端自导客户端有信号接收能力。
问题2:为什么是三次握手,不是两次,四次?
答:假设两次握手,客户端向服务端发送同步请求SYN=1,因为信号中断等特殊原因,服务端没有收到信号,一直在LISTEN状态;然后客户端因为网络原因认为数据没有被发送,再次向服务端发送相同的信号,接着服务端收到信号建立连接,但是网络突然恢复,使发送到的第一条信号又发送给服务端,在两次握手后,服务端等待客户端确认,但是客户端认为只发送了一条请求,导致两边的信息不对等,使服务端一直处于等待确认状态。三次握手本质上是解决网络信道不可靠问题。
四次握手则会造成资源浪费,因为三次握手客户端和服务端都可以知道彼此的信号发送和接收能力。
四次挥手
第一次挥手:
客户端向服务端发送FIN信号(结束信号),并且发送一个序列号seq=m ,客户端从ESTABLISHED状态进入FIN_WAIT1状态(等待结束1状态)。
第二次挥手:
服务端收到信号后,向客户端发送响应(ACK=1)、序列号seq=y和确认信号ack=m+1,同时服务端进入CLOSE_WAIT状态(关闭等待状态)。
第三次挥手:
客户端在CLOSE_WAIT(等待关闭状态)时,可以发送数据给客户端。同时服务端向客户端发送结束信号(FIN)、响应(ACK)、序列号(seq=n)和确认信号ack=m+1。服务端进入最后确认状态(LAST_ACK);客户端收到信号后进入FIN_WAIT2(等待结束2状态)
第四次挥手:
客户端收到信号后,向服务端发送响应(ACK),序列号(seq=m+1),确认号(ack=n+1),同时自身进入等待时间(TIME_WAIT),两秒后直接关闭连接;服务端收到信号后关闭连接(CLOSE)。
问题1:为什么客户端需要等待2秒?
答:是为了保证服务端能够收到确认信号。因为假设客户端发送完信号直接关闭连接,一旦信号在传输过程中丢失,则会导致服务端一直在等待关闭状态。但是客户端等待两秒,这是服务端没有收到信号客户端会再次发送信号,保证了信号传输的可靠下性。
边栏推荐
猜你喜欢
Detailed Explanation of the Level 5 Test Center of the Chinese Institute of Electronics (1)-string type string
Rust从入门到精通06-函数
Features of LoRa Chips
Nuget找不到包的问题处理
Audio and video + AI, Zhongguancun Kejin helps a bank explore a new development path | Case study
深度学习100例 —— 卷积神经网络(CNN)识别眼睛状态
无代码平台助力中山医院搭建“智慧化管理体系”,实现智慧医疗
Alibaba Sentinel - Slot chain解析
nodejs worker_threads的事件监听问题
研发了 5 年的时序数据库,到底要解决什么问题?
随机推荐
Linux,Redis中IOException: 远程主机强迫关闭了一个现有的连接。解决方法
mindspore如何实现每50个epoch检测一次psnr
老干妈创始人陶华碧现身直播间,70岁“国民女神”拥抱直播电商
IPQ4019/IPQ4029 support WiFi6 MiniPCIe Module 2T2R 2×2.4GHz 2x5GHz MT7915 MT7975
picker选择器出现object解决办法
Inventorying Four Entry-Level SSL Certificates
YTU 2297: KMP pattern matching three (string)
2022-08-09 顾宇佳 学习笔记
无代码平台助力中山医院搭建“智慧化管理体系”,实现智慧医疗
shell之sed
Getting Started with Kotlin Algorithms Calculating Prime Factors
对比学习系列(三)-----SimCLR
Openlayers Aggregate Graph, Weight Aggregate Graph, and Aggregate Graph Click Events
STM32之串口传输结构体
Redis的客户端连接的可视化管理工具
eureka和consul的区别
中国电子学会五级考点详解(一)-string类型字符串
设置Vagrant创建的虚拟机名称和内存
Continuous Integration/Continuous Deployment (2) Jenkins & SonarQube
Has legal counsel become a tasteless product of law firms?