从ssh、http、https看三次握手和四次挥手

本文通过分析TCP的三次握手和四次挥手,探讨了SSH、HTTP及HTTPS的连接流程。在TCP连接中,半连接队列和全连接队列满可能会引发问题,解决策略包括调整系统参数。同时,由于TCP的延时确认机制,导致了某些情况下挥手次数的变化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考文章:淘宝二面,面试官居然把TCP三次握手问的这么详细-面包板社区

TCP 半连接队列和全连接队列满了会发生什么?又该如何应对? - 小林coding - 博客园

三次握手、四次挥手图示:

SSH:

三次握手:1、2、3

 三次挥手:106、107、108

4次挥手:

HTTP三次握手、四次挥手:

 

HTTPS三次握手、三次挥手:

三次握手:


三次挥手:(TCP延时确认机制导致)

1.客户端FIN :Seq = a , Ack = b #我想断开连接
2.服务端FIN :Seq = b, Ack = a+1 #收到,断开吧。我也想断开连接
3.客户端ACK:Seq = a+1, Ack = b+1 #收到,断开吧

三次挥手:

HTTPS三次握手、四次挥手:

四次挥手:

1.客户端FIN :Seq = a , Ack = b #我想断开连接

2.服务端ACK:  Seq = b , Ack = a+1 #收到确认
3.服务端FIN :Seq = b, Ack = a+1 #收到,断开吧。我也想断开连接
4.客户端ACK:Seq = a+1, Ack = b+1 #收到,断开吧

1. 计算机网络各层有哪些协议? 计算机网络通常分为七层,自上而下分别是应用层、表示层、会话层、传输层、网络层、数据链路层物理层。各层的协议如下: - 应用层:HTTP、FTP、SMTP、DNS、DHCP等。 - 表示层:JPEG、MPEG、ASCII等。 - 会话层:RPC、SSH、TLS等。 - 传输层:TCP、UDP等。 - 网络层:IP、ICMP、ARP等。 - 数据链路层:PPP、Ethernet、WLAN等。 - 物理层:IEEE 802.3、IEEE 802.11等。 2. TCPUDP协议的区别? TCPUDP都是传输层协议,但是它们有以下区别: - TCP是面向连接的协议,UDP是无连接的协议。 - TCP提供可靠的数据传输,UDP提供不可靠的数据传输。 - TCP保证数据顺序,UDP不保证数据顺序。 - TCP有流量控制拥塞控制等机制,UDP没有这些机制。 3. TCP为什么需要三次握手四次挥手? TCP采用三次握手来建立连接,四次挥手来断开连接。三次握手是为了确保双方的通信能力可靠性,具体过程如下: - 第一次握手:客户端向服务器发送请求,请求建立连接。 - 第二次握手:服务器接收到请求,并向客户端发送同意连接的信号。 - 第三次握手:客户端接收到服务器的信号,向服务器发送确认信号。 四次挥手是为了彻底断开连接,具体过程如下: - 第一次挥手:客户端向服务器发送断开连接的请求。 - 第二次挥手:服务器接收到请求,并向客户端发送确认信号。 - 第三次挥手:服务器向客户端发送断开连接的请求。 - 第四次挥手:客户端接收到请求,并向服务器发送确认信号。 4. HTTPHTTPS协议的区别? HTTPHTTPS都是应用层协议,但是它们有以下区别: - HTTP是明文传输,HTTPS是加密传输。 - HTTP不提供身份验证数据完整性保护,HTTPS提供身份验证数据完整性保护。 - HTTP不需要证书,HTTPS需要证书。 5. 计算机网络状态码都有哪些? 计算机网络状态码表示服务器对客户端请求的响应状态,常见的状态码有以下几种: - 1xx:信息类,表示服务器已接收到请求,正在处理。 - 2xx:成功类,表示服务器已成功处理请求。 - 3xx:重定向类,表示客户端需要采取进一步的操作才能完成请求。 - 4xx:客户端错误类,表示客户端的请求有误。 - 5xx:服务器错误类,表示服务器在处理请求时发生了错误。 6. cookiesession的区别? cookiesession都是用于记录客户端状态的机制,但是它们有以下区别: - cookie是保存在客户端的,session是保存在服务器端的。 - cookie可以设置过期时间,session默认关闭浏览器就失效。 - cookie的大小有限制,session的大小没有限制。 - cookie不安全,可以被篡改,session相对安全。 7. 从浏览器输入url发生了什么? 从浏览器输入url,大致流程如下: - DNS解析:将域名解析成IP地址。 - 建立TCP连接:浏览器向服务器发起TCP连接请求。 - 发送HTTP请求:浏览器向服务器发送HTTP请求。 - 服务器处理请求并返回HTTP响应:服务器接收到请求后,处理并返回HTTP响应。 - 关闭TCP连接:浏览器接收到响应后,关闭TCP连接。 8. MySQL的drop、delete与truncate的区别? drop、deletetruncate都是用于删除数据的命令,但是它们有以下区别: - drop用于删除整个表,包括表结构数据。 - delete用于删除表中的数据,但是不删除表结构。 - truncate用于删除表中的数据,但是不删除表结构,且速度比delete更快。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值