浅谈http1.0和http1.1(1.x)以及http-NG

http协议简介

http超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。1960年美国人Ted Nelson构思了一种通过计算机处理文本信息的方法,并称之为超文本(hypertext),这成为了HTTP超文本传输协议标准架构的发展根基。Ted Nelson组织协调万维网协会(World Wide Web Consortium)和互联网工程工作小组(Internet Engineering Task Force )共同合作研究,最终发布了一系列的RFC,其中著名的RFC 2616定义了HTTP 1.1。

http1.0和http1.1区别

http下层的协议经常使用的是tcp,其实只要能提供稳定的连接,什么协议对于http都是可以的,这是网络协议的分层意义.
HTTP 1.0规定浏览器与服务器只保持短暂的连接,浏览器的每次请求都需要与服务器建立一个TCP连接,服务器完成请求处理后立即断开TCP连接,服务器不跟踪每个客户也不记录过去的请求。每次浏览器获得一个静态网页时,解析网页时总是和服务器一次次的建立连接,释放连接,获取页面中的每个url
这样做只是初期web不发达时制定的,现在web页面中包含了大量的图片,video,等网络文件,这样做显然不合理,例如一个包含有许多图像的网页文件中并没有包含真正的图像数据内容,而只是指明了这些图像的URL地址,当WEB浏览器访问这个网页文件时,浏览器首先要发出针对该网页文件的请求,当浏览器解析WEB服务器返回的该网页文档中的HTML内容时,发现其中的图像标签后,浏览器将根据标签中的src属性所指定的URL地址再次向服务器发出下载图像数据的请求.


而http1.1以后,支持了持久性的会话连接,在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延迟。一个包含有许多图像的网页文件的多个请求和应答可以在一个连接中传输,但每个单独的网页文件的请求和应答仍然需要使用各自的连接。HTTP 1.1还允许客户端不用等待上一次请求结果返回,就可以发出下一次请求,但服务器端必须按照接收到客户端请求的先后顺序依次回送响应结果,以保证客户端能够区分出每次请求的响应内容,这样也显著地减少了整个下载过程所需要的时间。
两者对比,以浏览器解析网页为例子:
这里写图片描述

可见,HTTP 1.1在继承了HTTP 1.0优点的基础上,也克服了HTTP 1.0的性能问题。不仅如此,HTTP 1.1还通过增加更多的请求头和响应头来改进和扩充HTTP 1.0的功能。例如,由于HTTP 1.0不支持Host请求头字段,WEB浏览器无法使用主机头名来明确表示要访问服务器上的哪个WEB站点,这样就无法使用WEB服务器在同一个IP地址和端口号上配置多个虚拟WEB站点。在HTTP 1.1中增加Host请求头字段后,WEB浏览器可以使用主机头名来明确表示要访问服务器上的哪个WEB站点,这才实现了在一台WEB服务器上可以在同一个IP地址和端口号上使用不同的主机名来创建多个虚拟WEB站点。HTTP 1.1的持续连接,也需要增加新的请求头来帮助实现,例如,Connection请求头的值为Keep-Alive时,客户端通知服务器返回本次请求结果后保持连接;Connection请求头的值为close时,客户端通知服务器返回本次请求结果后关闭连接。HTTP 1.1还提供了与身份认证、状态管理和Cache缓存等机制相关的请求头和响应头。

在http我们可以实现http1.0时代无法实现的功能如:文件断点续传
现在的http1.0协议虽然较http1.0有了很大的改变,但是还是无法满足我们对于逐渐丰富的网络资源的要求,所以我们迫切的需要下一代http协议来满足我们的要求:
由于http协议使一个 无状态的协议,一旦关闭连接,再次打开,服务器不会记得我们做过了什么操作,或者我们下一步该做些什么,虽然我们可以同cookie来实现标示用户,但是也还是很麻烦啊,另外http协议使被动的,一次请求,一次回复,无法一次请求多次回复,比如说,我们的网页中包含了多个连接,为什么服务器不能在我们的第一次请求后,就把所有的资源多次回复,发给我们呢,虽然这样的机制很好,但是现在的http1.1无法实现,
所以我们需要下一代http协议来实现,虽然现在目前的html5
标准中websoket协议可以实现客户端和服务端,双工通信,WebSocket protocol 是HTML5一种新的协议。它是实现了浏览器与服务器全双工通信(full-duplex),但是有好多浏览器还没有支持,普遍应用也很困难.所以现很多网站为了实现即时通讯,所用的技术都是轮询(polling)。轮询是在特定的的时间间隔(如每1秒),由浏览器对服务器发出HTTP request,然后由服务器返回最新的数据给客服端的浏览器。这种传统的HTTP request 的模式带来很明显的缺点 – 浏览器需要不断的向服务器发出请求,然而HTTP request 的header是非常长的,里面包含的数据可能只是一个很小的值,这样会占用很多的带宽。
而最比较新的技术去做轮询的效果是Comet – 用了AJAX。但这种技术虽然可达到全双工通信,但依然需要发出请求。
具体的Websocket 协议解析可以参考这篇文章:
http://www.myexception.cn/web/2047919.html
和这篇:http://www.51edu.com/it/bckf/76471.html

网络上对于下一代http协议的观点:

1 引言

  WWW取得了巨大成功,HTTP是取得成功的核心,它用于在Web上交换信息。当前Web遵循的HTTP/1.X,但它缺乏模块化的特点,性能也因而较差。
  HTTP/1.X包括三层,但它并没有清楚地区分开来:消息传输、通用远程方法调用和一系列用于文档处理的方法。缺乏模块化使得HTTP的发展非常困难,并且为其它应用带来问题,应用位于HTTP之上,因而不管技术是否合适都必须包括许多HTTP的设计。其它一些通用调用系统(如CORBA、DCOM、JAVA
RMI)也位于HTTP之上。HTTP/1.X缺乏模块化引起的问题包括:
  。HTTP/1.1中,消息界限的划分不是在一个单独的层中进行,而是与其它功能混在一起,导致有五种不同方法划分消息的界限,非常复杂。
  。一般的应用利用隧道(Tunneling)技术通过HTTP文档获取和表格处理方法(GET和POST)完成,这对于防火墙来说很难发现给定通信的语义内容,因而很难实施安全政策。
  。HTTP的调用层与文档处理应用很难区分开来,其它应用的设计者在理解如何为自己的应用使用调用层功能方面要做很多工作。
  另一方面HTTP协议在每次HTTP会话(一个请求和回应的过程)都打开一个新的TCP连接,这是对系统和网络资源的浪费。
  为了克服这些问题,W3C(World Wide Web consortium)从1997年开始研究制定下一代HTTP协议桯TTP-NG。

2 HTTP-NG的结构

  HTTP-NG的结构是一个三层系统如图1所示,最上层是应用层,中间是消息层,最下面是传输层。应用层和消息层的接口被称为撓⒔涌跀,消息层与传输层的接口被称为“传输接口”

2.1 应用层

  HTTP 1.1中定义的应用包括获取WEB页面,处理代理和缓存,使用CGI描述提交表格。它使用GET、HEAD、POST和PUT等方法。在HTTP-NG中,这些应用被抽象为传统WEB应用揟he
Classic Web
Application?TCWA)。系统使用一种机制决定哪种方法适用于哪种资源。一种支持TCWA的WEB资源支持TCWA对象,只接受由TCWA
API指定的方法。
  定义新方法的机制既支持静态类型又支持动态类型,动态类型支持当参数类型在将来需要扩展或者参数具有多个类型时非常有用。一个动态类型参数的实际类型,可以在运行时才确定。HTTP-NG的类型系统与Java
RMI,CORBA和DCOM协议的类型系统合作,使得这些系统中的API不需要使用隧道(Tunneling)技术,直接映射到HTTP-NG。它提供了与其它类型系统的功能兼容性。
  HTTP-NG的应用层是基于特定应用的,不同的应用具有不同的界面。它允许多个应用能共同存在,支持添加新的应用而不妨碍原有的应用。HTTP-NG将现存应用转换到一个更好的技术基础之上。

2.2 消息层

  消息系统描述了一种对应用层中类型系统可表示类型的值的编组(Marshaling)方法。编组方法是直接的,它独立于调用方法或当前支持的应用。编组方法是基于IETF的外部数据表示XDR,XDR在分布式系统中广泛被实现。所有方法的参数和结果在系统中被表达,因而不管有多少应用或者应用系统中定义了多少方法,都没有增加编组一个请求或应答消息的复杂性。
  消息层主要是一个请求应答消息协议,就像HTTP
1.1一样,但它在几个方面提高了性能,比如说它使用缓存和二进制消息格式来减少实际传输的字节数,同时也减少了编组消息所需的CPU时间,HTTP-NG消息层使用附加的控制信息,通过建立会话特征更进一步减少带宽要求。另一个性能提高来源于利用应用层的类型系统,消除每个头之间的依赖性,从而减少了实现的复杂性。
  消息格式现在被称为W3NG,它利用了会话缓存的技术,已经用于DCE RPC、JAVA
RMI中。举例来说,当一个方法或资源第一次被调用时,整个标识在应答消息中传输,此时连接双方都将它缓存。在后来的方法调用中,只需要一个很小的对应特定连接的整数值在传输中用来代替原来的标识。更进一步,这些缓存可被连接双方在建立连接时加载,这对于一些标准应用特别有用。
  一个方法调用的目标资源的传递是相对于前一个目标的。系统并不是传递整个资源的标识,而是传递与连接上一次资源标识中的不同部分。接受方通过在上次接受的标识中修改这些不同之处重新构建标识。
  HTTP-NG的消息格式是二进制的,不像HTTP-1.1中基于文本的格式,二进制格式在两个方面提高了性能。第一,非字符串值不需要由发送方转换为串,然后接受方解码。相反,可以使用有效的操作如memcpy直接从这些值的内存表示中进行拷贝。第二,这些值使用二进制表示要比用串表示所花字节数要少。
  与现存协议相比,HTTP-NG消息层所用技术能显著地减少开销。

2.3 传输层

  HTTP-NG支持由传输栈构成的特定应用,这些传输栈能操作那些通过它们的消息。传输层允许传输栈组成成分以多种顺序安排,它可以在一个可靠的字节流如TCP/IP之上提供多个虚拟连接,同时它还可以提供一个单一字节流的双向使用,这样服务器不需要打开附加的字节流就可以对客户进行回叫。它也提供在一个底层字节流之上的消息界限的标记,这可以用来支持高层基于消息的系统。它允许消息成块或分片传输,既可以复用同时发生的消息,又可以快速发送一个数据段开始部分的数据值(如GIF文件开始的文件大小信息)。
  用于HTTP-NG的WEBMUX栈是传输成分的非常有用的合成。它直接位于TCP/IP之上而位于编组层之下,但它也可以和其它传输成分如压缩和安全成分连接。WEBMUX层进行记录标记,并且支持消息的分片。它提供可选的传输流控制,所以接受者能控制发送方的传输率。它支持在一个单一的底层连接上复用最多252个虚拟连接。每个虚拟连接允许在WEBMUX层上有不同的传输栈。除此之外,WEBMUX层为连接双方提供端点(Endpoint)标识,这使得服务器使用同样的连接回叫客户更加容易。既然传递端点标识方法已经定义,防火墙也可以在必要时插入其中。
3 WEB浏览器和服务器结构
  在WEB中应用到至少两种参与者:WEB浏览器及WEB服务器。在HTTP-NG协议中的WEB浏览器和WEB服务器的可能结构如图2、3所示。WEB服务器为了处理许多类型的客户具有更多种类的协议和传输组成成分。图2中服务器即支持HTTP又支持HTTP-NG协议,而图3中WEB浏览器只支持HTTP-NG。服务器能在一个普通TCP/IP传输上支持HTTP-NG消息,而浏览器希望每个服务器上具有MUX协议。图中的浏览器可以支持数字符签名文档处理,而服务器不能。浏览器和服务器都在消息流中使用压缩。当然也可以应用许多其它可能的传输协议。一个代理服务器既具有客户端功能又具有服务器端的功能。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Coursera-ml-andrewng-notes-master.zip是一个包含Andrew Ng的机器学习课程笔记和代码的压缩包。这门课程是由斯坦福大学提供的计算机科学和人工智能实验室(CSAIL)的教授Andrew Ng教授开设的,旨在通过深入浅出的方式介绍机器学习的基础概念,包括监督学习、无监督学习、逻辑回归、神经网络等等。 这个压缩包中的笔记和代码可以帮助机器学习初学者更好地理解和应用所学的知识。笔记中包含了课程中涉及到的各种公式、算法和概念的详细解释,同时也包括了编程作业的指导和解答。而代码部分包含了课程中使用的MATLAB代码,以及Python代码的实现。 这个压缩包对机器学习爱好者和学生来说是一个非常有用的资源,能够让他们深入了解机器学习的基础,并掌握如何运用这些知识去解决实际问题。此外,这个压缩包还可以作为教师和讲师的教学资源,帮助他们更好地传授机器学习的知识和技能。 ### 回答2: coursera-ml-andrewng-notes-master.zip 是一个 Coursera Machine Learning 课程的笔记和教材的压缩包,由学生或者讲师编写。这个压缩包中包括了 Andrew Ng 教授在 Coursera 上发布的 Machine Learning 课程的全部讲义、练习题和答案等相关学习材料。 Machine Learning 课程是一个介绍机器学习的课程,它包括了许多重要的机器学习算法和理论,例如线性回归、神经网络、决策树、支持向量机等。这个课程的目标是让学生了解机器学习的方法,学习如何使用机器学习来解决实际问题,并最终构建自己的机器学习系统。 这个压缩包中包含的所有学习材料都是免费的,每个人都可以从 Coursera 的网站上免费获取。通过学习这个课程,你将学习到机器学习的基础知识和核心算法,掌握机器学习的实际应用技巧,以及学会如何处理不同种类的数据和问题。 总之,coursera-ml-andrewng-notes-master.zip 是一个非常有用的学习资源,它可以帮助人们更好地学习、理解和掌握机器学习的知识和技能。无论你是机器学习初学者还是资深的机器学习专家,它都将是一个重要的参考工具。 ### 回答3: coursera-ml-andrewng-notes-master.zip是一份具有高价值的文件,其中包含了Andrew Ng在Coursera上开授的机器学习课程的笔记。这份课程笔记可以帮助学习者更好地理解掌握机器学习技术和方法,提高在机器学习领域的实践能力。通过这份文件,学习者可以学习到机器学习的算法、原理和应用,其中包括线性回归、逻辑回归、神经网络、支持向量机、聚类、降维等多个内容。同时,这份笔记还提供了很多代码实现和模板,学习者可以通过这些实例来理解、运用和进一步深入研究机器学习技术。 总的来说,coursera-ml-andrewng-notes-master.zip对于想要深入学习和掌握机器学习技术和方法的学习者来说是一份不可多得的资料,对于企业中从事机器学习相关工作的从业人员来说也是进行技能提升或者知识更新的重要资料。因此,对于机器学习领域的学习者和从业人员来说,学习并掌握coursera-ml-andrewng-notes-master.zip所提供的知识和技能是非常有价值的。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值