计算机网络——应用层-Web&HTTP
计算机网络系列博文——目录
20世纪90年代初
因特网应用
Web应用的组成
由对象组成。对象是一个文件,如HTML文件,JPEG图像,Java程序,视频片段等。
对象可通过一个URL地址寻址。
Web页面常由一个HTML基本文件和多个引用对象构成。
URL(Uniform Resoure Locator):统一资源定位器 RFC1738
用以寻址Web对象
由一个存放对象的服务器主机名和对象路径名构成。
HTTP 由客户端程序和服务端程序实现,二者通过交换HTTP报文会话。
HTTP规范定义了HTTP客户端和服务端之间的通信协议。
Web浏览器实现HTTP客户端,请求、接收、展示Web对象
Web服务器实现HTTP服务端,响应客户的请求,发送对象
HTTP使用TCP作为支撑运输层协议。
端口:80
无状态协议 服务器不保存关于客户的任何信息
服务器向客户发送被请求的文件,而不存储任何关于客户的状态信息。
往返时间(Round-Trip Time,RTT)
一个短分组从客户到服务器然后再返回客户所花费的时间。
某客户和服务器的一次会话中,每个请求/响应对通过一个单独的TCP连接传输
HTTP 10版本使用非持续性连接
对多个待获得的web对象,客户端一次只请求一个对象,待前一个对象接收完毕后再发送对下一个对象的请求。
时间分析
浏览器通常支持并行的TCP连接。并行TCP连接数通常为5~10个。
对多个待获得的web对象,客户端一次可同时建立多个TCP连接,以同时请求多个web对象。
时间分析
某客户和服务器的一次会话中,所有请求/响应对经同一TCP连接传输
HTTP 11版本在默认方式下采用持续连接,但也可由客户端/服务器配置为非持续连接。
客户端只有收到前一个响应后才发送新的请求
可理解为同个TCP内的串行
时间分析
客户端只要遇到一个引用对象就尽快发出请求
可理解为同个TCP内的并行
HTTP 11的默认选项
时间分析
TCP 三次握手
1客户向服务器发送一个小TCP报文段;
2服务器用一个小TCP报文段做出确认和响应;
3客户向服务器返回确认和一个HTTP请求报文;
4服务器返回相应HTML文件;
HTTP规范
RFC 1945 , RFC 2616
用ASCII文本书写
HTTP协议有两类消息,请求消息(request)和响应消息(response)
请求行 HTTP请求报文的第一行
方法
首部行 请求行后继的其它行,包含一些会话信息
空行 回车换行,分隔首部行和实体体
实体体(entity body)
GET方法下实体体为空
POST方法下实体体包含表单信息
状态行
常见状态码
首部行
空行
实体体
包含了所请求的对象
HTTP是无状态协议,但cookie技术允许服务器识别用户
cookie在无状态的HTTP之上建立一个用户会话层
参见 [RFC 6265]
cookie组件
cookie技术的争议在于它可能泄露用户的隐私
代表原Web服务器来响应HTTP请求的网络实体
Web缓冲器通常由ISP购买并安装
允许缓存器证实其缓存的副本是新的。
如果缓存器有web对象最新的版本,则初始服务器不需要向缓存器发送该web对象
在HTTP请求消息中声明所持有版本的日期
If-modified-since: <date>
如果缓存的版本是最新的,则响应消息中不包含对象
HTTP/10 304 Not Modified
内容分发网络(Content Distribution Network,CDN)
基于缓存器技术,CDN公司在因特网上安装许多地理上分散的缓存器,使得大流量本地化。
有共享CDN(Akamai,Limelight),专用CDN(谷歌,微软)
在HTTP/10中,默认使用的是短连接。也就是说,浏览器和服务器每进行一次HTTP操作,就建立一次连接,但任务结束就中断连接。
如果客户端浏览器访问的某个HTML或其他类型的 Web页中包含有其他的Web资源,如JavaScript文件、图像文件、CSS文件等;当浏览器每遇到这样一个Web资源,就会建立一个HTTP会话。
我们模拟一下TCP短连接的情况,client向server发起连接请求,server接到请求,然后双方建立连接。client向server 发送消息,server回应client,然后一次读写就完成了,这时候双方任何一个都可以发起close操作,不过一般都是client先发起 close操作。为什么呢,一般的server不会回复完client后立即关闭连接的,当然不排除有特殊的情况。从上面的描述看,短连接一般只会在 client/server间传递一次读写操作。
短连接的优点是:管理起来比较简单,存在的连接都是有用的连接,不需要额外的控制手段。
WEB服务器也称为WWW(WORLD WIDE WEB)服务器,主要功能是提供网上信息浏览服 务。
(1)应用层使用HTTP协议。
(2)HTML文档格式。
(3)浏览器统一资源定位器(URL)。
WWW代表万维网的意思
Web服务器可以解析(handles)HTTP协议。当Web服务器接收到一个HTTP请求(request),会返回一个HTTP响应(response),例如送回一个HTML页面。为了处理一个请求(request),Web服务器可以响应(response)一个静态页面或,进行页面跳转(redirect),或者把动态响应(dynamic response)的产生委托(delegate)给一些其它的程序例如CGI脚本,JSP(JavaServer Pages)脚本,servlets,ASP(Active Server Pages)脚本,服务器端(server-side)JavaScript,或者一些其它的服务器端(server-side)技术。无论它们(译者注:脚本)的目的如何,这些服务器端(server-side)的程序通常产生一个HTML的响应(response)来让浏览器可以浏览。
要知道,Web服务器的代理模型(delegation model)非常简单。当一个请求(request)被送到Web服务器里来时,它只单纯的把请求(request)传递给可以很好的处理请求(request)的程序(译者注:服务器端脚本)。Web服务器仅仅提供一个可以执行服务器端(server-side)程序和返回(程序所产生的)响应(response)的环境,而不会超出职能范围。服务器端(server-side)程序通常具有事务处理(transaction processing),数据库连接(database connectivity)和消息(messaging)等功能。
虽然Web服务器不支持事务处理或数据库连接池,但它可以配置(employ)各种策略(strategies)来实现容错性(fault tolerance)和可扩展性(scalability),例如负载平衡(load balancing),缓冲(caching)。集群特征(clustering—features)经常被误认为仅仅是应用程序服务器专有的特征。
1 硬件服务器
硬件服务器是一种专门用来存储数据和资源的机器,其主要功能是运行操作系统和管理硬件资源。硬件服务器是一种结构完整的计算机系统,包括主板、CPU、内存、存储设备、网络设备等配件,通常用于存储大量数据和处理大量并发请求。
2 应用服务器
应用服务器是一种软件系统,用于处理和管理应用程序的请求和响应。它运行在硬件服务器上,为应用程序提供必要的服务和支持,包括事务处理、数据持久化、安全性、负载均衡等功能。应用服务器通常使用Java、Net等开发平台,支持多种Web协议和网络通信方式。
3 Web服务器
Web服务器是一种软件系统,用于提供Web服务和处理HTTP请求和响应。它运行在硬件服务器上,为Web应用程序提供必要的服务和支持,包括HTTP协议处理、静态资源管理、动态脚本处理、缓存管理、负载均衡等功能。Web服务器通常使用Apache、IIS等软件实现,支持多种Web协议和网络通信方式。
综上所述,硬件服务器、应用服务器、Web服务器都是重要的服务器类型,它们各自有不同的功能和特点。硬件服务器主要提供硬件资源管理和存储服务,应用服务器提供应用程序支持和管理服务,Web服务器则主要负责Web服务和HTTP通信。在实际应用中,这些服务器通常需要相互协作,组成一个完整的服务器系统,为客户端提供高效、稳定的服务。
http和www的区别:
HTTP是超文本传输协议(HyperText Transfer Protocol)的缩写,是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。
HTTP协议功能:用于从WWW服务器传输超文本到本地浏览器的传输协议。它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示(如文本先于图形)等。
WWW是环球信息网(World Wide Web )的缩写,也可以简称为Web,中文名字为“万维网”。
HTTP提供了访问超文本信息的功能,是WWW浏览器和WWW服务器之间的应用层通信协议。WWW使用HTTP协议传输各种超文本页面和数据。
WWW采用客户机/服务器的工作模式,工作流程具体如下:
用户使用浏览器或其他程序建立客户机与服务器连接,并发送浏览请求;
Web服务器接收到请求后,返回信息到客户机;
通信完成,关闭连接。
https协议和http有着很大的区别。总的来说,http效率更高,https安全性更高。
首先谈谈什么是HTTPS:
HTTPS(Secure Hypertext Transfer Protocol)安全超文本传输协议 它是一个安全通信通道,它基于HTTP开发,用于在客户计算机和服务器之间交换信息。它使用安全套接字层(SSL)进行信息交换,简单来说它是HTTP的安全版。 它是由Netscape开发并内置于其浏览器中,用于对数据进行压缩和解压操作,并返回网络上传送回的结果。HTTPS实际上应用了Netscape的安 全全套接字层(SSL)作为HTTP应用层的子层。(HTTPS使用端口443,而不是象HTTP那样使用端口80来和TCP/IP进行通信。)SSL使 用40 位关键字作为RC4流加密算法,这对于商业信息的加密是合适的。HTTPS和SSL支持使用X509数字认证,如果需要的话用户可以确认发送者是谁。
HTTPS和HTTP的区别:
https协议需要到ca申请证书,一般免费证书很少,需要交费。 http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议 http和https使用的是完全不同的连接方式用的端口也不一样,前者是80,后者是443。
http的连接很简单,是无状态的 HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议 要比http协议安全 HTTPS解决的问题:
1 信任主机的问题 采用https 的server 必须从CA 申请一个用于证明服务器用途类型的证书 改证书只有用于对应的server 的时候,客户度才信任次主机 所以目前所有的银行系统网站,关键部分应用都是https 的 客户通过信任该证书,从而信任了该主机 其实这样做效率很低,但是银行更侧重安全 这一点对我们没有任何意义,我们的server ,采用的证书不管自己issue 还是从公众的地方issue, 客户端都是自己人,所以我们也就肯定信任该server
2 通讯过程中的数据的泄密和被窜改
一般意义上的https, 就是 server 有一个证书
a) 主要目的是保证server 就是他声称的server 这个跟第一点一样
b) 服务端和客户端之间的所有通讯,都是加密的 i 具体讲,是客户端产生一个对称的密钥,通过server 的证书来交换密钥 一般意义上的握手过程 ii 加下来所有的信息往来就都是加密的 第三方即使截获,也没有任何意义因为他没有密钥 当然窜改也就没有什么意义了
少许对客户端有要求的情况下,会要求客户端也必须有一个证书
a) 这里客户端证书,其实就类似表示个人信息的时候,除了用户名/密码, 还有一个CA 认证过的身份 应为个人证书一般来说上别人无法模拟的,所有这样能够更深的确认自己的身份
b) 目前少数个人银行的专业版是这种做法,具体证书可能是拿U盘作为一个备份的载体像我用的交通银行的网上银行就是采取的这种方式。 HTTPS 一定是繁琐的 a) 本来简单的http协议,一个get一个response 由于https 要还密钥和确认加密算法的需要单握手就需要6/7 个往返 i 任何应用中,过多的round trip 肯定影响性能 b) 接下来才是具体的http协议,每一次响应或者请求, 都要求客户端和服务端对会话的内容做加密/解密 i 尽管对称加密/解密效率比较高,可是仍然要消耗过多的CPU,为此有专门的SSL 芯片 如果CPU 信能比较低的话,肯定会降低性能,从而不能serve 更多的请求
符:SSL的简介:
SSL是Netscape公司所提出的安全保密协议,在浏览器(如Internet Explorer、Netscape Navigator)和Web服务器(如Netscape的Netscape Enterprise Server、ColdFusion Server等等)之间构造安全通道来进行数据传输,SSL运行在TCP/IP层之上、应用层之下,为应用程序提供加密数据通道,它采用了RC4、MD5 以及RSA等加密算法,使用40 位的密钥,适用于商业信息的加密。同时,Netscape公司相应开发了HTTPS协议并内置于其浏览器中,HTTPS实际上就是SSL over HTTP,它使用默认端口443,而不是像HTTP那样使用端口80来和TCP/IP进行通信。HTTPS协议使用SSL在发送方把原始数据进行加密,然 后在接受方进行解密,加密和解密需要发送方和接受方通过交换共知的密钥来实现,因此,所传送的数据不容易被网络黑客截获和解密。 然而,加密和解密过程需要耗费系统大量的开销,严重降低机器的性能,相关测试数据表明使用HTTPS协议传输数据的工作效率只有使用HTTP协议传输的十 分之一。假如为了安全保密,将一个网站所有的Web应用都启用SSL技术来加密,并使用HTTPS协议进行传输,那么该网站的性能和效率将会大大降低,而 且没有这个必要,因为一般来说并不是所有数据都要求那么高的安全保密级别,所以,我们只需对那些涉及机密数据的交互处理使用HTTPS协议,这样就做到鱼与熊掌兼得。总之不需要用https 的地方,就尽量不要用。
Web服务器的基本功能就是提供Web信息浏览服务。它只需支持HTTP协议、HTML文档格式及URL。与客户端的网络浏览器配合。因为Web服务器主要支持的协议就是HTTP,所以通常情况下HTTP服务器和WEB服务器是相等的。
通俗的讲,Web服务器传送(serves)页面使浏览器可以浏览,然而应用程序服务器提供的是客户端应用程序可以调用(call)的方法(methods)。确切一点,你可以说:Web服务器专门处理HTTP请求(request),但是应用程序服务器是通过很多协议来为应用程序提供(serves)商业逻辑 (business logic)。
以Java EE为例,Web服务器主要是处理静态页面处理和作为 Servlet容器,解释和执行servlet/JSP,而应用服务器是运行业务逻辑的,主要是EJB、 JNDI和JMX API等J2EE API方面的,还包含事务处理、数据库连接等功能,所以在企业级应用中,应用服务器提供的功能比WEB服务器强大的多。
以这样的定义,IIS、Apache、Tomcat都可以属于Web服务器,Weblogic、WebSphere都属于应用服务器。
0条评论