应用程序体系结构application architecture,一般网络应用程序有两种结构,客户机/服务器体系结构和对等体系结构(P2P)。
在客户机/服务器体系结构client-server architecture中,有一个总是打开的主机称为服务器,它为来自客户机的请求提供服务。客户机之间不进行直接通信。服务器拥有固定的周知的地址,称为IP地址,且总是处于打开状态。常会出现一台服务器主机跟不上其所有客户机请求的情况。常使用主机群集a cluster of hosts或者称为服务器场server farm,创建强大的虚拟服务器。基于客户机服务器体系结构的应用服务通常是基础设施密集的infrastrucuture intensive,因为要购买,安装和维护服务器场。
在P2P体系结构中,对总是打开的基础设施服务器有最小或者没有依赖。任意时间连接的主机对称为对等方peers,直接通信。p2p中,最突出的特性是它的自扩展性self-scalability。
进行通信的实际是进程process,而不是程序。不同端系统的进程通过跨越计算机网络交换报文而相互通信。分为客户机进程和服务器进程。在给定的一对进程之间的通信会话中,发起通信的进程为客户机进程,而等待联系的进程为服务器进程。
进程通过一个称为套接字socket的软件接口在网络上发送和接收报文,套接字是应用程序与网络之间的应用程序编程接口API。
可以根据可靠数据传输,吞吐量,定时和安全性对应用程序服务进行分类。
可靠数据传输:可靠数据传输reliable data transfer,运输层进行可靠的数据传输,当运输层使用这种服务时,就可以相信该数据无差错的到达接收进程。当一个运输层协议不提供可靠数据传输时,对于容忍丢失的应用loss-tolerant application,如多媒体应用,一定程度的数据丢失是可以接受的。
吞吐量throughput:具有吞吐量要求的程序称为带宽敏感应用bandwidth-sensitive application,大多多媒体应用都是带宽敏感的。而弹性应用elastic appliction能够根据需要充分利用可供使用的吞吐量。
定时timing:运输层协议也提供定时保证,如同保证吞吐量一样。不同的应用程序对时间限制不同。
安全性security:运输层协议能够为应用程序提供一种或多种安全性服务。
因特网或者可以说是TCP/IP网络上的应用使用两个运输层协议:UDP和TCP。
TCP服务:包括面向连接服务和可靠数据传输服务。当应用层程序调用tcp协议作为它的运输层协议时,该应用程序就获得了这两种服务。
面向连接服务 connection-oriented service:在报文开始流动前,客户机程序和服务器程序之间交换运输层控制信息,即握手过程 handshaking。握手过程提示客户机和服务器做好了传输分组的准备。握手后,在两个进程的套接字sockets之间建立了一个TCP连接TCP connection。
可靠数据传输服务reliable data transfer service:进行通信的进程,无差错,按顺序交付发送的数据。
UDP服务是无连接的,没有握手过程。udp不能保证报文能够正确被接收。且没有拥塞控制机制。
进程寻址addressing processes:需要主机的名称或地址和用来指定目的主机上接收进程的标志。主机是用IP地址来进行标识的。进程由 目的地端口号port number来指定。
在一个主机上可能同时有多个进程都要使用同一个端口,如多个浏览器都用80端口来浏览网页,但是操作系统规定了一个时间只能有一个进程在使用端口和监听端口,即当你让一个进程获得焦点时,就是它在使用端口,而其他进程无法使用端口。
应用层协议定义了:
交换的报文类型,如请求报文和响应报文。
各种报文的syntax语法,如报文中每个字段及其详细描述。
字段的语义,即包含在字段中的信息的含义。
进程何时以及如何发送报文,以及对报文进行响应的规则。
应用层协议是网络应用的一部分。
Web应用和HTTP协议:
web的应用层协议为 超文本传输协议HyperText Transfer Protocol HTTP。HTTP由两部分程序实现,一个客户机程序,一个服务器程序。
Web页面Web page是由对象组成的,对象object就是文件,html文件,图片文件,视频文件等。文件通过url地址寻址。web一般包含一个基本的HTML文件和几个引用对象。
HTTP使用TCP作为运输层协议。HTTP不保存关于客户机的任何信息,是一个无状态协议stateless protocol。
非持久连接non-persistent connection:每个请求/响应经一个单独的TCP连接发送。
持久连接persistent connection:所有的请求经由相同的TCP连接发送。HTTP默认使用持久连接。
对于非持久连接,当一个网页有多个引用时,每一次对引用文件的加载都需要创建一个新的连接来传输数据。往返时间Round-Trip Time RTT,为一个分组从客户机到服务器再回到客户机的时间。而每个TCP连接都有三次握手的过程。
HTTP报文:
请求报文Response Message:请求报文的第一行叫做请求行require line,其后继的行叫做首部行header line,剩下的行为实体主体entity body。请求行有三个字段field:方法字段,URL字段和HTTP版本。方法字段的取值为GET,POST,HEAD,PUT,DELETE。
套接字编程。
待续。