计算机网络——哈工大
HTTP协议
HTTP1.1 是一种 不保存状态,即无状态协议。对于发送的请求和响应都不做持久化处理。
这主要是为了 更快的处理大量的事务,确保协议的可伸缩性。
但是很多情况下,需要保存之前的状态,比如登录状态、购物网站的购物车等等。因此引入了Cookie 会话技术,用于管理状态。、
使用URI定位互联网上的资源。
HTTP中使用的方法;
GET方法 : 获取资源
用来请求访问已经被URI识别的资源。
POST: 传输实体主体
POST方法用来传输实体的主体(主要目的不是获取响应的主体内容)
PUT:传输文件
但是由于HTTP1.1的PUT方法自身不带验证机制,所以存在安全性问题。
往往需要配合Web应用程序的验证机制或架构采用REST标准同类的Web网站,即可
HEAD: 获得报文首部
用于确认URI的有效性及资源更新的日期时间等。
DELETE: 删除文件
与PUT方法相反,其是按请求URI删除指定的资源。注意: 同样不带验证机制。
OPTIONS: 询问支持的方法
用来查询针对请求URI指定的资源支持的方法。
TRACE: 追踪路径
让Web服务器端将之前的请求通信环回给客户端的方法。注意:容易引发XST攻击,一般就不会用到它。
CONNECT: 要求用隧道协议连接代理
与代理服务器通信时建立隧道,实现用隧道协议进行TCP通信。使用SSL(安全套接层)和TLS(传输层安全)协议把通信内容加密后经网络隧道传输。
持久连接
在初始HTTP初始版本中,每进行一次HTTP通信就断开一次TCP连接
这会增加通信量的开销。
因此HTTP1.1 和部分的HTTP1.0 想出了持久连接的方法。
特点是 只要任意一端没有明确提出断开连接,则保持TCP连接状态。
减轻服务器端的负载,提高Web页面的显示速度。
管线化
持久化连接使得管线化方式发送成为可能。
以前,发送请求,等待收到响应后,才可以发送下一个请求。
现在,有了管线化技术,就不用等待响应也可以直接发送。
于是便可以同时并行发送多个请求。
Cookie 状态管理
为什么要引入Cookie技术呢?
Http是一种无状态协议,也就是说它不会对之前发生过的请求和响应的状态进行管理,使得无法根据之前状态进行新的请求处理。但是正因为Http协议为无状态协议,所以可以极大的减少服务器的CPU和内存的消耗。
基于这样的矛盾,就诞生了Cookie技术。
它通过在请求和响应报文中写入Cookie信息来控制客户端的状态。
服务器端给客户端发送的响应报文中有一个叫做 Set-Cookie 的首部字段信息,Cookie技术会通知客户端保存Cookie。
于是,当下一次客户端向服务器端发送请求报文时,客户端会在请求报文中加入Cookie的值。
然后,服务端就会根据这个Cookie的值检查是哪一个客户端发来的请求,然后根据服务器上的记录得到之前的状态信息。
Http报文
Http报文:用于HTTP协议交互的信息,分为请求报文和响应报文,是HTTP通信中的基本单位,由8位组字节流组成。
分为报文首部和报文主体两大块。
请求报文格式:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YHcu29Mz-1641780660108)(C:\Users\背包十年\AppData\Roaming\Typora\typora-user-images\image-20220109165207627.png)]
响应报文格式:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Gxa9B07o-1641780660111)(C:\Users\背包十年\AppData\Roaming\Typora\typora-user-images\image-20220109165237461.png)]
请求行: 包含 用于请求的方法、请求的URI 和 HTTP版本
状态行:包含表明响应结果的状态码、原因短语和HTTP版本。
HTTP传输
HTTP在传输数据时,允许按照数据原貌传输,也可以通过在传输过程中通过编码提升传输速率,通过这种方式,能有效的处理大量的访问请求。但是编码由计算机来完成,需要消耗更多的CPU资源。
实体:
作为请求和响应的有效载荷数据被传输,其内容由实体首部和实体主体组成。
HTTP报文的主体用于传输请求或响应的实体主体。
一般,报文主体等于实体主体。但是当进行编码操作时,实体主体内容会发生变化。
Email 消息格式
RFC 822 : 文本消息格式标准
头部行
消息体
扩展:MIME 多媒体邮件扩展 RFC2054,2056
邮件访问协议
从服务器获取邮件
POP:Post Office Protocol
认证/授权和