计算机网络 2. 应用层
应用架构application architecture。一般网络应用,有两种结构,客户机/server建筑建筑及同行(P2P)。
顾客/server架构client-server architecture于。称为server,它为来自客户机的请求提供服务。客户机之间不进行直接通信。server拥有固定的周知的地址,称为IP地址,且总是处于打开状态。常会出现一台server主机跟不上其全部客户机请求的情况。常使用主机群集a cluster of hosts或者称为server场server farm,创建强大的虚拟server。基于客户机server体系结构的应用服务一般是基础设施密集的infrastrucuture intensive。由于要购买,安装和维护server场。
在P2P体系结构中,对总是打开的基础设施server有最小或者没有依赖。随意时间连接的主机对称为对等方peers,直接通信。
p2p中,最突出的特性是它的自扩展性self-scalability。
进行通信的实际是进程process。而不是程序。
不同端系统的进程通过跨越计算机网络交换报文而相互通信。
分为客户机进程和server进程。
在给定的一对进程之间的通信会话中,发起通信的进程为客户机进程,而等待联系的进程为server进程。
进程通过一个称为套接字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:在报文開始流动前,客户机程序和server程序之间交换运输层控制信息。即握手过程 handshaking。握手过程提示客户机和server做好了传输分组的准备。握手后。在两个进程的套接字sockets之间建立了一个TCP连接TCP connection。
可靠传输数据服务reliable data transfer service:进行通信的进程,无差错。按顺序交付发送的数据。
UDP服务是无连接的。没有握手过程。udp不能保证报文可以正确被接收。且没有拥塞控制机制。
进程寻址addressing processes:须要主机的名称或地址和用来指定目的主机上接收进程的标志。主机是用IP地址来进行标识的。进程由 目的地端口号port number来指定。
在一个主机上可能同一时候有多个进程都要使用同一个port。如多个浏览器都用80port来浏览网页。可是操作系统规定了一个时间仅仅能有一个进程在使用port和监听port,即当你让一个进程获得焦点时。就是它在使用port,而其它进程无法使用port。
应用层协议定义了:
交换的报文类型,如请求报文和响应报文。
各种报文的syntax语法,如报文中每一个字段及其具体描写叙述。
字段的语义。即包括在字段中的信息的含义。
进程何时以及怎样发送报文,以及对报文进行响应的规则。
应用层协议是网络应用的一部分。
Web应用和HTTP协议:
web的应用层协议为 超文本传输协议HyperText Transfer Protocol HTTP。
HTTP由两部分程序实现,一个客户机程序。一个server程序。
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,为一个分组从客户机到server再回到客户机的时间。而每一个TCP连接都有三次握手的过程。
HTTP报文:
请求报文Response Message:请求报文的第一行叫做请求行require line。其后继的行叫做首部行header line。剩下的行为实体主体entity body。
请求行有三个字段field:方法字段。URL字段和HTTP版本号。方法字段的取值为GET,POST,HEAD,PUT,DELETE。
套接字编程。
待续。
版权声明:本文博主原创文章。博客,未经同意不得转载。