最后更新:2022-07-21 14:54:57 手机定位技术交流文章
HTTP协议是Hyper Text Trasfer Protocol(超文本传输协议)的缩写。用于从通用网络服务器传输超文本到本地浏览器的传输协议.HTTP是一个基于TCP/IP的通信协议,用于传输数据(HTML文件,图片文件,查询结果等)。
HTTP/HTTPS是应用层上的协议,建立在传输层TCP之上,客户端通过与鼓舞短进行TCP链接之后发送HTTP请求与接收HTTP响应都是通过访问Socket接口来调用TCP协议实现。
默认的HTTP端口编号为80,根据中间人的需求可以更改为8080或其他端口。
HTTP协议工作于客户端-服务端架构上。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。Web服务器根据接收到的请求之后,向客户端发送响应信息。

注意事项:
①HTTP是无连接的,限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
②HTTP是媒体独立的,只要哭护短和服务器知道图和处理的数据内容,任何类型的数据都可以通过HTTP发送。客户端以及服务器指定使用合适的MIME-type内容类型。
3HTTP无状态,该协议没有处理事务的内存容量.缺乏状态意味着,如果后续行动需要事先的资料,则必须重传,这可能导致每次链接时发送的数据数量增加。另一方面,当服务器不需要以前的信息时,它会更快地响应。发送的请求和相应的通信状态不会被单独永久处理。目的在于维护HTTP协议的简单性,因此能够快速处理大量交易,提高效率。然而,在许多应用场景中,我们需要保持用户登录或记录用户购物车中的货物。因为HTTP是一个无状态的协议,因此必须引进一些技术来记录管理状况,例如,cookie(浏览器缓存)和 सत्र(服务端缓存)。

HTTP协议通信流程图:

HTTP协议的版本有:HTTP 0.9(已过时)、HTTP 1.0、HTTP 1.1、HTTP 2.0。而目前使用最多的版本是1.0和1.1版本。
HTTP1.0和1.版本的区别是:
①缓存处理
HTTP1.0主要使用 If-Modified-Since, 作为缓冲区判断标准,在标题中终止。
HTTP1.1则引入了更多的缓存控制策略例如Entitytag,If-Unmodified–Since,If-Match,If-None-Match等更多可供选择的缓存头来控制缓存策略。
2宽带优化和网络连接的使用
HTTP1.0中,存在一些浪费带宽的现象,例如客户端只是需要某个对象的一部分,而服务器却将整个对象送过来了,并且不支持断点续传功能。
HTTP1.1在请求标题中引入范围标题,允许请求的资源只有一部分,即返回代码为206(PartialContent),从而使得开发人员可以自由选择充分使用带宽和连接。
③错误通知的管理
在HTTP1.In 1中,增加了24个错误状态响应代码,例如409表示请求的资源与资源的当前状态冲突; 410表示服务器上的资源被永久删除。
④Host头处理
在HTTP1.0中,每个服务器都被绑定到一个唯一的IP地址,因此请求消息中的RZ不会传递主机名称。 但随着虚拟主机技术的发展,多个虚拟主机可以在物理服务器上存在,并且它们共享一个IE地址。
HTTP1.1的请求信息和响应消息应该支持主机头条,如果请求消息中没有inost头条,则将报告400个错误。
⑤长链接
HTTP1.1支持长链接和请求的流线处理,多个HTTP请求和响应可以在一个TCP连接上传输,减少建立和关闭连接的消耗和延迟,在HTTP1.1中默认开启connection:keep-alive,一定程度上弥补了HTTP1.0每次请求都要创建连接的缺点。
客户端发送一个HTTP请求到服务器的请求消息包括一下格式:请求行(request line)、请求头部(header)、空行和请求数据(请求体)四个部分组成,如图:

根据HTTP标准,HTTP请求可以使用多种请求方法,包括:
HTTP1.0定义了三个请求方法:GET、 POST和HEAD。
HTTP1.有五种新的请求方法: OPTIONS, PUT, DELETE, TRACE, and CONNECT。
| 方法 | 描述 |
|---|---|
| GET | 请求指定页面信息和返回实体主体 |
| POST | 向指定的资源提交数据处理请求(例如提交表格或上传文件)。 数据包含在请求机构中。 发送请求可能导致创建新的资源和/或修改现有资源 |
| HEAD | 类似于获取请求,但没有返回的响应中具体内容,用于获取标题 |
| PUT | 从客户端发送到服务器的数据替换指定的文档内容。 |
| DELETE | 请求服务器删除指定页面 |
| OPTIONS | 允许客户端查看服务器性能 |
| TRACE | 返回处收到的申请,主要用于测试或评判 |
| CONNECT | HTTP1.协议保留了一个可以转换连接到管道模式的代理服务器 |
Http协议的主要请求格式是GET和 POST方法。
①请求行
请求方法;请求资源路径;请求版本协议号码
②请求头
| 请求头 | 描述 |
|---|---|
| Accept | 客户可接受的数据类型 |
| Accept-Language | 客户端可接受的语言类型 |
| User-Agent | 浏览器信息 |
| Accpect-Encoding | 客户端可接受的编码格式 |
| Host | 请求的ip和端口号码 |
| Connection | 告诉服务器如何处理请求的连接 |
| Keep-Alive | 通知服务器不要立即关闭,保持一个小链接 |
| Closed | 马上关闭 |
③请求体
发送给服务器的数据
①请求行
请求方法;请求资源路径;请求版本协议号码
②请求头
| 请求头 | 描述 |
|---|---|
| Accept | 客户可接受的数据类型 |
| Accept-Language | 客户端可接受的语言类型 |
| Content-Type | 发送数据的类型 |
| Content-Length | 发送数据的长度 |
| Referer | 在请求启动时显示浏览器地址栏中的地址 |
| User-Agent | 浏览器的信息 |
①语言上的区别
GET请求服务器的数据,并且按照HTTP协议, get用于请求数据。
POST发送数据到服务器,根据HTTP协议, POST的语义是将数据添加到服务器,也就是说,根据 POST的语义,操作是修改服务器上的数据。
②服务器请求的区别
例如,访问百度后的内容在浏览器中被缓存,并在短时间内被重新访问,获取缓存的内容。 此外,GET请求只能收到 ASCII代码的响应。
POST请求不能缓存。 对于提出表格的 POST方法,新页面浏览器会显示“我是否再提交表格?”提示。 Post可以接受多种数据格式,如二进制,所以通常需要使用 POST进行文件上传。
3参数的请求头与请求体之间的区别
GET请求通常没有请求机构,并且只在TCP传输中传输一次,因此GET请求是非常有效的。
POST请求将数据放在请求主体中,在实际传输中,请求主体首先传输,请求主体两次传输。 POST请求主体比GET小,请求主体在TCP包中更容易执行,从而更好地确保HTTP包的完整性。
总结:
GET方法:
从指定服务器获取数据
GET请求能被缓存
GET请求存储在浏览器的cookie记录中
GET请求有长度限制
主要用于获取数据
查询字符串将显示在URL中,不安全
POST方法:
向指定服务器提交数据处理
POST请求无法缓存
POST请求不会存储在浏览器的浏览记录中
不限制长度的邮件请求
查询字符串不会在URL中显示,这更安全
HTTP响应还包括四个部分:状态行、消息头条、空行和响应规则表达式。


当访客浏览网页时,查看器的浏览器向服务器发送该页面的位置请求。在浏览器接收和显示网页之前,此网页所在的服务器会返回一个包含 HTTP 状态码的信息头(server header)用以响应浏览器的请求。
英文版本的HTTP状态代码是HTTP状态代码。
HTTP状态代码由三个十进制数字组成,第一个十进制数字定义了国家代码的类型。答复分为五个类别:信息答复(100–199),成功反应(200-299),重定位(300-399),客户端错误(400-499)和服务器错误(500-599):
| 分类 | 分类描述 |
|---|---|
| 1** | 服务器收到请求要求请求者继续执行操作的信息 |
| 2** | 操作成功接受并处理 |
| 3** | 重新定位需要进一步的操作完成请求 |
| 4** | 客户错误,包含语法错误的请求或无法完成请求 |
| 5** | 当服务器处理请求时发生服务器错误 |
| 状态码 | 英文名称 | 含义 |
|---|---|---|
| 100 | Continue | 继续下去。 客户应该继续要求 |
| 101 | Switching Protocols | 切换协议。服务器根据客户端的请求切换协议。只能切换到更高级的协议,例如,切换到HTTP的新版本协议 |
| 状态码 | 英文名称 | 含义 |
|---|---|---|
| 200 | Ok | 请求成功。 一般用于GET和 POST请求 |
| 201 | Created | 创建。 成功地请求并创建新的资源 |
| 202 | Accepted | 请求接受,但未处理完成 |
| 203 | Non-Authoritative Information | 请求成功,但返回的元数据不是来自原始服务器,而是一份副本 |
| 204 | No Content | 无内容。服务器成功处理,但未返回内容。在未更新网页的情况下,可确保浏览器继续显示当前文档 |
| 205 | Reset Content | 如果服务器正常处理,用户端口(例如浏览器)应该重新定位文件视图。 这个返回代码可以清除浏览器的表格字段 |
| 206 | Partial Content | 内容的一部分。 服务器成功处理了一些GET请求 |
| 状态码 | 英文名称 | 含义 |
|---|---|---|
| 300 | Multiple Choices | 请求的资源可以包含多个位置,相应地返回用户终端(例如浏览器)选择的资源功能和地址列表 |
| 301 | Moved Permanently | 请求资源已经永久移到一个新的URI,返回信息将包含一个新的URI,浏览器将自动导航到新的URI。 今后任何新的请求都应该被一个新的URI取代 |
| 302 | Found | 它与301类似,但资源只能暂时移动。 用户应该继续使用原来的URI |
| 303 | See Other | 类似于301。 使用GET和 POST请求查看 |
| 304 | Not Modified | 请求的资源未被修改,当服务器返回此状态代码时,服务器不会返回任何资源。 客户通常通过提供一个标记,表示客户只在指定日期后返回修改的资源,以缓存访问的资源 |
| 305 | Use Proxy | 使用代理。 请求的资源必须通过代理访问 |
| 306 | Unused | 已经丢弃的HTTP状态代码 |
| 307 | Temporary Redirect | 临时重新定位。 类似于 302。 使用GET请求重新定位 |
| 状态码 | 英文名称 | 含义 |
|---|---|---|
| 400 | Bad Request | 客户端请求有一个语法错误,服务器无法理解 |
| 401 | Unauthorized | 请求用户身份验证 |
| 402 | Payment Required | 保留,将来使用 |
| 403 | Forbidden | 服务器了解客户端的请求,但拒绝执行请求 |
| 404 | Not Found | 服务器无法根据客户的要求找到资源(页面)。 通过这个代码,网站设计师可以设置个人页面“您请求的资源无法找到” |
| 405 | Method Not Allowed | 客户端请求中的方法被禁止 |
| 406 | Not Acceptable | 服务器不能根据客户端请求的内容特性完成请求 |
| 407 | Proxy Authentication Required | 请求要求代理人的认证,类似于401,但请求者应该使用代理人进行授权 |
| 408 | Request Time-out | 服务器等待客户端发送请求太长,太晚 |
| 409 | Conflict | 当服务器完成客户端PUT请求时,该代码可以返回,当服务器处理请求时发生冲突 |
| 410 | Gone | 客户请求的资源不再存在。 410与404不同,如果以前使用的资源现在以410代码永久删除,网站设计师可以通过301代码指定资源的新位置 |
| 411 | Length Required | 服务器无法处理客户端发送的不带Content-Length的请求信息 |
| 412 | Precondition Failed | 客户请求信息的前提错误 |
| 413 | Request Entity Too Large | 由于请求的实体太大,服务器无法处理请求,因此请求被拒绝。 为了防止客户端继续请求,服务器可能关闭连接。 如果服务器暂时无法处理,它将包含一个“再尝试后”响应 |
| 414 | Request-URI Too Large | 请求的URI太长(URI通常是URL),服务器无法处理 |
| 415 | Unsupported Media Type | 服务器无法处理请求附带的媒体格式 |
| 416 | Requested range not satisfiable | 客户端请求的范围无效 |
| 417 | Expectation Failed | 服务器无法满足预期请求标题信息 |
| 状态码 | 英文名称 | 含义 |
|---|---|---|
| 500 | Internal Server Error | 内部服务器错误,无法完成请求 |
| 501 | Not Implemented | 服务器不支持请求函数,无法完成请求 |
| 502 | Bad Gateway | 当服务器试图作为门户或代理执行请求时,远程服务器收到一个无效的响应 |
| 503 | Service Unavailable | 由于过载或系统维护,服务器暂时无法处理客户端请求。 延迟的长度可以包含在服务器的“再尝试后”项中 |
| 504 | Gateway Time-out | 作为门户或代理的服务器,不会及时从远程服务器接收请求。 |
| 505 | HTTP Version not supported | 服务器不支持请求的HTTP协议版本,无法处理它 |
END
本文由 在线网速测试 整理编辑,转载请注明出处。