OSI网络分层
对于网络OSI层次结构,由上至下分别为:
- 应用层:对应应用程序的通信服务,HTTP,FTP,NFS,SMTP
- 表示层:定义数据格式及加密
- 会话层:定义了如何开始、控制和结束一个会话,包括对多个双向消息的控制和管理如果表示层收到了所有的数据,则用数据代表表示层。示例:RPC,SQL等
- 传输层:包括是否选择差错恢复协议还是无差错恢复协议TCP/UDP
- 网络层: IP/ICMP
- 数据链路层:定义了在单个链路上如何传输数据ARP/HDLC/PPP/SLIP
- 物理层
应用层我们最熟悉的可能是HTTP,HTTP下层的协议经常使用的是TCP,其实只要能提供稳定的连接,什么协议对于HTTP都是可以的,这是网络协议的分层意义
HTTP1.0与HTTP1.1区别(目前绝大部分server和浏览器都支持1.1,已经向2.0迈进):
- 对于请求的处理方式不同
HTTP 1.0规定浏览器与服务器只保持短暂的连接,浏览器的每次请求都需要与服务器建立一个TCP连接,服务器完成请求处理后立即断开TCP连接,服务器不跟踪每个客户也不记录过去的请求。每次浏览器获得一个静态网页时,解析网页时总是和服务器一次次的建立连接,释放连接,获取页面中的每个url
也就是说http1发送请求和回复是一对一的,这样就存在性能上的缺失,请求被分开,只有上一个请求结束下一个请求才发出,对于目前的多媒体时代的网页而言,如果媒体文件在网页上都是以链接方式出现,一个一个请求,那效率不低才怪
而http1.1以后,支持了持久性的会话连接,在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延迟。
也就是说,我发送请求不再需要等等上一个请求响应结束再发出(这不是理所当然的事么,所以才需要对1.0进行改进)。
- HTTP1.1开始支持断点续传
在HTTP1.1中,支持使用Range(请求头中)、Content-Range(响应头中)实现断点续传
虽然HTTP1.1对1.0改进了很多,但面对现在的需求来说还是不足,(比如仍然还是主要以一次一个请求为主)所以之后的版本对其有了更好的要求