首页 > 编程知识 正文

编程自顶向下方法,运行在应用层的协议

时间:2023-05-04 22:46:23 阅读:176151 作者:1660

在前一章中大致理解了互联网的整体情况。 简述了两台主机之间的通信过程。 让我们再回顾一下这个过程。 一台主机向另一台主机发送信息,信息首先经过自己主机的5层封装,通过物理层链路发送到路由器或线路转换器,然后经过目标主机的5层分解,最终用户得到了你想要发送的信息。 其中最重要的自然是网络的五个层面,自上而下分别是应用层、传输层、网络层、链路层、物理层第一章,我们大致了解了整个网络世界的框架。 其次,需要更深入地了解每个层面。 根据自上而下的原理,自然需要介绍应用层

开始之前我们先问自己一个问题。 我们为什么需要互联网?

回答这个问题的方法非常简单。 想象一下如果我们丢了网会怎么样。 断网的一天,你不能在家,不能和别人玩游戏、发消息、在网上浏览信息…正因为我们需要这些服务,我们才需要网络来实现。 这些服务也称为互联网APP应用。 有趣的互联网APP应用是互联网成功的原动力,这些APP应用处于被称为APP应用层的水平。

2.1 APP应用层协议的原理现在让我们假设你有一个好主意。 例如,假设您希望创建一个互联网APP应用程序,以创建一个用户可以共享彼此喜欢的音乐的APP应用程序。 那么该如何实现呢? 您可能需要使用c、c、JAVA、Python等编程语言创建此APP应用程序。 此外,在需要在不同的系统上运行此APP应用程序可能有些大,但幸运的是,需要考虑不需要写在网络核心设备如路由器或者链路层交换机上运行的软件的设计方法。需要考虑网络层由此类推,编写APP表示需要利用传输层的一些功能来满足所有需要的要求。

2.1.1网络APP应用体系结构网络程序的体系结构明显不同于网络的体系结构。 网络的体系结构是确定的5个等级,但是程序的体系结构设计会根据程序员的想法而变动。 这里介绍两个主要框架

客户端——服务器体系结构对等(P2P )客户端——服务器体系结构在此体系结构中,始终打开的服务器会响应客户端。 例如,最有名的搜索引擎——谷歌就采用了这种模式。 该模型通过服务器传输信息,而不是在两个浏览器之间直接通信。 这样大的服务器也被称为数据中心。 需要更多的资金,因为需要满足大量的用户需求。 该模型的优点是,如果服务器足够强大,可以立即安全地传输数据。

P2P模式与前一模式的最大区别在于,它不需要服务器的帮助。 APP应用程序直接在断续连接的主机之间通信,这些主机称为对等主机。 另外,P2P最吸引人的地方是自拓展性。 例如,在P2P文件共享APP应用中,每个对等方通过请求文件来生成工作负载,而每个对等方通过向其他对等方分发文件来提高系统的服务能力。 这种模式不需要服务器,更经济。 但是,高度非集中的结构面临着安全性、性能、可靠性等课题。

2.1.2在构建进程通信网络APP之前,您还需要基本了解在多个终端系统上运行的进程如何进行通信。 用操作系统的术语来说,进行通信的实际上是进程(process)。 那么,什么是过程呢? 简单来说,就是正在执行的程序。 在同一主机上运行的不同进程通过进程间的通信机制相互通信。 进程之间的相互通信规则由操作系统决定。 在不同的主机之间进行进程通信的方式是通过计算机网络在交换报文之间相互通信。 在此,分析2台主机之间的进程通信。

客户和服务器流程

网络APP的过程一定是成对出现的,这个比较容易理解,毕竟你需要和别人通信,这两台主机有什么不同? 通常,发起通信的过程是客户在会话开始时等待联系的主机是服务器

我知道APP应用层会通过传输层完成消息的交换,那么具体的流程呢? 传输层通常为APP应用层提供软件接口。 客户端消息(也称为套接字(socket))放置在主机套接字软件中,服务器套接字软件接收客户端消息。 套接字是构建在网络APP应用中的可编程接口,因此也称为http://www.Sina.com/(applicationprogramminginterfaceapi ),程序员使用套接字因此,对于一般的网络编程来说套接字是工作中最常见的编程工作。

进程寻址

通信的过程与邮件的发送类似。 如果不在信息中注明应用程序编程接口自身主机的地址,通信将无法正确连接。 在internet上,主机由目的主机中指定接受进程的标识符标识。 简单来说,IP地址是32位的量,可以像个人的身份证一样唯一地识别主机。 标识符也称为IP地址

服务器需要接受多个客户端的请求,但是每个客户端请求的内容可能不同,所以再细致的分为不同的端口号,常见的Web服务器用端口号80来标识。而邮件服务器用端口号25来标识,这些都是约定熟成的。

2.1.3 可供应用程序使用的运输服务

上面我们提到了套接字这个概念,在发送端的应用程序将报文推进套接字,在该套接字的另外一侧,运输层协议负责从接受进程的套接字得到该报文。

但是包括因特网在内的很多网络提供了不止一种的运输层协议。当开发一个应用时必须选择一种可用的运输车协议。该如何做出这种选择,是我们需要思考的一个很重要的问题。通常我们需要考虑运输层协议提供的服务,选择一个最为适合的一个,在服务中每个协议都有其擅长的一部分。我们大体能够从四个方面对应用服务程序进行分类:可靠的数据传输、吞吐量、定时、安全性,下面我们来简略的来解释这四个概念。

可靠的数据传输
在第一章中我们知道,分组在计算机网络中由于各种因素可能被丢失,一般像发送邮件这种需求,数据的丢失是难以被接受的,因此为了支持这些应用必须做一下工作来确保由应用程序的一段到另外一端发送的数据正确,如三次握手、四次挥手。有些数据的丢失是可以被允许的,如音频文件。所以我们常常看见音乐的下载有无损音质、普通音质这些差别,由于人的耳朵并没有那么敏感,丢失数据可能会出现一些小干扰,但不是致命的。

吞吐量
在第一章中我们提及过这个概念,吞吐量(网速)就像是一种资源,我们当然希望吞吐量越大越好,这意味着数据传输的速度更快,但是由于资金等方面的因素,我们需要合理的利用这个资源,类似即时通话这类型的应用对于吞吐量的要求就相对较高。

定时
定时的概念与吞吐量类似,大致意思就是保证数据传输在一定的时间范围内传输完成。

安全性
这个概念从字面上就可以理解,可靠的数据传输保证数据的不丢失,而安全性保证了数据的私密性。没有安全性的保证,数据将会被随意的窃取,这对于一些机密而言是不可忍受的,但是对于一些随处可见的资料来说,安全性就没有那么总要。

以上我们了解了不同的应用,需要应用不同的服务。我们当然希望数据的传输更加可靠、更加快速、更加安全。但是情况往往不允许我们鱼和熊掌兼得,适当的做出取舍是程序员的必备素养。

2.1.4 因特网提供的运输服务

在应用层中,主流的协议有两种TCP、UDP,作为开发者,往往我们的选择是二者中的其中一个。下面我们来讨论一下二者区别。

TCP服务
TCP服务模型中包括了面向连接服务和可靠数据传输服务,面向连接的服务,在握手阶段完成,在前面的内容中我们简略的解释了三次握手,一个TCP连接是双向的,双方的进程可以同时进行报文的发送,而结束发送报文时需要断开连接。至于可靠的数据传输服务,可参照上面的解释来理解。总而言之TCP通过连接提供了更可靠的数据传输。UDP服务
UDP相较于TCP,它仅提供最小的服务且是无连接的。这样做的好处是,它的过程更加简单迅速。相对的UDP协议并不保证该报文将到达接受进程,而且到达接受进程的报文也可能是乱序的。 因特网服务中不提供的服务

上面两种协议我们主要讨论了数据的可靠传输这方面的需求差异。然而并未提及其他三个方面的内容,这是因为在多年的网络服务中,吞吐量以及定时这两种协议完成的都十分不错。这也是用户更加直观体验到的方面,无论那种服务,我们都希望得到更加快速的响应。至于安全性,TCP在应用层提供了SSL来加强安全性,在TCP和UDP中二者都未对数据加密进行处理,而SSL可以看作加强版的TCP,它在应用层帮助TCP完成更好的安全性。

2.1.5 应用层协议

我们刚学习了通过报文发送进套接字并实现网络进程间的互相通信。但是如何构造这些报文?这些报文的各个字段的含义是什么?进程何时发送这些报文?这些问题的回答需要我们更加深入的了解应用层协议的具体内容。在应用层协议中详细的定义了这些问题的答复,具体的内容放在后面来讲。

2.1.6 本书涉及的网络应用

如今有大量的网络应用被提出,而在本书中将会挑选其中几个来讲解。如Web、文件传输、电子邮件、目录服务、流式视频、和P2P,这些同样会在后文中,提供给大家学习。

总结

在这小节中我们学习了进程间的通信与应用层的结构,以及相应概念,知道了不同的应用需要根据需求来选择不同的协议,并且大致的了解了协议的内容。当然这中间还有许多细节需要我们来学习。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。