本章目录
2. HTTP协议
2.1 HTTP协议简介
HTTP协议,全称超文本传输协议(Hypertext Transfer Protocol),是从WEB服务器传输超文本标记语言(HTML)到本地浏览器的传送协议。
- 设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。
- HTTP协议有多个版本,目前广泛使用的是HTTP/1.1版本。
- HTTP协议是一个无状态协议(stateless)
- 无状态的理解:服务器不维护任何有关客户端过去所发请求的消息。
- 有状态协议会更加复杂,因为需要维护状态(即历史信息),而如果客户端或服务器失效,产生的状态会不一致,解决这种不一致的代价更高。
- HTML是一门语言,全称是超文本标记语言,超文本的意思就是不只是文本,还可以包含图片、链接、音乐甚至程序等非文字元素。
- 网络协议:是计算机之间为了实现网络通信而达成的一种“约定”或者“规则”,这样不同厂商的生产设备以及不同操作系统组成的计算机之间,都可以实现通信。
2.2 HTTP协议的优点
- HTTP协议支持客户端/服务端模式,也是一种请求/响应模式的协议。
- 简单快速:客户端向服务器请求服务时,只需传送请求方法和路径。
- 请求方法常用的有GET、POST、HEAD
- 灵活:HTTP允许传输任意类型的数据对象,传输的类型由Content-Type加以标记。
- 无连接:限制每次连接都只处理一个请求。当服务器处理完请求,并收到客户端的应答之后,就会断开连接(短连接)。
- 但是这种无连接却不利于客户端和服务器保持会话连接。为了弥补这种不足,产生了两项记录HTTP状态的技术:Cookie和Session。
- 无状态:指协议对于事务处理没有记忆。若后续处理需要前面的信息,则必须重传。
2.3 HTTP协议的缺点
- 请求信息明文传输,容易被窃听截取。
- 数据的完整性未校验,容易被篡改
- 所谓完整性是指信息的准确度。若无法证明其完整性,通常也就意味着无法判断信息是否准确。换句话说,没有任何办法确认,发出的请求/响应和接收到的请求/响应是前后相同的。
- 没有验证对方身份,存在冒充危险
- HTTP协议中的请求和响应不会对通信方进行确认。任何人都可以伪造虚假服务器欺骗用户,实现“钓鱼欺诈”,用户无法察觉。
2.4 HTTP协议属于哪一层
HTTP属于应用层协议,以TCP协议(传输层)作为底层协议(用于识别该连接请求,解封包,一层一层的剥开),默认端口是80(注意是服务器的端口)。
2.5 HTTP通信过程
HTTP通信是指HTTP客户端(即浏览器)通过URL向HTTP服务端(即WEB服务器)发送请求。
- 服务器在80端口等待客户端请求
- 浏览器输入URL,经过DNS域名解析为服务器IP
- 浏览器发送TCP请求,通过三次握手建立和服务器的连接(创建套接字Socket)
- 浏览器是以随机端口发送的请求,而服务器是以80端口接收的请求
- 浏览器发送HTTP请求,服务器返回HTTP响应,即交换HTTP消息
- 客户端将相应得到的HTML代码和资源渲染到前端给用户
- 关闭TCP连接
2.6 常见请求方法
- GET:请求指定的页面信息,并返回实体主体。
- POST:向指定资源提交数据进行处理请求(例如提交表单或者上传文件)
- 数据被包含在请求体中
- POST请求可能会导致新的资源建立或已有资源的修改
- HEAD:类似于GET请求,只不过返回的响应中没有具体的内容,用于获取报头
- PUT:从客户端向服务器传送的数据取代指定的文档的内容
- DELETE:请求服务器删除指定的页面
2.7 GET和POST的区别
-
结构:都包含请求头和请求行,POST多了一个请求正文body。
-
用途:GET多用来查询,请求参数放在URL中,不会对服务器上的内容产生作用。POST多用来提交,如把账号密码放在body中。
-
安全性:GET是直接添加在到URL后面的,直接就可以在URL中看到内容,