§2.0 应用层概述

在这里我们面对我们最初的想法。我最最最初的目的不过是通过计算机网络实现一些我想要实现的功能。因为在现实中人们有着这样的需求。对于现在基本上每家都要计算机电脑的年代,各种应用大家想必是十分清楚。在这一节简单的概述一下网络应用的一些原理以及架构

首先是在应用层,它的目的是提供应用进程于通信进程的接口,规定应用进程直接通信时所遵守的协议。

网络应用的核心是需要开发人员开发出能够运行在不同的终端系统上并且彼此进行通信的程序。如果说不考虑网络双方进行通信那么就没什么网络的意义了。既然网络的双方需要进行通信,那么这个通信是什么样的结构呢?

客户机/服务器体系架构(client-servicer architecture)

我们想现实中的情况:对于课堂上或者是一般的情况来说。A和B(B是老师)进行通信,A对日常的学习中有些困惑,就会想B进行发问,B会根据自己的学识,对A进行回答。网络中的情况也是类似的,即网络中大部分情况采用了客户机/服务器体系架构(client-servicer architecture)。其中服务器在网络世界中扮演了课堂中老师的角色,由于它是机器,人们要求了其无时无刻都在处于打开状态。然后运用服务器上的服务进程,进而响应客户机上的请求。对于客户机来说,就要求没那么严格,客户机并不是像服务器那样时刻处于待命状态。

下面举一个例子:比如大家都在打LOL,你有可能凌晨想玩了,就开一把;中午想玩了,就开一把。如果你想玩的时候,你就会打开你的电脑,启动LOL的客户端程序。LOL的客户端程序就会向LOL的服务器发出一系列请求。要求服务器提供这个,提供那个,进而你进入了游戏。对于服务器来说,服务器不能关闭,因为客户打游戏的时间并不是固定的,而是偶尔心血来潮了就玩一把。面对客户机发出的请求,服务器将要调用相应的服务进程进行响应。同时你打LOL,LOL在你主机上的客户端是和服务器进行直接通信,和你LOL中的队友进行间接通信。毕竟对方的客户机上可能并没有能处理你技能效果的程序,如你使用寒冰放了大,对方的主机可能并不知道你在干什么,服务器根据你发出来放大的请求,处理了这个请求,再发送给同一局内所有的玩家。大家才看到了你放大的效果,进而进行规避动作。

同时服务器的IP地址(现在知道有这么个东西就行了,理解为现实中的地址也勉强可以)是固定不变的,甚至是众所周知的。参考现实中的政务部门,提前xx市政府,大家都知道政府在哪里,固定的时间政府上班处理事情(服务器由于几乎不需要休息,所以提供了实时服务),然后去政府办事。但是如果政府搬到了B家里,那么就乱套了,首先你不知道B家在哪里,其次你不知B家什么时候有人在家。所以类似的客户机总是能够向服务器地址发送出自己的请求,服务器进行响应。

P2P体系架构

相对于客户机/服务器架构,还有另一种P2P体系架构。这种情况下就没有了之前课堂上的情况,双方的对等的,就好像是现实中在聊天一样。你一句我一句。代表应用比如Skype或者文件传输应用。这种通信不用通过专门的服务器。

对于这两种主流价格,还有一些应用结合了这两种体系结构,比如QQ,发一条消息给别人,对方是会及时收到,不过腾讯的服务器也会有保存你们的聊天记录(想想感觉有点可怕)。或者一些及时通信应用,通信是点对点的,但是仍然有服务器为通信提供IP追踪服务。

通信

在多数应用程序中的通信进程进行通信时,应用层的软件会将根据应用层协议规范的数据报文向下进行交付。进程通过被称为套接字的软件接口在网络上进行发送。这里套接字有一点相似之前说的SAP。套接字还有学术一点的名字被称为应用程序编程接口。向传输层协议交付数据。之后便是应用层的软件对传输层协议的选择。

传输层协议的选择可以参考四个方面(参考至James F.Kurose 的《计算机网络自顶向下》)。可靠性、吞吐量、定时、安全。

可靠性:由于应用层提供多种传输协议最有名的如TCP、UDP。应用层的软件根据自身的数据的重要性选择可靠协议还是不可靠协议。比如:电子邮件、文件传输等情况,要求传输可靠,错一个比特可能会造成乱码,或者是文件不能使用。 但是对应即时通讯这种及时性比可靠性更重要的应用,就可能会选择不是那么可靠的传输协议。如视频电话时个别像素看不清出错了是可以接受的,但是一卡一卡的,使用者就很难接受。

吞吐量:吞吐量是应用层软件考虑的因素之一。还是那个情况。比如电子邮件、文件传输这些应用。吞吐量低,那么我可以发慢一点。不着急的话,我电脑开一天挂者。但是如即时通讯这一类媒体应用,如果传输层的协议能够提供一定的吞吐量,或者吞吐量不达标的情况下,应用无法使用也是很不错的。毕竟即时通讯时,始终在卡顿听不清楚,不如不开启。(协议未实现,通过一些小技巧勉强实现的)

定时:定时和吞吐量都能够决定即时应用的客户体验。视频会议,视频通话,延迟过高是无法接受的。有些延迟还可以接受,如大家看到某处地震了,必须通过卫星通信,你们看到电视上的主持人在接通前线记者的通信时,总是会延迟一段时间。这就是延迟。电视上那种还能够接受,如果延迟一小时或者10分钟,很多人就已经接受不了了。(协议未实现,通过一些小技巧勉强实现的)

安全:应用层也希望传输层能提供安全传输。比如应用层交付给传输层的数据,传输层在发送的全程进行了数据加密,接收方的传输层转交给应用层的时候再进行解密。这里说一下ssl(Secure Socks Layer)。SSL TCP,SSL VPN等这些在如今都很有市场。因为其对传输进行了加密,进一步保证了传输的安全。

协议

应用层的协议定义了不同的端系统上面的应用的进程如何传递数据。就像我们一开始说的一样,协议不过是一组规则。应用层的协议主要定义:
报文的类型,如:请求报文、响应报文
语法:报文中设置哪些字段
语义:字段中的信息的意义
时序:进程何时发送报文,以及报文进行响应的规则

这里需要明确:应用层软件和应用层协议是完全不一样的东西。应用层的协议是网络应用的一部分。如SMTP是发送邮件的协议,但是它并不是发送邮件的应用。只是其一部分罢了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值