[toc]
# HTTP简介
HTTP协议(HyperText Transfer Protocol,超文本传输协议)是因特网上应用最为广泛的一种网络传输协议,它基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件, 查询结果等)。
# HTTP 工作原理
HTTP协议工作于客户端-服务端架构上。
![](/upload/attach/202011/202011231723_M6DXK82G8KDWHAN.jpg)
## HTTP信息处理过程:
**此为典型案例:**
(1)客户与服务器建立连接;
(2)客户向服务器提出请求;
(3)服务器接受请求,并根据请求返回相应的文件作为应答;
(4)客户与服务器关闭连接。
**宏观工作方式:**
* 客户端(UA)直接连接到Web服务器的通讯路径如图所示,客户端与Web服务器之间的通讯不需要任何的中介服务器,这是最简单的情况。
![](/upload/attach/202011/202011241037_EXTQ9AVDXDZ5ZG6.jpg)
* 客户端(UA)通过中介服务器连接到Web服务器的通讯路径如图所示,客户端与Web服务器之间的通讯通过中介服务器进行转发,中介服务器可能有1个,也可能有多个。
![](/upload/attach/202011/202011241037_BJ7S452FJXZAYKX.jpg)
* 客户端(UA)到中介服务器的通讯路径如图所示,客户端将请求发送给中介服务器1,中介服务器1将其发送中介服务器2,中介服务器2再发给Web服务器,最后客户端收到的内容由中介服务器1发送给它,而不是Web服务器。
![](/upload/attach/202011/202011241037_HCVB68MD2FSUXZK.jpg)
**内部操作过程:**
如图所示,它分为四个步骤:建立连接、发出请求信息、发出响应信息、关闭连接。
![](/upload/attach/202011/202011241037_DHPS2AKFWF4W5J3.jpg)
## 小知识:
HTTP默认端口号为80,但是也可以改为8080或者其他端口。
## HTTP传输展示
![](/upload/attach/202011/202011231653_NP4DVBYRBSBRHGU.png)
## HTTP注意事项:
* HTTP是无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式主要考虑到WWW服务器面向的是Internet中成干上万个用户,且只能提供有限个连接,故服务器不会让一个连接处于等待状态,及时地释放连接可以大大提高服务器的执行效率。
* HTTP是一种面向对象的协议:允许传送任意类型的数据对象。它通过数据类型和长度来标识所传送的数据内容和大小,并允许对数据进行压缩传送。
* HTTP是无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。
# HTTP隐患
因HTTP在设计之初未深入考虑安全问题,它只是未解决数据传输和共享问题而设计。但被有心人恶意利用后就发现了一些安全隐患,部分隐患展示:
* 明文传输隐患
因HTTP传递的数据是不经过处理的,也就是常说的明文传输,不会加密这些信息,并因HTTP是基于TCP/IP的,TCP/IP的特点也决定了HTTP数据很容易被截获,只要攻击者能够捕获这些信息,用户的隐私就暴露在攻击者眼中(在不违法Web标准的情况下)。
![](/upload/attach/202011/202011231719_JAU7V6XFG3BVGCQ.png)
* 身份验证隐患
因在HTTP标准中,没有校验对方身份的标准,无法有效的验证双方是本人故易被攻击者伪造进行恶意攻击。
![](/upload/attach/202011/202011231718_U736TUXKCGJ42UE.png)
* 数据完整性隐患
因HTTP数据在传输过程中,会经过很多节点,这些节点都可以修改原始数据,而对于客户端和服务器来说,没有任何技术来确保接收的数据就是发送者发送的原始数据,这样就存在了被篡改的隐患。
![](/upload/attach/202011/202011231710_8QUQB2KPN5TBF7R.png)
# 参考资料
* 《HTTP百度百科》
* 《HTTPS教程》
* 《深入浅出HTTPS:从原理到实战》
* 《HTTP网页访问应用分析》