应用层协议原理(一)
分层体系结构的优点可以很好地在这里体现,应用层应用程序的开发不需要关心网络核心设备上运行的要求,因为网络核心设备只能对网络层及以下起作用,够不到应用层。
1. 网络应用程序体系结构
不同于网络体系结构
1.对于研发者来说,网络体系结构是固定的,其提供的服务集合能为之所用。
2.网络应用程序体系结构就是研发者设计的,规定如何在各种端系统上组织该应用程序。
两种主流应用体系结构
客户-服务器体系结构
服务器具有固定周知的地址,且总时打开。
客户之间不直接通信,客户只通过服务器的IP地址与服务器通信。
解决一服务器对多用户的问题:配备大量的数据中心,创建强大的虚拟服务器。
例如:Web,FTP,telnet,电子邮件等等。
P2P体系结构
不通过专门的服务器,是对等方和对等方之间的通信。
应用程序对位于数据中心的专用服务器又很小的依赖,甚至没有。
例如许多流量密集型应用:共享文件(Bit Torrent、对等方协助下载加速器(迅雷)等。
当然还有混合的,比如许多即时讯息应用
服务器跟踪用户的IP地址--->L客户-服务器体系结构
用户与用户之间的报文在主机之间直接发送--->P2P体系结构
2. 进程通信
进行通信实际上就是进程(process),而不是程序。一个进程可以被认为是运行在端系统上的一个程序。
多个进程在同一端系统上时,直接使用进程间通信机制进行通信,且通信规则由操作系统来决定。
当进程在不同端系统上,相互之间进行通信,需要怎么办呢?就是发送端生成报文并向网络中发送,接收端接受报文并可能通过回送报文进行响应。
客户和服务器进程
网络应用程序由好多好多进程对组成,进程对中两个重要的角色,客户(client)和服务器(server)。
Web应用程序中,web服务器->服务器进程,浏览器是客户进程。
P2P文件共享系统中,上传文件的为服务器,下载文件的是客户。
注:尽管P2P中某个进程既是客户又是服务器,但在任何一个给定进程对之中,他的身份总时确定的。
在一对 进程之间的通信会话场景中,发起通信的进程被标识为客户,在绘画开始时等待联系的是服务器。
进程与计算机网络之间的接口
首先要先清楚一个很重要的概念:套接字(socket)。
套接字是应用层和运输层之间的接口。
由于套接字是建立网络应用程序的可编程接口,所以套接字也被称为应用程序编程接口(Application Programming Interface)。
注意:应用程序开发者可以控制套接字在应用层端的一切,但是对运输层端几乎没有控制权。对运输层端的控制仅限于
1.选择传输协议。
2.设定几个运输层参数(最大缓存和最大报文长度等)。
一旦选择了一个运输层协议,应用程序就建立在由该协议提供的运输层服务之上。
进程寻址
从一台主机将分组发到另外一台主机,需要标识接收进程的地址,不然怎么找得到哦。如何定义呢?
1.目的地主机地址(由IP地址(IP address)唯一标识)。
2.指定运行在接收主机上的接收进程,具体地说,是接收套接字。(通过端口号(port number)标识)
大概就像去图书馆找书,图书馆的地址就是所谓的主机地址,是自己学校的图书馆而不是其他学校的,找的书也有属于自己的书单号,图书馆中那么多的书,以不同的编号区分,这就类似与端口号。一台主机上运行的多个进程,就好比一个图书馆里的多本书,一样一样的。