一、什么是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请求包:
服务器返回页面对应的数据包:
完整的浏览访问服务器数据包交互流程如下:
数据包交互流程如下:
浏览器发起与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 到加载网页到底做了什么?
浏览器发起请求,服务器收到请求后,处理该请求。
输入1。
无论是链接还是地址栏中的条目,情况都是一样的。 http协议规定了URL的格式,可以通过http协议中的域名或IP找到服务器。
2. 一旦找到服务器,就会发送一个http请求,告诉服务器你想要它做什么。 http协议规定了发送请求的格式。该格式由三部分组成:请求行、请求标头和请求正文。
请求行包括请求方法(get、post 或其他)、响应所需的文件以及http 版本。 请求头包括本机信息、浏览器信息等,当然URL还包括以下参数。
请求正文包含有关POST 发送的数据的信息。如果Get 方法传输值,则请求正文为空。
3、请求信息发送到服务器后,服务器会检索传递过来的相关信息,由后端程序进行处理。 服务器可以通过数据包中的信息检索URL传递的值,并且可以通过表单检索POST传递的值。当然,您还可以检索所有其他请求的信息,例如浏览器信息。一旦我们获得了相关数据,比如cookie信息、操作系统信息等,服务器就会根据程序进行处理。
4. 处理完成后,服务器响应并向浏览器输出相关信息。 HTTP还规定了响应格式,响应信息主要包括响应码、响应头和响应体。
响应码用于标识常见的服务器响应结果,如200、404等。常见的分类有:
1开头代表消息,2开头代表成功,3开头代表重定向,4开头代表失败,5开头代表服务器异常。响应头记录了服务器相关的信息,比如服务器是否启用了压缩、服务器是IIS还是Ngnix、程序使用的服务器语言等。当然,缓存也设置在这里。可以通过修改响应头来修改HTML的本地缓存,例如设置浏览器的缓存过期时间。
响应正文主要是我见过的HTML 相关内容。
完成上述四个步骤后,您的浏览器将断开与服务器的数据连接,并且将无法再发送数据。如果您需要再次发送数据,则需要先输入URL。
由此可见,这是一个完整的网页流程,而http的作用就是指定整个流程,包括要执行的步骤以及每个步骤的数据格式。只有了解了http协议以及网页是如何生成的,你才能更好地控制浏览器缓存、通过非浏览器通道发送http请求、选择get和post值传输,甚至建立长连接。所有这些都是基于http协议的。
四、补充
1. http主要方法
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)。
HTTP 状态代码列表:
版权声明:本文转载于网络,版权归作者所有。如有侵权,请联系本站编辑删除。