一,网络应用的体系架构
二,分布式应用进程之间完成通信需要解决的三大问题
1)对进程进行标识和寻址:引入了端口号来区分不停的应用进程。分别有2的16次方个TCP或UDP端口号可供使用。
2) 应用层是通过下层传输层提供的服务来实现进程通信的,应用层需要向传输层传输的内容有:源IP+(TCP、UDP)应用进程端口号,数据内容,目标IP+(TCP、UDP)应用进程端口号。之后传输层再根据这些信息进行下一步封装。
但是如果两个进程之间通信持续较长的时间,而每一次都需要传输这三个内容信息给传输层,会造成一定的信息冗余,降低了效率。那么有没有办法可以在这这种情况下不必要每次都重复发送IP和端口号,从而减小层间传输的信息量呢?下面引入Socket的概念。
Socket就是一个整数,代表了一个四元组(TCP——>源IP,源端口,目标IP,目标端口)或者二元组(UDP——>源IP,源端口),在本地标识,在对方主机是不知道的,便于OS管理和使用,减少应用层和传输层之间的通信。
3)
三,应用层协议
1)
URL:在WWW上,每一信息资源都有统一且在网上唯一的地址,该地址就叫URL(Uniform Resource Locator,统一资源定位符)。
URL的格式:协议://<用户名>:<密码>@<主机>:<端口>/<url路径><文件名>
实际上可能会省略“<用户名>:<密码>@”,“ :<密码>”,“ :<端口>”,和“/<url路径>”这些部分的某些或者全部。
常见的URL协议如下:
各种传输协议有默认端口号,如http的默认端口为80。如果输入时省略,则使用默认端口号。有时候出于安全或其他考虑,可以在服务器上对端口进行重定义,即采用非标准端口号,此时,URL中就不能省略端口号这一项。
2)
WWW:这些web网页的集合就是万维网,万维网WWW是World Wide Web的简称。WWW服务器通过超文本标记语言(HTML)把信息组织成为图文并茂的超文本,利用链接从一个站点跳到另个站点。这样一来彻底摆脱了以前查询工具只能按特定路径一步步地查找信息的限制。早期由于电话拨号上网方式等等原因,所以WWW 又被戏称为World Wait Web。
HTTP:超文本传输协议(Hyper Text Transfer Protocol,HTTP)是一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。
HTTP运行在TCP之上的具体过程:
(客户端发送请求时本地建立起来一个Socket,服务器响应时服务器主机建立另一个Socket)
用户输入一个URL,这时客户端web浏览器通过Socket在TCP(传输层)上发送连接请求,服务器等待接受连接请求并通过Socket发送响应回客户端浏览器;接着客户端发送HTTP请求报文,通常这个传输时间可以忽略,因为请求报文往往是很小的分组,注意不是传播时间,服务器收到报文之后,在本地找到客户端请求的数据对象封装在响应报文上,通过Socket发送回来给客户端,这个分组传输时间就不能忽略了;最后客户端请求关闭连接,服务器同意关闭连接,这样,一次HTTP连接就结束了。但是这是早期的非持久的HTTP协议,现在大多是持久的HTTP协议,客户端不会在接受服务器发送的响应报文之后发送关闭连接请求,而是可以保持TCP连接状态,继续向服务器发送HTTP报文请求。
3)HTTP报文请求和报文响应
(User-agent表示客户端发送请求应用的版本号,Connection表示请求报文得到响应之后关闭TCP连接,因为持久型的HTTP也支持得到响应后关闭连接。)
根据HTTP标准,HTTP请求可以使用多种请求方法。
HTTP1.0定义了三种请求方法: GET, POST 和 HEAD方法。
HTTP1.1新增了五种请求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法。
所以如果是post,则在最后换行符之后还可能有一些报文实体表示提交的内容。
(server表示服务器的类型,Last-modified表示响应的内容上次修改的时间,Content-length和Type分别表示响应报文的大小和类型)
状态行有以下几种:
4)HTTP是无状态的协议,也就是服务器不维护客户端的状态,这种方式的好处就是简单,服务器可以搭载更多的客户端。但是如果服务内容是是文件共享,电子商务等等,服务器就需要维护用户的状态,比如用户名的信息,购物车的内容,这个时候无状态的方式就不实用了,这样就得引入cookie这种方法进行补充。
cookie:Cookie实际上是一小段的文本信息。客户端请求服务器,如果服务器需要记录该用户状态,就使用response向客户端浏览器颁发一个Cookie。客户端浏览器会把Cookie保存起来。当浏览器再请求该网站时,浏览器把请求的网址连同该Cookie一同提交给服务器。服务器检查该Cookie,以此来辨认用户状态。服务器还可以根据需要修改Cookie的内容。
(技术都是双刃剑)
四,代理服务器(web缓存)
(如果不用web缓存只用路由的话,流量强度接近于1,从而使排队延时很长)
(带宽由1.54变大就可以解决拥堵问题,但是代价很高)
那么还有什么可行的方法呢?代理服务器本地缓存!
在本地的路由网建立一个proxy代理服务器,用户请求先经过这个服务器进行请求,这样就不用用到链路带宽去访问目的服务器,而用户的一部分需求是可以在代理服务器中找到的,只有一部分找不到的再由代理服务器去目的服务器中寻找。 代理服务器是连接Internet与Intranet的桥梁。
代理服务器不仅可以实现提高浏览速度和效率的功能,它还可以实现网络的安全过滤、流量控制(减少Internet使用费用)、用户管理等功能,因此它既是一种网络防火墙技术,同时也可以解决许多单位连接Internet引起IP地址不足的问题。
(解决了代理服务器,web缓存和目的服务器数据一致性的问题。)