简单了解 HTTP 协议
2020-05-20 09:12:52来源:博客园 阅读 ()
简单了解 HTTP 协议
一、HTTP 请求流程
最初,HTTP 协议的出现主要是为了解决文本传输的难题,由于协议本身非常简单,于是在此基础上设想了很多应用方法并投入了实际使用。现在 HTTP 协议已经超出了 Web 这个框架的局限,被运用到了各种场景里。
目前主流的 HTTP 版本还是 HTTP/1.1。
HTTP 协议基于 TCP/IP 协议,会通过分层顺序与对方进行通信。首先作为发送端的客户端在应用层(HTTP 协议)发出一个想看某个 Web 页面的 HTTP 请求;接着,在传输层(TCP 协议)把从应用层处收到的数据(HTTP 请求报文)进行分割,并在各个报文上打上标记序号及端口号转发给网络层;然后,在网络层(IP 协议)增加作为通信目的地的 MAC 地址(ARP 协议)后转发给链路层;最后接收端的服务器在链路层接收到数据,按序往上层发送,一直到应用层。
TCP 协议提供可靠的字节流服务,并且为了更容易传送大数据从而把数据分割,而且 TCP 协议能够确认数据最终是否送达到对方(三次握手)。
IP(Internet Protocol)协议的作用是把各种数据包传送给对方。
ARP 是一种用以解析地址的协议,根据通信方的 IP 地址就可以反查出对应的 MAC 地址。
DNS 提供域名到 IP 地址之间的解析服务。
二、HTTP 协议结构
1.请求报文
请求报文是由请求方法、请求 URI、协议版本、可选的请求首部字段和内容实体构成的。
keep-alive 表示只要客户端或服务端任意一端没有明确提出断开连接,则保持 TCP 连接状态。这样不会导致每次的请求造成无谓的 TCP 连接建立和断开,从而减少通信量的开销和服务端的负载,也能使页面的显示速度显著提高。
除了常见的 get/post 方法,HTTP/1.1 中还有诸多可使用的方法。
HTTP 方法 | 作用 | 说明 |
---|---|---|
GET | 获取资源 | 用来请求访问已被 URI 识别的资源 |
POST | 传输实体主体 | 用来传输实体的主体 |
PUT | 传输文件 | 自身不带验证机制,存在安全性问题 |
HEAD | 获得报文首部 | 不返回报文主体部分。用于确认 URI 的有效性及资源更新的日期时间等 |
DELETE | 删除文件 | 自身不带验证机制,存在安全性问题 |
OPTIONS | 询问支持的方法 | 用来查询针对请求 URI 指定的资源支持的方法 |
TRACE | 追踪路径 | 容易引发 XST(Cross-Site Tracing, 跨站追踪)攻击,不建议使用 |
CONNECT | 用隧道协议连接代理 | 代理服务器通信时建立隧道,实现用隧道协议进行 TCP 通信 |
TRACE 方法是让 Web 服务器端将之前的请求通信环回给客户端的方法。发送请求时,在 Max-Forwards 首部字段中填入数值,每经过一个服务器端就将该数字减 1,当数值刚好减到 0 时, 就停止继续传输,最后接收到请求的服务器端则返回状态码 200 OK 的响应。
CONNECT 方法要求在与代理服务器通信时建立隧道,实现用隧道协议进行 TCP 通信。主要使用 SSL(Secure Sockets Layer,安全套接层)和 TLS(Transport Layer Security,传输层安全)协议把通信内容加密后经网络隧道传输给代理服务器。
2.响应报文
响应报文基本上由协议版本、状态码(表示请求成功或失败的数字代码)、用以解释状态码的原因短语、可选的响应首部字段以及实体主体构成。
三、HTTP 状态管理
HTTP 是一种不保存状态,即无状态(stateless)协议。HTTP 协议自身不对请求和响应之间的通信状态进行保存。也就是说,每当有新的请求发送时,就会有对应的新响应产生。协议本身并不保留之前一切的请求或响应报文的信息。这是为了更快地处理大量事务,确保协议的可伸缩性,以及减少服务器 CPU 和内存资源的损耗,从而特意把 HTTP 协议设计成如此简单的。
那么 HTTP 协议怎么管理状态呢?这就要说到 Cookie 技术。Cookie 技术通过在请求和响应报文中写入 Cookie 信息来控制客户端的状态。
Cookie 会根据从服务器端发送的响应报文内的一个叫做 Set-Cookie 的首部字段信息,通知客户端保存 Cookie。当下次客户端再往该服务器发送请求时,客户端会自动在请求报文中加入 Cookie 值后发送出去。
服务器端发现客户端发送过来的 Cookie 后,会去检查究竟是从哪一个客户端发来的连接请求,然后对比服务器上的记录,最后得到之前的状态信息。
原文链接:https://www.cnblogs.com/jmcui/p/12918502.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- Linux简单命令的学习 2020-06-10
- 因为命名被diss无数次。简单聊聊编程最头疼的事情之一:命名 2020-06-10
- 今天来介绍java 各版本的新特性,一篇文章让你了解 2020-06-10
- 「starter推荐」简单高效Excel 导出工具 2020-06-08
- Mybaties简单实例测试及注意问题 2020-06-07
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash