html和http的区别
-
HTML:为解决"怎样使不同风格的万维网文档,都能在因特网上的各种主机上显示出来,同时使用户清楚地知道在什么地方存在着链接”这一问题
-
HTTP:为解决"用什么样的网络协议来实现整个因特网上的万维网文档”这一难题
HTML:
html是超文本传输语言,是用来描述网页的一种语言。
http:超文本传输协议
-
是由w3c(万维网联盟)制定的一种应用层协议,用来定义浏览器与web服务器之间如何通信以及通信的数据格式。
-
传输层使用TCP协议进行可靠的传送,默认使用80端口。
http协议通信过程
-
浏览器根据IP地址和端口号与服务器建立连接
-
向Web服务器发送请求数据包
-
Web服务器接收请求数据包后,发送相应的响应数据包
-
浏览器接收响应数据后关闭连接
web资源:
一个网页由多个资源(文件)构成,打开一个页面,通常会有多个资源展示出来,但是每个资源都要单独请求。
一次请求对应一次连接,当浏览器再次发请求给服务器时,Web服务器并不知道这就是上次发请求的客户端,这也是HTTP协议的一个特点-无状态协议。
资源类型:
- 静态资源:服务器端文件和客户端文件一样
文件后缀:.html, .txt, .jpg, .js, .css, .mp3, .avi
- 动态资源:应用程序,服务端将程序的执行结果返回给客户端
文件后缀:.php, .jsp ,.asp
http连接请求
-
串行连接:每下载一个资源都要进行三次握手和四次挥手的过程。比如一个网页200个资源就要进行200次连接。(效率低下)
-
并行连接:同时建立多个tcp连接来下载资源(并发资源消耗大)
-
持久连接:建立连接之后,每个资源下载的时候都不断开连接。
-
管道:并行连接和持久连接的综合,建立持久连接后同时下载多个资源。
-
复用连接:交替传输请求报文,请求和响应报文同时互相发送。
http协议的版本
http/0.9:
- 1991,原型版本,功能简陋,只有一个命令GET。GET /index.html ,服务器只能回应HTML格式字符
串,不能回应别的格式
http/1.0
- 1996年5月,每个TCP连接只能发送一个请求,发送数据完毕,连接就关闭,如果还要请求其他资源,就必须再新建
http/1.1
- 1997年1月,引入了持久连接(persistent connection),即TCP连接默认不关闭,可以被多个请求复
用,并且新增了(put、delete等方法)
HTTP1.0和1.1的问题:
-
HTTP1.x在传输数据时,每次都需要重新建立连接,无疑增加了大量的延迟时间
-
HTTP1.x在传输数据时,所有传输的内容都是明文,客户端和服务器端都无法验证对方的身份,无法保证数据的安全性
-
虽然HTTP1.x支持了keep-alive,来弥补多次创建连接产生的延迟,但是keep-alive使用多了同样会给服务端带来大量的性能压力
HTTPS协议:http协议+ssl
HTTP协议运行在TCP之上,所有传输的内容都是明文,HTTPS运行在SSL/TLS之上,SSL/TLS运行在TCP之上,所有传输的内容都经过加密的
HTTP2协议
-
http/2.0:2015年,HTTP2.0是SPDY的升级版
-
特点:延迟降低、请求具有优先级、报文头压缩、加密传
http服务端处理请求的方式
单进程I/O模型:
- 服务端启动一个进程来处理用户请求,而且一次只处理一个,多个请求被串行响应
多进程I/O模型:
- 服务端一次启动多个进程来处理用户请求,每个进程响应一个连接请求
复用I/O结构:
- 服务端启动一个进程来处理用户请求,所有的用户请求都通过一个连接复用器连接。通过优先相应继续处理的请求,实现同时响应N个连接请求
复用的多进程I/O模型:
- 启动M个进程,每个进程响应N个连接请求,同时接收M*N个请求