首页 > 自考资讯 > 高考百科

轻松易懂,一文告诉你什么是http协议?

小条 2024-10-07

一、什么是http?

HTTP 协议是超文本传输协议(HTTP)。

它定义了浏览器(即万维网客户端进程)如何向万维网服务器请求万维网文档,以及服务器如何向浏览器发送文档。从层的角度来看,HTTP 是一种面向事务的应用层协议,是在万维网上可靠地交换文件(包括文本、音频和图像等各种多媒体文件)的关键基础。它还详细规定了客户端浏览器和服务器之间的通信规则。

2.%20抓包

下面是依依君与我们搭建的Web服务器通信时捕获到的所有数据包。%20浏览器中显示的信息如下。

%20%20下面是实际的index.html内容

!DOCTYPE%20%20html%20%20PUBLIC%20%20'-//W3C//DTD%20%20XHTML%20%201.0%20Transitional//EN'%20html%20%20xmlns='http://www.w3.org/1999/xhtml'headmeta%20%20http-equiv='Content-Type'%20content='text/html;%20charset=utf-8'%20/title-Linux/title/headbody%20%20divalign='center'%20表宽度='900'%20border='0'%20trtd%20%20form%20%20onsubmit='return%20%20isValidate(myform)'%20action='cgi-bin/login%20%20.cgi'%20method='post'%20用户名:%20输入type='text'%20name='username'%20id='username'%20td%20%20/td%20%20trtd%20%20密码:%20输入type='password'%20name='userpass'%20id='userpass'%20td/td%20%20trtd%20%20输入type='提交'%20value='登录'%20id='按钮'%20/form%20%20/td/tr%20%20/table/div%20%20divalign='center'%20表格宽度='900'%20高度='467'%20border='0'%20background='./image/yikou.png' tr td width='126' height='948' /td td width='351'/td td width='101' /td /tr /div/body/html 下面是抓包工具抓到的所有HTTP数据包。

浏览器发送的GET请求包:

c853a40f460b459d848a7c56bac05e61~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1728903908&x-signature=ILGzCVvmDJ%2Bdxa1uLT70%2BRgXHfQ%3D 服务器返回页面对应的数据包:

b61c985eeefc48afa67c5e710cb07844~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1728903908&x-signature=nAlilyIytpb9X3e6%2BpVtNjjbM8I%3D 完整的浏览访问服务器数据包交互流程如下:

b1bbf500c73841ac9c98adb9592400b3~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1728903908&x-signature=AtKQOdz3ufl0XduL%2FmRx1ETkvkE%3D 数据包交互流程如下:

浏览器发起与Web服务器的TCP 3次握手(http基于TCP,上图中的数据包1-3)。浏览器根据DNS协议查找某个域对应的IP地址。在地址栏中输入的URL(如果URL直接指定IP地址则跳过此步骤)浏览器以HTTP协议发送GET请求,Web服务器响应相应的页面(如果指定的话,则默认像index.html这样的文件通常由配置文件指定(参见数据包4-6),因此浏览器请求相应的图像文件(数据包7-24),最后关闭TCP连接并进行4次握手(参见数据包7)。数据包25-28)

三、页面交互流程

从输入URL 到加载网页到底做了什么?

浏览器发起请求,服务器收到请求后,处理该请求。

输入e8dbf40b85c64251947073f5c39c2fc6~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1728903908&x-signature=8sz6PUyYyQe549UgfITopgPCFTM%3D1。

无论是链接还是地址栏中的条目,情况都是一样的。 http协议规定了URL的格式,可以通过http协议中的域名或IP找到服务器。

2. 一旦找到服务器,就会发送一个http请求,告诉服务器你想要它做什么。 http协议规定了发送请求的格式。该格式由三部分组成:请求行、请求标头和请求正文。

请求行包括请求方法(get、post 或其他)、响应所需的文件以及http 版本。 请求头包括本机信息、浏览器信息等,当然URL还包括以下参数。

79fc68a2a69f44afa89af1f541f4fe02~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1728903908&x-signature=XMvdMqOyujXD8Ogvun%2FlRKtdgJA%3D 请求正文包含有关POST 发送的数据的信息。如果Get 方法传输值,则请求正文为空。

3、请求信息发送到服务器后,服务器会检索传递过来的相关信息,由后端程序进行处理。 服务器可以通过数据包中的信息检索URL传递的值,并且可以通过表单检索POST传递的值。当然,您还可以检索所有其他请求的信息,例如浏览器信息。一旦我们获得了相关数据,比如cookie信息、操作系统信息等,服务器就会根据程序进行处理。

4. 处理完成后,服务器响应并向浏览器输出相关信息。 HTTP还规定了响应格式,响应信息主要包括响应码、响应头和响应体。

f72a20b4c1634fb9b2bbfc9b65a68dd4~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1728903908&x-signature=s3Z%2BzuwWvSP1COYCIPcTzrsIel4%3D响应码用于标识常见的服务器响应结果,如200、404等。常见的分类有:

1开头代表消息,2开头代表成功,3开头代表重定向,4开头代表失败,5开头代表服务器异常。响应头记录了服务器相关的信息,比如服务器是否启用了压缩、服务器是IIS还是Ngnix、程序使用的服务器语言等。当然,缓存也设置在这里。可以通过修改响应头来修改HTML的本地缓存,例如设置浏览器的缓存过期时间。

响应正文主要是我见过的HTML 相关内容。

完成上述四个步骤后,您的浏览器将断开与服务器的数据连接,并且将无法再发送数据。如果您需要再次发送数据,则需要先输入URL。

由此可见,这是一个完整的网页流程,而http的作用就是指定整个流程,包括要执行的步骤以及每个步骤的数据格式。只有了解了http协议以及网页是如何生成的,你才能更好地控制浏览器缓存、通过非浏览器通道发送http请求、选择get和post值传输,甚至建立长连接。所有这些都是基于http协议的。

四、补充

1. http主要方法

1ee4a025a2994eee98969005ac8a2b92~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1728903908&x-signature=lvLEcqNwg34h4HzBRgTHHqpT7NA%3D

1.0 版和1.1 版描述分别基于RFC1945 和RFC2616。除了上面显示的内容之外,还有几个HTTP 消息头字段用于表示附加信息。 当客户端向Web 服务器发送数据时,它首先发送标头字段,然后发送数据。

2. 状态码

Web 服务器收到请求消息后,解析内容,使用URI 和方法来确定要做什么和执行什么操作,并根据这些要求完成工作并将结果保存到.响应消息。 响应消息以状态代码开头,用于指示操作是成功还是发生错误。

如果您访问Web 服务器但找不到该文件,您将收到404 Not Found 错误消息。这实际上是一个状态码。 状态代码后面是标头字段和网页数据。 响应消息被发送回客户端,当客户端收到它时,浏览器从消息中读取所需的数据并将其显示在屏幕上。 至此,整个HTTP工作就完成了。

HTTP 状态代码由三个十进制数字组成,第一个十进制数字定义状态代码的类型。

响应分为五类:信息响应(100-199)、成功响应(200-299)、重定向(300-399)、客户端错误(400-499)和服务器错误(500-599)。

fb50ad011c5b492aa29a835127e202d4~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1728903908&x-signature=oUzjCmenG5xsIax3Cjtld5sF9Pk%3D HTTP 状态代码列表:

7e50f64e30904c70ae672a3a838bc99f~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1728903908&x-signature=y2AoqrNy3QqjTl14BJQo3qdtsIU%3D

版权声明:本文转载于网络,版权归作者所有。如有侵权,请联系本站编辑删除。

猜你喜欢