HTTP协议

1.HTTP协议简介

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

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

2.网站页面访问流程

(1)客户端:浏览器输入网址点击回车

(2)客户端:完成域名解析过程

(3)客户端:直接访问相对应的网站服务器 -------->建立TCP三次握手

(4)客户端:访问网站服务器 ----------->发送HTTP请求报文

(5)服务端:响应客户端访问请求 --------->回复HTTP响应报文

(6)客户端:浏览正常页面

(7)客户端:结束访问网站 -------->TCP四次挥手

ps:chrome浏览器自带开发者工具(快捷键:F12),有个network可以查看其headers/request/response等等内容

 

3.HTTP协议请求和响应过程

(1)HTTP请求报文
请求报文格式报文信息 
请求行 GET index.html HTTP 1.1 请求方法:GET --读/看 POST --写/提交(多用于注册账号) index.html:请求网站默认页面 HTTP1.1:请求协议
请求头 ······· Accept:text/html Accept-Language: zh-CN,zh;q=0.9 Host: www.fushuaizhang.cn HTTP-User_Agent:chrom ······· Accept:请求的文件类型 Accept-Language:请求时使用的语言 Host:请求的主机信息 HTTP-User_Agent:
空行 N/A  
请求主体 GET方法无请求报文主体,POST方法才有  

 

(2)HTTP响应报文
响应报文格式报文信息 
起始行 HTTP/1.1 200 OK 响应的状态码/响应信息等
响应头部 ······· Server: nginx Date: Thu, 17 Sep 2020 02:16:13 GMT Content-Type: text/html; charset=UTF-8 ········ 服务端有关信息
空行 N/A  
响应主体 <html> <html> 请求后进行响应返回的网页信息

4.HTTP状态码大全

状态码详细描述说明
成功 这一类型的状态码,代表请求已成功被服务器接收、理解、并接受。
200 OK 请求已成功,请求所希望的响应头或数据体将随此响应返回。出现此状态码是表示正常状态。
201 Created 请求已经被实现,而且有一个新的资源已经依据请求的需要而建立,且其 URI 已经随Location 头信息返回。假如需要的资源无法及时建立的话,应当返回 '202 Accepted'。
202 Accepted 服务器已接受请求,但尚未处理。正如它可能被拒绝一样,最终该请求可能会也可能不会被执行。在异步操作的场合下,没有比发送这个状态码更方便的做法了。 返回202状态码的响应的目的是允许服务器接受其他过程的请求(例如某个每天只执行一次的基于批处理的操作),而不必让客户端一直保持与服务器的连接直到批处理操作全部完成。在接受请求处理并返回202状态码的响应应当在返回的实体中包含一些指示处理当前状态的信息,以及指向处理状态监视器或状态预测的指针,以便用户能够估计操作是否已经完成。
重定向 这类状态码代表需要客户端采取进一步的操作才能完成请求。通常,这些状态码用来重定向,后续的请求地址(重定向目标)在本次响应的 Location 域中指明。
300 Multiple Choices 被请求的资源有一系列可供选择的回馈信息,每个都有自己特定的地址和浏览器驱动的商议信息。用户或浏览器能够自行选择一个首选的地址进行重定向。
301 Moved Permanently 被请求的资源已永久移动到新位置,并且将来任何对此资源的引用都应该使用本响应返回的若干个 URI 之一。如果可能,拥有链接编辑功能的客户端应当自动把请求的地址修改为从服务器反馈回来的地址。除非额外指定,否则这个响应也是可缓存的。 注意:对于某些使用 HTTP/1.0 协议的浏览器,当它们发送的 POST 请求得到了一个301响应的话,接下来的重定向请求将会变成 GET 方式。
302 Move Temporarily 请求的资源临时从不同的 URI响应请求。由于这样的重定向是临时的,客户端应当继续向原有地址发送以后的请求。只有在Cache-Control或Expires中进行了指定的情况下,这个响应才是可缓存的。
303 See Other 对应当前请求的响应可以在另一个 URL 上被找到,而且客户端应当采用 GET 的方式访问那个资源。这个方法的存在主要是为了允许由脚本激活的POST请求输出重定向到一个新的资源。这个新的 URI 不是原始资源的替代引用。同时,303响应禁止被缓存。当然,第二个请求(重定向)可能被缓存。
304 Not Modified 如果客户端发送了一个带条件的 GET 请求且该请求已被允许,而文档的内容(自上次访问以来或者根据请求的条件)并没有改变,则服务器应当返回这个状态码。304响应禁止包含消息体,因此始终以消息头后的第一个空行结尾。
请求错误 这类的状态码代表了客户端看起来可能发生了错误,妨碍了服务器的处理。除非响应的是一个 HEAD 请求,否则服务器就应该返回一个解释当前错误状况的实体,以及这是临时的还是永久性的状况。这些状态码适用于任何请求方法。浏览器应当向用户显示任何包含在此类错误响应中的实体内容。
400 Bad Request 1、语义有误,当前请求无法被服务器理解。除非进行修改,否则客户端不应该重复提交这个请求。 2、请求参数有误。
401 Unauthorized 当前请求需要用户验证。该响应必须包含一个适用于被请求资源的 WWW-Authenticate 信息头用以询问用户信息。客户端可以重复提交一个包含恰当的 Authorization 头信息的请求。如果当前请求已经包含了 Authorization 证书,那么401响应代表着服务器验证已经拒绝了那些证书。如果401响应包含了与前一个响应相同的身份验证询问,且浏览器已经至少尝试了一次验证,那么浏览器应当向用户展示响应中包含的实体信息,因为这个实体信息中可能包含了相关诊断信息。参见RFC 2617。
403 Forbidden 服务器已经理解请求,但是拒绝执行它。与401响应不同的是,身份验证并不能提供任何帮助,而且这个请求也不应该被重复提交。如果这不是一个 HEAD 请求,而且服务器希望能够讲清楚为何请求不能被执行,那么就应该在实体内描述拒绝的原因。当然服务器也可以返回一个404响应,假如它不希望让客户端获得任何信息。
404 Not Found 请求失败,请求所希望得到的资源未被在服务器上发现。没有信息能够告诉用户这个状况到底是暂时的还是永久的。假如服务器知道情况的话,应当使用410状态码来告知旧资源因为某些内部的配置机制问题,已经永久的不可用,而且没有任何可以跳转的地址。404这个状态码被广泛应用于当服务器不想揭示到底为何请求被拒绝或者没有其他适合的响应可用的情况下。出现这个错误的最有可能的原因是服务器端没有这个页面。
408 Request Timeout 请求超时。客户端没有在服务器预备等待的时间内完成一个请求的发送。客户端可以随时再次提交这一请求而无需进行任何更改。
服务器错误 这类状态码代表了服务器在处理请求的过程中有错误或者异常状态发生,也有可能是服务器意识到以当前的软硬件资源无法完成对请求的处理。除非这是一个HEAD 请求,否则服务器应当包含一个解释当前错误状态以及这个状况是临时的还是永久的解释信息实体。浏览器应当向用户展示任何在当前响应中被包含的实体。
500 Internal Server Error 服务器遇到了一个未曾预料的状况,导致了它无法完成对请求的处理。一般来说,这个问题都会在服务器端的源代码出现错误时出现。
501 Not Implemented 服务器不支持当前请求所需要的某个功能。当服务器无法识别请求的方法,并且无法支持其对任何资源的请求。
502 Bad Gateway 作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应。
503 Service Unavailable 由于临时的服务器维护或者过载,服务器当前无法处理请求。这个状况是临时的,并且将在一段时间以后恢复。如果能够预计延迟时间,那么响应中可以包含一个 Retry-After 头用以标明这个延迟时间。如果没有给出这个 Retry-After 信息,那么客户端应当以处理500响应的方式处理它。
504 Gateway Timeout 作为网关或者代理工作的服务器尝试执行请求时,未能及时从上游服务器(URI标识出的服务器,例如HTTP、FTP、LDAP)或者辅助服务器(例如DNS)收到响应。 注意:某些代理服务器在DNS查询超时时会返回400或者500错误

5.HTTP协议资源信息

URL:

全称为Uniform Resource Identifier,中文翻译为统一资源标识符,也被称为网页地址(网址)。如同门牌语言,它是因特网上标准的资源唯一地址。通俗的说,URL是Internet上用来描述信息资源的字符串,主要用在各种www客户端和服务器程序上。URL可以用一种统一的格式来描述各种信息资源,包括文件、服务器的地址和目录。严格来讲,每一个URL都是一个URI,它标识一个互联网资源,并指定对其进行操作或取得该资源的方法。

组成部分:

  • 第一部分:是协议,例如:HTTP;

  • 第二部分:是主机资源服务器IP地址或域名(端口号),例如:www.fushuaizhang.cn

  • 第三部分:是主机资源的具体地址,如目录和文件名等,例如:www.fushuaizhang.cn/wp-content

URI:

全称为uniform resource identifier,中文翻译为统一资源标识符,是一个用于标识某一互联网资源名称的字符串。这个字符串在世界范围内唯一标识并定位某一个信息资源。互联网上每个可用的数据资源(如HTML、图片、视频、音频等)皆通过统一资源标识符进行定位。

 

静态资源:

优点:

(1)网页内容是固定不变的,因此,容易被搜索引擎收录(容易被用户找到) (2)因为网页没有数据库的支持,所以在网站制作和维护方面的工作量较大,当网站信息量很大时 缺点: ​ (1)网页的交互性较差,在程序的功能实现方面有较大的限制 (2)当客户端向服务器请求数据时,服务器会直接从磁盘文件系统上返回数据(不做任何解析)

动态资源:

(1)采用动态网页技术的网站可以实现更多的功能,如用户注册、用户登录、在线调查、 投票、用户管理、订单处理、发博文等。 (2) 动态资源页面会出现 "?" "&", 不便于被搜索引擎收录 (3)接收到用户请求,需要让动态服务和数据库服务进行处理

伪静态资源(动态页面)

(1)可以便于搜索引擎进行收录 (2) 有数据库服务支持,实现网页交互功能

6.评测网站好坏的指标

IP:根据用户的IP地址数量进行统计

PV:页面访问量

UV:记录独立访客数量

  • cooike:标识用户身份信息,会保存在用户客户端本地 (保存在内存中)

  • session:记录用户的一些会话操作(记录用户的登录信息,保存在内存中)

ps:https://alexa.chinaz.com/baidu.com

6.网站并发

A种理解:网站服务器每秒能够接受的最大用户请求数

B种理解:网站服务器每秒能够响应的最大用户请求数

C种理解:网站服务器在单位时间内能够处理的最大连接数 ***

posted @ 2021-05-22 18:35  张福帅  阅读(122)  评论(0)    收藏  举报