• [网络] 带你了解HTTP到底是什么


    1.HTTP协议是什么?

    HTTP协议是一种超文本传输协议,它是从WEB服务器传输超文本标记语言(HTML)到本地浏览器的传送协议。

    设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。

    我们平时输入 URL 来进行搜索的时候,一般开头就会有 http 或者 https。

    常见的HTTP(超文本传输协议,默认端口80)、HTTPS(默认端口443)、SMTP(传邮件.默认端口25)、FTP(传文件,默认端口21)、Telnet(远程登录,默认端口23)

    2.HTTP的原理

    HTTP 协议工作于客户端-服务端架构上。

    浏览器作为 HTTP 客户端通过 URL 向 HTTP 服务端即 WEB 服务器发送所有请求

    Web 服务器根据接收到的请求后,向客户端发送响应信息。

    HTTP 默认端口号为 80,但是你也可以改为 8080 或者其他端口。

    访问百度: 

    3.HTTP版本

    HTTP0.9:只支持GET这一个请求方式,只能访问HTML格式的资源。没有 Header 等描述数据的信息。服务器在发送数据完毕后,就关闭 TCP 连接。

    HTTP1.0:增加了 POST、PUT请求。一次请求创建一次连接获得一个Web资源,响应后就会断开连接,下一个请求需要再次建立 TCP 连接。(三次握手)因此效率很低。默认短链接

    HTTP1.1(目前主流):一次请求创建一次连接,可以允许多个HTTP请求,获得多个web资源,默认长连接。

    持久连接,即 TCP 连接默认不关闭,可以被多个请求复用,提高了请求性能。

    管道机制(pipeline),即在同一个 TCP 连接里面,客户端可以同时发送多个请求。例如,浏览器同时发出 A 请求和 B 请求,但是服务器还是按照顺序,先回应 A 请求,完成后再回应 B 请求。

    HTTP2.0:HTTP2 主要解决了传输性能的问题。增加双工模式,不仅客户端能够同时发送多个请求,服务端也能同时处理多个请求,是一个并行的效率。 HTTP2 中,对头信息进行了压缩,减少了对带宽的占用。

    4.HTTP 报文格式

    请求端(客户端)的 HTTP 报文叫做请求报文,响应端(服务器端)的叫做响应报文。

    客户端请求消息:

    请求报文是由请求行(请求方法+请求 URL+协议版本)、请求头部、空行、请求主体四部分组成

    1. GET/sample.jspHTTP/1.1 请求行
    2. Accept:image/gif.image/jpeg, 请求头部
    3. Accept-Language:zh-cn
    4. Connection:Keep-Alive
    5. Host:localhost
    6. User-Agent:Mozila/4.0(compatible;MSIE5.01;Window NT5.0)
    7. Accept-Encoding:gzip,deflate
    8. username=jinqiao&password=1234 请求主体

    服务端响应消息:

    HTTP响应也由四个部分组成,分别是:状态行、响应首部、空行和响应主体。

    1. HTTP/1.1 200 OK 状态行
    2. Server:Apache Tomcat/5.0.12 响应首部
    3. Date:Mon,6Oct2003 13:23:42 GMT
    4. Content-Length:112
    5. <html> 响应主体
    6. <head>
    7. <title>HTTP响应示例<title>
    8. head>
    9. <body>
    10. Hello HTTP!
    11. body>
    12. html>

     5.HTTP方法

    序号方法描述
    1GET请求指定的页面信息,并返回实体主体。
    2HEAD类似于 GET 请求,只不过返回的响应中没有具体的内容,用于获取报头
    3POST向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST 请求可能会导致新的资源的建立和/或已有资源的修改。
    4PUT从客户端向服务器传送的数据取代指定的文档的内容。
    5DELETE请求服务器删除指定的页面。
    6CONNECTHTTP/1.1 协议中预留给能够将连接改为管道方式的代理服务器。
    7OPTIONS允许客户端查看服务器的性能。
    8TRACE回显服务器收到的请求,主要用于测试或诊断。
    9PATCH是对 PUT 方法的补充,用来对已知资源进行局部更新 。

    HTTP1.0 定义了三种请求方法: GET, POST 和 HEAD 方法。

    HTTP1.1 新增了六种请求方法:OPTIONS、PUT、PATCH、DELETE、TRACE 和 CONNECT 方法。

    可以把PUT、DELETE、POST、GET理解为客户端对服务端的增删改查

    • PUT:上传文件,向服务器添加数据,可以看作增
    • DELETE:删除文件
    • POST:传输数据,向服务器提交数据,对服务器数据进行更新
    • GET:获取资源,查询服务器资源

    6.HTTP的长连接和短链接

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

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

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

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

    7.HTTP 响应头信息

    应答头说明
    Allow

    服务器支持哪些请求方法(如GET、POST等)。

    Content-Encoding

    文档的编码(Encode)方法。只有在解码之后才可以得到Content-Type头指定的内容类型。

    Content-Length

    表示内容长度。只有当浏览器使用持久HTTP连接时才需要这个数据。

    Content-Type

    表示后面的文档属于什么MIME类型。Servlet默认为text/plain,但通常需要显式地指定为text/html。

    Date

    当前的GMT时间。

    Expires

    应该在什么时候认为文档已经过期,从而不再缓存它?

    Last-Modified

    文档的最后改动时间。

    Location

    表示客户应当到哪里去提取文档。

    Refresh

    表示浏览器应该在多少时间之后刷新文档,以秒计。
    Refresh头不属于HTTP 1.1正式规范的一部分,而是一个扩展,但Netscape和IE都支持它。

    Server

    服务器名字。Servlet一般不设置这个值,而是由Web服务器自己设置。

    Set-Cookie

    设置和页面关联的Cookie。

    WWW-Authenticate

    客户应该在Authorization头中提供什么类型的授权信息?在包含401(Unauthorized)状态行的应答中这个头是必需的。
    注意Servlet一般不进行这方面的处理,而是让Web服务器的专门机制来控制受密码保护页面的访问(例如.htaccess)。

    8.HTTP 状态码

    •  200:服务器已经成功处理了请求
    • 301:(永久移动)请求的网页已经永久移动到新的位置。服务器返回此响应时,会自动将请求者转到新的位置
    • 302:(临时移动)服务器目前从不同位置的网页响应请求,但请求者应该继续使用原有位置来进行以后的请求。
    • 400:客户端请求有语法错误,不能被服务器所理解
    • 403:服务器收到请求,但是拒绝访问对应资源
    • 404:服务器找不到请求网页(未找到)
    • 500:服务器遇到错误,无法完成请求(服务器内部错误)。

    9.HTTP常见Header

    1. Host:客户端告知服务器,所请求的资源在哪儿
    2. Connection:默认值是keep-alive,要求服务器不要关闭TCP连 接,close()表示明确要求关闭连接。
    3. Accept-Encoding:说明自己可以接收的压缩方式
    4. User-Agent:声明用户的操作系统和浏览器版本信息
    5. Content-Type:数据类型,常见的有html、 image/jpeg,image/png,video/mp4,application/json,zip
    6. Content-Length:Body的长度,请求和响应头都可以使用
    7. Location:搭配3**状态码使用,告诉客户端接下来要去哪里访问
    8. Cookie:用于在客户端存储少量信息.通常用于实现会话的功能
    9. Set-Cookie:服务器向客户端设置Cookie;
    10. Referer: 当前页面是从哪个页面跳转过来的

    10.HTTP 三点注意事项:

    • HTTP 是无连接:无连接的含义是限制每次连接只处理一个请求,服务器处理完客户的请求,并收到客户的应答后,即断开连接,采用这种方式可以节省传输时间。

    • HTTP 是媒体独立的:这意味着,只要客户端和服务器知道如何处理的数据内容,任何类型的数据都可以通过HTTP发送,客户端以及服务器指定使用适合的 MIME-type 内容类型。

    • HTTP 是无状态:HTTP 协议是无状态协议,无状态是指协议对于事务处理没有记忆能力,缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大,另一方面,在服务器不需要先前信息时它的应答就较快。

    11.HTTP和HTTPS的区别

    HTTPHTTPS
    端口80443
    安全性无加密,安全性较差有加密机制,安全性较高
    资源消耗较少由于加密处理,资源消耗更多
    是否需要证书不需要需要
    协议运行在TCP协议之上运行在SSL协议之上,SSL运行在TCP协议之上
  • 相关阅读:
    java毕业设计下载含论文+PPT+源码等]javaweb企业财务|记账|账单管理系统设计与实现
    【lesson12】理解进程地址空间
    SQL注入漏洞
    GEO生信数据挖掘(九)WGCNA分析
    【kohya】训练自己的LoRA模型
    SaaSpace:9种最佳免费时间管理软件
    如何给视频添加srt字幕
    一个项目经理最大的危机,就是……
    Word插件开发
    nginx系列第二篇:nginx源码调试
  • 原文地址:https://blog.csdn.net/weixin_61567666/article/details/126750413