了解HTTP协议,让你的网站速度更快

这篇具有很好参考价值的文章主要介绍了了解HTTP协议,让你的网站速度更快。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

了解HTTP协议,让你的网站速度更快

本文向大家分享http协议相关基础知识,了解http的请求方法,相关http状态码,及http报文的介绍,希望对大家在工作上能有所帮助。


一.HTTP协议介绍

HTTP协议,全称HyperText Transfer Protocol,中文名为超文本传输协议,是互联网中最常用的一种网络协议。HTTP的重要应用之一是WWW服务。设计HTTP协议最初的目的就是提供一种发布和接收HTML(一种页面标记语言)页面的方法。

HTTP协议是互联网上常用的通信协议之一。它有很多的应用,但最流行的就是用于Web浏览器和Web服务器之间的通信,即WWW应用或称Web应用。

www,全称World Wide Web,常称为Web,中文译为“万维网”。它是目前互联网上最受用户欢迎的信息服务形式。HTTP协议的WWW服务应用的默认端口为80,另外一个加密的WWW服务应用https的默认端口为443,主要用于网银、支付等和钱相关的业务。当今,HTTP服务、WWW服务、Web服务三者的概念已经混淆了,在本书中也是为相同,都是指当下最常见的网站服务应用。

二.HTTP协议版本

HTTP协议从诞生之初到现在已经经历了若干个版本,其中最主要的版本为HTTP/1.0、HTTP/1.1。HTTP/1.0是第一个得到广泛使用的版本,而HTTP/1.1为当前使用的主流版本。

1. HTTP/1.0简介

HTTP/1.0是第一个的得到广泛使用的HTTP版本。HTTP/1.0在HTTP/0.9的基础上增加了HTTP请求头,可支持更多的请求方法,并且能对多媒体对象进行处理。HTTP/1.0使得包含生动图片的web页面和交互式表格成为可能,而正是这些页面和表格促使互联网为人们广泛地接受。HTTP/1.0规定浏览器与服务器只保持短暂的连接,浏览器的每次请求都需要与服务器建立一个TCP连接,服务器完成请求处理后即断开TCP连接,服务器不跟踪每个客户,也不记录过去的请求。

2. HTTP/1.1简介

HTTP/1.1的重点是修复HTTP设计中的缺陷,从扩展性,缓存处理,带宽优化,持久连接,host头,错误通知,消息传递,内容协商等多个方面做了相关改进。HTTP/1.1是当前互联网主流的HTTP版本。

在连接方面,HTTP/1.1支持持久连接,在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和时间延迟。

在请求头方面,HTTP/1.1增加了更多的请求头和响应头信息,用以增强HTTP功能。例如:host主机头功能,可以让Web浏览器使用主机头名来明确表示要访问服务器上的哪个WEB站点,这样就可以使用Web服务器在同一个IP地址和端口号上配置多个虚拟Web站点。

HTTP/1.1的持续连接,也需要增加新的请求头来帮助实现,例如,Connection请求头的值为Keep-Alive时,表示客户端通知服务器返回本次请求结果后保持连接;Connection请求头的值为close时,表示客户端通知服务器返回本次请求结果后关闭连接。HTTP/1.1还提供了与身份认证,状态管理和Cache缓存等机制相关的请求头和响应头等。

2.1 HTTP请求方法

在HTTP通信中,每个HTTP请求报文都包含一个方法。用以告诉Web服务器端需要执行哪些具体的动作,这些动作包括:获取指定Web页面、提交内容到服务器、删除服务器上资源文件等,这些HTTP请求报文中包含的方法被称为HTTP请求方法。

常用的HTTP请求方法

HTTP方法

作用描述

GET

客户端请求指定资源信息,服务器返回指定资源

HEAD

只请求响应报文中的HTTP首部

POST

将客户端的数据提交到服务器,例:注册表单

PUT

用从客户端向服务器传送的数据取代指定的文档内容。

DELETE

请求服务器删除Request-URI所表示的资源。

MOVE

请求服务器将指定的页面移至另一个网络地址。

2.2 HTTP状态码

1. HTTP状态码介绍

HTTP状态码(HTTP Status Code)是用来表示Web服务器响应HTTP请求状态的数字代码。每当Web客户端向Web服务器发送一个HTTP请求时,Web服务器都会返回一个状态响应代码。这个状态码是一个三位数字代码,作用是告知Web客户端此次请求是否成功,或者是否要采取其他的动作方式。

HTTP协议1.1版本中的状态码可以分为五大类。

不同范围的状态码及其对应的作用

状态码范围

作用描述

100 - 199

用于指定客户端相应的某些动作

200 - 299

用于表示请求成功

300 - 399

用于已经移动的文件,并且常被包含在定位头信息中指定新的地址信息

400 - 499

用于指出客户端的错误

500 - 599

用于指出服务端的错误

HTTP响应的状态码种类很多,但是在实际工作场景中,经常遇到的状态码却不多,生产场景下常见的重要状态码及对应的作用

生产场景常见的状态码及其对应的作用

状态代码

详细描述说明

200 - OK

服务器成功返回网页,这是成功的HTTP请求返回的标准状态码

301 - Moved Permanently

永久跳转,所请求的网页将永久跳转到被设定的新位置,

401 - Forbidden

禁止访问,虽然这个请求是合法的,但是服务器端因为匹配了预先设置的规则而拒绝响应客户端的请求,此类问题一般为服务器或服务权限配置不当所致。

404 - Not Found

服务器找不到客户端请求的指定页面,可能是客户端请求了服务器上不存在的资源所致。

500 - Internal Server Error

内部服务器错误,服务器遇到了意料不到的情况,不能完成客户的请求。

这是一个较为笼统的报错,一般为服务器的设置或内部程序问题导致。

例如:SELinux开启,而又没有为HTTP设置规则许可,客户端访问就是500

502 - Bad Gateway(重点)

坏的网关,一般是代理服务器请求后端服务时,后端服务不可用或没有完成响应网关服务器。这通常为反向代理服务器下面的节点出问题所致。

反向代理服务器无法与后面的web服务节点服务器建立联系

503 - Service Unavailable

服务当前不可用,可能是服务器超载或停机维护导致的,或者是反向代理服务器后面没有可以提供服务的节点

504 - Gateway Timeout

网关超时,一般是网关代理服务器请求后端服务时,后端服务没有在特定的时间内完成处理请求。数是服务器过载导致没有在指定的时间内返回数据给前端代理服务器。

2. HTTP状态码的命令行查看

可以通过curl命令(附带相关参数)在Linux命令行查看HTTP相应的数字状态码命令如下:

[root@localhost ~]# curl -I www.baidu.com
HTTP/1.1 200 OK		<- 200即为状态码
Server: openresty/1.13.6.1
Date: Thu, 22 Dec 2022 06:37:17 GMT
Content-Type: text/html;charset=utf-8
Content-Length: 5537
Connection: keep-alive
Cache-Control: private
Content-Encoding: gzip
X-AspNet-Version: 4.0.30319
X-Frame-Options: SAMEORIGIN
X-Content-Type-Options: nosniff
X-XSS-Protection: 1;mode=block
X-Powered-By: ASP.NET
[root@localhost ~]# curl -I -s -w "%{http_code}\n"-o /dev/null www.baidu.com
200						<- 200即为状态码

2.2.1 HTTP报文

HTTP报文中有很多行内容,这些含的字段都是由一些ASCII码串组成,但各个字段的长度是不同的。HTTP报文可分为两种,一种是从Web客户端发往Web服务器的HTTP报文,称为请求报文(Request Message)。另外一种是从Web服务器发往Web客户端的报文,称为响应报文(Response Message),HTTP的请求和响应报文的格式类似。

1. HTTP请求报文(Request Message)介绍

HTTP请求报文由请求行、请求头部(header)、空行和请求报文主体几个部分组成。

HTTP请求报文格式说明

报文格式

报文信息

请求行

请求方法URL协议版本

请求头

字段名1:值1

字段名2:值2

......

例如:

Accept:image/gif,image/jpeg

Accept-Language:zh-cn

......

空行

空白无内容

请求报文主体

GET方法没有请求报文主体,POST方法才有

下面对HTTP请求报文的每个部分逐一阐述:

1) 请求行

请求行请求报文的第一行,用来说明客户端想要做什么。内容有请求方法字段、URL字段和HTTP协议版本字段组成,它们之间用空格分隔。下面以GET/index.html HTTP/1.1为例来说明请求报文的起始请求行信息详情

请求报文的起始请求行信息

请求方法字段示例

URL字段示例

HTTP协议版本

GET

/index.html

HTTP/1.1

2) 请求头部

请求头部由关键字/值对组成,每行一对,关键字和值用英文冒号“:”分隔。请求头部的作用是通过客户端把请求的相关信息告诉给服务器。

常见的请求头部信息

请求头信息

Accept:image/gif,image/jpeg

媒体类型

Accept-Language:zh-cn

语言类型

Accept-Encoding:gzip,deflate

支持压缩

User-Agent:Mozilla/4.0(compatible;MSIE6.0;Windows NT;...)

客户端类型

Host:www.baidu.com

主机名

与请求报文相关的最常用的请求头是Content-Type和Content-Length。

3) 空行

最后一个请求头部信息之后是一个空行,通过发送回车符和换行符,通知Web服务器空行以下不会有请求头部的信息了。

4) 请求报文主体

请求报文主体包含了要发送给Web服务器的数据信息。请求报文主体不会应用于HTTP的GET命令方法,而是应用与POST方法。POST方法适用于需要客户填写表单的场合。请求报文的主体信息此处就不再举例了。

2. HTTP响应报文(Response Message)介绍

HTTP响应报文由起始行、响应头部(header)、空行和相应报文主体这几个部分组成,和HTTP请求报文格式类似。

HTTP响应报文的一般格式

报文格式

报文信息

起始行

协议及版本号、数字状态码、状态信息

响应头部

字段名1:值1

字段名2:值2

......

例如:

Content-Type:text/html,charset=utf-8

Content-Language:78

......

空行

空白无内容

响应报文主体

<html>

<head><title>test</title></head>

<body>

123

</body>

</html>

下面对响应报文的每个部分逐一阐述。

1) 起始行

相应报文的起始行也叫状态行,用来说明服务器响应客户端请求的状况。一般为协议及版本号、数字状态码、状态情况。例如:HTTP/1.1 200 OK。

2) 响应头部

和请求报文类似,起始行的后面一般有若干个头部字段。每个头部字段都包含一个名字和一个值,两者之间用冒号分隔。头部结尾也是一个空行结束的。常见的头部信息有:

Content-Type:text/html,charset=utf-8
Content-Language:78
......

3) 空行

最后一个响应头部信息之后是一个空行,通过发送回车符和换行符,通知客户端空行下文无头部信息了。

4) 响应报文主体

响应报文主体中装载了要返回给客户端的数据。这些数据可以是文本,也可以是二进制的(如图片、视频)

2.2.2 HTTP协议原理及重点分析

HTTP协议属于OSI模型中的第七层应用层协议,HTTP协议的重要应用就是WWW服务应用,下面就以WWW服务应用为例介绍HTTP协议的通信原理。以HTTP协议进行通信时,需要有客户端(即终端用户)和服务器端(即Web服务器),在Web客户端向Web服务器发送请求报文之前,先要通过TCP/IP协议在Web客户端和服务端之间建立一个TCP/IP连接,整个HTTP协议请求的工作流程如下:

1) 终端客户在Web浏览器地址栏输入访问地址http://www.baidu.com

2) Web浏览器请求DNS服务器把域名www.baidu.com转换为Web服务器的IP地址,此处的解析过程就是DNS解析的原理流程

3) Web浏览器将端口号(默认80)从访问地址(URL)中解析出来;

4) Web浏览器通过解析后的IP地址及端口号与Web服务器之间建立一条TCP连接;

5) 建立TCP连接后,Web浏览器向Web服务器发送一条HTTP请求报文

6) Web服务器响应并读取浏览器的请求信息,然后返回一条HTTP响应报文

7) Web服务器关闭HTTP连接,关闭TCP连接,Web浏览器显示访问的网站内容到屏幕上。文章来源地址https://www.toymoban.com/news/detail-499237.html

到了这里,关于了解HTTP协议,让你的网站速度更快的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 拓客必备神器:采集工具让你的数据采集更快更准

    企业拓客是指企业通过各种手段,寻找并获取新客户的过程。对于企业来说,拓客是非常重要的一环,可以帮助企业扩大市场份额、提高销售额、增加利润等。但是,拓客过程中存在着一些难点和挑战,例如如何精准定位目标客户、如何获取有效的联系方式等。在这个过程中

    2023年04月26日
    浏览(60)
  • Python在生物信息学中的应用:让你的程序运行得更快

    程序运行太慢,想要提速,但不使用复杂的技术如 C 扩展或 JIT 编译器。 解决方案 程序优化的 第一准则是“不要优化” , 第二准则是“不要优化那些不重要的部分” 。基于这两个原则,如果你的程序运行得很慢,你得先找出影响性能的问题所在。 多数时候我们发现程序把

    2024年02月20日
    浏览(50)
  • HTTP超本文传输协议

    HTTP(HyperText Transfer Protocol)即超文本传输协议,是一种详细规定了浏览器和万维网服务器之间互相通信的规则,它是万维网交换信息的基础,它允许将HTML(超文本标记语言)文档从Web服务器传送到Web浏览器。 HTTP基于TCP/IP通信协议 来传递数据。 HTTP协议工作于客户端-服务端

    2024年02月16日
    浏览(40)
  • 比Aria2更智能更厉害的Aria2 Pro速度更快,全平台覆盖群晖NAS Docker进阶教程-部署全能下载工具,Aria2是目前最强大的全能型下载工具,它支持BT、磁力、HTTP、FTP等下载协议

    比Aria2更智能更厉害的Aria2 Pro速度更快,全平台覆盖群晖NAS Docker进阶教程-部署全能下载工具,Aria2是目前最强大的全能型下载工具,它支持BT、磁力、HTTP、FTP等下载协议。已破/-解线程数限制。本篇为 全套图文详细教程,包含各个部分,主要分为三大块,内容有点长,都是干

    2024年02月19日
    浏览(52)
  • 解决 Win10 Docker Desktop 启动慢的3大方法,让你的容器运行速度飞起!

    在使用 Win10 Docker Desktop 运行容器时,有时会遇到启动很慢的问题。本文将详细介绍这个问题产生的原因,并提供相应的解决方法。通过实例演示,帮助读者更好地解决这个问题。 1. 问题原因分析 Docker Desktop 启动慢的原因主要有以下几个方面: 1.1 硬件配置不足 如果你的硬件

    2024年02月01日
    浏览(61)
  • 30个前端和设计必备网站,让你的工作更轻松!

    当今互联网时代,前端开发和设计领域变化迅速,每天都会有新技术和工具不断涌现。无论你是一名前端工程师还是一名设计师,都需要不断了解最新的前沿技术和工具。下面是30个前端和设计经常会用到的网站,以及每个网站的功能介绍。 链接:https://www.w3schools.com/ W3Scho

    2024年01月16日
    浏览(56)
  • 别人都不知道的“好用”网站,让你的效率飞快

    ✅🎡个人主页:程序猿追 ✅🎡系列专栏:【日常学习上的分享】 ✅🎡目前状态:创建Java学习之路(零基础到就业实战)系列,目前更新到JAVAWEB开发 ✅🎡作者简介:大家好,我是程序猿追,全栈领域新星创作者,算法爱好者,常在作者周榜排名前30,某不知名的 ACMer ✅🎡

    2024年02月10日
    浏览(105)
  • 创意网页模板免费下载,让你的网站与众不同!

    今天给大家带来的网站模板素材,网站类型丰富,包含户外旅行、餐饮、个人网站等等,可以学习和参考其中的布局排版和配色。 ⬇⬇⬇点击获取更多设计资源 https://js.design/community?category=designsource=csdnplan=bbqcsdn772   1、设计公司工作室 相信大家都希望拥有属于自己的个人网

    2024年02月16日
    浏览(125)
  • 【实战教程】ThinkPHP6分页功能轻松实现,让你的网站更高效!

    ThinkPHP是一款非常流行的PHP开发框架,其最新版本ThinkPHP6在性能和易用性方面都得到了很大的改善。分页功能是网页开发中非常常见的功能,而ThinkPHP6也提供了非常方便的分页方法。本文将介绍如何实现ThinkPHP6的分页功能。 一、了解分页功能 在Web应用程序中,当数据集非常庞

    2024年01月21日
    浏览(48)
  • Vue3实现酷炫打字机效果:让你的网站文字动起来

    ✅创作者:陈书予 🎉个人主页:陈书予的个人主页 🍁陈书予的个人社区,欢迎你的加入: 陈书予的社区 🌟专栏地址: 三十天精通 Vue 3

    2024年02月05日
    浏览(62)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包