说一下什么是三次握手和四次挥手
一、三次握手
(1)第一次握手就是客户端请求服务端连接,发送SYN报文置为1,并加上初始化序列号seq
(2)当服务端收到请求后,会回复应答报文ACK置为1,并发送属于服务端的SYN连接请求,连接客户端
(3)客户端收到后,代表服务端连接无误,随之回复应答报文ACK置为1,seq序列号为收到序列号+1
补充:报文中就包含了初始序列号,不是发报文还发序列号;
回复报文的时候,将SYN报文字段置为1,而且产生ACK的验证字段(验证就是客户端发的那个seq+1)
客户端第三次收到后,没啥问题,凑合
二、四次挥手
(1)第一次就是客户端请求断开连接,发送FIN报文
(2)第二次就是服务端收到请求,回复应答报文ACK置为1,并在收到序列号+1,进行恢复
(3)第三次服务端处理完数据请求,发送FIN报文,请求与客户端断开连接
(4)第四次客户端收到FIN报文后,说明断开请求无误,回复应答报文ACK,完成双向请求的断开
三、主动解释为什么需要四次挥手
(1)在断开请求时,我们无法明确是否存在数据传输,不像三次握手,单纯建立连接,并无数据传输,所以,我们需要服务端自行判断自身状态,如果没有数据传输就返回FIN报文,这也是保证数据传输的保证。
补充:无误
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了