• Java面试连击发问:Http是短连接还是长连接该怎么回答?


    考题再现

    最近很多小伙伴在跳槽面试,遇到了各种奇奇怪怪的问题。比如健哥的一个学生,在面试时被面试官问到如下问题:我们做web开发离不开http协议, 那你了解http协议吗?

    这时大家一般都是回答了解。

    然后面试官会接着对这个问题展开三连击,“Http协议是长连接还是短连接? 具体如何实现的?......”

    接下来有些小伙伴就开始支支吾吾答不出来了,然后这次面试就over了........

    那如果你也遇到了这些问题,该怎么回答呢?今天健哥就在这里为大家来统一讲解这些问题该怎么回答,带你轻松破解面试官的无情三连!

    题目剖析

    其实面试就是考试,我们要摸清对方的考察意图!如果面试官是千锋健哥的话,那么我想考的就是看看候选人对计算机网络的了解程度,网络基础是否扎实,本题的主要考点如下:

    • Http协议处于OSI网络模型的哪一层?

    • Http协议底层是如何实现的?

    • 位于传输层用的是什么协议?

    • Http协议到底是长连接还是短连接?

    • TCP协议的三次握手和四次挥手过程?

    . 分析破解

    针对上面健哥为大家抽离出的考察要点,接下来我就为大家针对上述考点一一分析破解,下面就是这个问题的解题思路与过程:

    3.1HTTP协议与TCP/IP协议的关系

    所谓的HTTP协议的长连接和短连接,本质上其实是TCP协议的长连接和短连接!我们知道,HTTP协议属于应用层协议,在传输层使用TCP协议,在网络层使用IP协议

    IP协议主要解决网络路由和寻址问题,TCP协议主要解决如何在IP层之上创建可靠的传递数据包,使得在网络上的另一端可以收到发送端发出的所有数据包,并且顺序还要与发出的顺序一致。所以TCP必须具有可靠,面向连接的特点。

    3.2 如何理解HTTP协议是无状态的

    很多人都知道HTTP协议是无状态的,这里的无状态,指的是协议对于事务处理没有记忆能力,服务器不知道客户端是什么状态。也就是说,这次打开一个服务器上的网页,和你之前打开这个服务器上的网页之间没有任何联系。

    HTTP虽然是一个无状态的面向连接的协议,但无状态不代表HTTP不能保持TCP连接,更不能代表HTTP使用的是UDP协议(无连接)。

    3.3 什么是长连接、短连接?

    那我们前面说的长连接、短连接又是什么呢?

    • HTTP/1.0中,默认使用的其实是短连接。也就是说,浏览器和服务器每进行一次HTTP操作,就要建立一次连接,但任务结束后就会中断连接。如果客户端浏览器访问的某个HTML或其他类型的 Web页中包含有其他的Web资源,如JavaScript文件、图像文件、CSS文件等;当浏览器每遇到这样一个Web资源,就会建立一个HTTP会话;

    • 从HTTP/1.1起,默认使用长连接,用以保持会话的连接特性。使用长连接的HTTP协议,会在响应头中加入这行代码:Connection:keep-alive;

    • 在使用长连接的情况下,当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的 TCP连接不会关闭,如果客户端再次访问这个服务器上的网页,会继续使用这一条已经建立好的连接。但Keep-Alive也不会永久保持连接,它有一个保持时间,可以在不同的服务器软件(如Apache)中设定这个时间。我们要注意,实现长连接要客户端和服务端都支持长连接。

    3.4 HTTP协议的长连接和短连接,实质上是TCP协议的长连接和短连接

    我们所谓的HTTP协议的长连接和短连接,实质上是指TCP协议的长连接和短连接!所以这里健哥要跟大家再唠唠TCP连接是怎么回事。

    TCP连接当网络通信时采用TCP协议时,在真正的读写操作之前,server与client之间必须建立一个连接。当读写操作完成后,双方不再需要这个连接时,它们就可以释放这个连接,而连接的建立是需要进行3次握手的,释放则需要进行4次挥手,所以每个连接的建立都是需要消耗资源和时间的。

    3.5 TCP三次握手四次挥手过程

    既然上面我们说到了三次握手和四次挥手,健哥就再扩展一下说说这两个操作的实现过程。

    三次握手:先向HTTP服务器发起TCP的确认请求

    • 客户端 --> SYN --> 服务器

    • 服务器 --> SYN+ACK --->客户端

    • 客户端 --> ACK --> 服务器

    四次挥手:客户端要和服务器断开TCP连接

    • 客户端 --> FIN +ACK ---> 服务器

    • 服务器 --> FIN ---> 客户端

    • 服务器 --> ACK --> 客户端

    • 客户端 --> ACK ---> 服务器

    . 总结

    经过上面的分析,最后健哥来给大家总结下这个问题的完整答案 :

    • Http协议到底是长连接还是短连接,要看HTTP协议的版本,Http1.0中默认是短连接,Http1.1中默认是长连接;

    • Http协议位于OSI网络模型的应用层;

    • Http协议底层在传输层上使用的是TCP协议,在网络层使用的是IP协议;

    • TCP协议具有三次握手和四次挥手的过程,传输数据安全稳定。

    现在你知道这个问题该怎么回答了吗?

  • 相关阅读:
    Spring Framework RCE 漏洞分析 (CVE-2022-22965)
    C语言题收录(七)
    黑白图片和黑白图片上色系统毕业设计,AI黑背图像上色系统设计与实现,AI黑白照片上色系统论文毕设作品参考
    基于nbiot的矿车追踪定位系统(论文+源码)
    Vue2利用创建a标签实现下载本地静态文件到本地电脑上的功能
    JavaScript Web APIs第五天笔记
    【数据结构与算法(C语言)】离散事件模拟- 单链表和队列的混合实际应用
    c++学习笔记
    卷积神经网络 图像分割,卷积神经网络 图像识别
    3.2-Docker Image概述
  • 原文地址:https://blog.csdn.net/finally_vince/article/details/126647283