计算机网络(七):应用层协议原理

零、基础理论
网络应用是计算机网络存在的理由,如万维网(包含了web冲浪、搜索和电子商务),以及具有好友列表的即时讯息和对等(P2P)文件共享。
网络应用都是在端系统上的。
网络应用的基本概念、原理:以常见网络应用为例介绍内部实现机制、原理;电子邮件;DNS;P2P;如何写自己的网络应用程序
一、应用层协议原理
应用层只在端上存在,因此写的时候只需在端上构建。
网络核心最高管到网络层。
SDN:software defined networking软件定义网络
1、网络应用程序体系结构:
第一个网络应用程序是email
应用程序体系结构由应用程序研发者设计,规定了如何在各种端系统上组织该应用程序,现在有三种(可不包括混合结构)结构:
a、CS结构:即客户机/服务器体系结构。
有一个总是打开的主机称为服务器,他服务于来自许多其他称为客户机的主机请求,客户机相互之间不直接通信,如web应用中两个浏览器(客户机程序)并不直接通信,但偶尔也会。
服务器有固定的、周知的地址,称为IP地址,且总是处于打开状态,多个服务器共同对外提供服务(即主机群集,有时候称为服务器场),构成一个抽象的虚拟服务器,以应对客户端的规模性。
客户端允许有动态的IP地址,不要求一直在线,一般是客户机主动联系服务器。
此类结构模式一般是基础设施密集的,因为要求服务提供商购买、安装和维护服务器场。
b、P2P体系结构:即对等体系结构
对总是打开的基础设施服务器有最小的依赖。任意简短连接的主机(对等方)直接相互通信。
大多数流行的流量密集型应用程序都是。如文件分发、文件搜索。
任意节点可以随意退出、加入。
系统稳定,因为所有节点地位对等,所以即使攻击某个节点并不会对系统其他节点造成影响,但是CS中,只要攻击S整个系统就崩溃了
P2P最突出的特点是自扩展性。尽管每个对等方都有请求文件产生负载,但是每个对等方可以向其他对等方分发文件,相当于为系统增加了服务能力。即BT下载(用户越多下载速度越快,因为每当用户加入时,他不单是下载的用户,也是服务器)系统也更安全。
c、混合结构:
即时信息系统:QQ、微信
进行用户定位时用CS系统,当开始聊天时变为P2P系统
2、进程通信:
应用层中,进行通信的是进程而不是程序,进程通信的规则由端系统上运行的OS决定。应用层只在端系统上存在,因此写的时候只需要在端上构建。
运行在不同主机上的进程通信通过跨越计算机网络交换报文以交换信息的方式。发送进程创建并向网络中发送报文,接收进程接收这些报文并可能负责会送报文。
网络核心最高管到网络层。
a、客户机和服务器进程:
网络应用程序是由成对的进程组成的,相互之间通过网络相互发送报文。通常将两个进程之一标示为客户机,另一称为服务器。而在P2P模式下,下载文件的对方被标记为客户机,上传文件的对等方被标识为服务器。
在给定的一对进程的通信会话中,发起通信(即在该会话开始时与其他进程联系)的进程被称为客户机,在会话开始时等待联系的进程是服务器。
客户机和服务器有时候也被称作应用程序的客户机端和服务器端
b、进程与计算机网络之间的接口:
从一个进程向另一个进程发送的报文必须通过下面的网络。进程通过一个称为套接字socket的软件接口在网络上发送和接收报文。进程可以类比于一座房子,而套接字可以类比于他的门。
当进程想向位于另一台主机的另一个进程发送报文时,他把报文推出门(套接字),该发送进程假定门到另一侧之间有运输的基础设施,该设施将把报文传送到目的进程的门口,一旦抵达,则通过报文接收进程的门(套接字)传递。
套接字是同一台主机内应用层与运输层之间的接口。由于套接字是在网络上建立网络应用程序的可编程接口,因此也将套接字称为应用程序和网络之间的应用程序编程接口。
套接字可以理解为简单地read和write函数,名称不一定是read。
应用程序开发者对运输层的控制仅限于:选择传输层协议、也许能设定几个运输层参数,如最大缓存、最大报文段长度等。
每一个进程一旦创建以后都要与一个套接字进行绑定,套接字类型与协议有关。。
传输层辅助将数据发送到对方传输层。
服务器通过套接字从本地缓存中将数据取回去。
3、可供应用程序使用的运输服务:
应用程序对运输层协议的要求。
发送端的应用程序通过套接字发送报文,在套接字的另一侧,运输层协议负责将该报文传输到接收套接字的“门”中。
网络有不止一种运输层协议,当开发一个多端应用的时候,需要选择一个可用的运输层协议。应该研究这些可用的运输层协议所提供的服务,选择一个能为你的应用提供恰当服务的协议。
应用程序服务要求:可靠数据传输(丢包)、吞吐量()带宽、定时(时延)和安全性(安全)
a、可靠数据传输:
分组能在计算机网络中丢失,如果一个协议提供了确保数据交付服务,就提供了可靠数据传输。
当一个运输层协议提供这种服务时,发送进程只要将其数据传递到套接字,就可以相信该数据能无差错地到达接收进程。
对于某些容忍丢失的应用(实时音频、视频或存储的视频音频)能够承受一定程度的数据丢失。
b、吞吐量:
两个进程在一条网络路径上进行通信会话时,可用吞吐量就是发送进程能够向接收进程交付比特的速率。
具有吞吐量要求的应用称为带宽敏感的应用,如媒体应用。此类应用需要提供一定的吞吐量;弹性应用能够根据需要充分利用可供使用的吞吐量,如电子邮件、文件传输。
c、定时:
定时保证可以以多种形式实现。例如设置发送方注入套接字中的每个比特到达接收方的套接字不迟于100ms,比方说网络游戏。这种服务对交互式实时应用程序非常适用。
为了有效性而对数据交付有严格的时间限制。
d、安全性:
运输层协议能够为应用程序提供一种或者多种安全性服务。运输层协议能够加密由发送进程传输的所有数据。比方说在交付给接收进程之前解密这些数据。
这种服务将对发送进程和接收进程保密,以防止发送进程和接收进程以某种方式观察到数据。
还有数据完整性和端点鉴别。
4、因特网提供的传输服务
两个运输层协议UDP和TCP。
a、TCP服务:
TCP服务模型包括面向连接服务和可靠数据传输服务。
①、面向连接服务:使用TCP协议时,在应用层数据报文开始流动之前,其客户机程序和服务器程序之间互相交换运输层控制信息。即“握手过程”,提示客户机和服务器做好传输分组的准备,在握手阶段后,就在两个进程的套接字之间建立了一条TCP连接。这个连接是全双工的(连接双方的进程可以在此链接上同时进行报文收发)。当应用程序结束报文发送时,必须拆除该连接。
②、可靠数据传输服务:进行通信的进程依靠TCP协议,无差错、按适当顺序交付发送的数据。没有字节的丢失和冗余。
TCP协议还支持流控制,具有拥塞控制机制,这种服务比一定能为通信进程带来直接好处,但能为因特网整体带来好处。当出现拥塞时,TCP协议的拥塞控制机制会抑制发送进程。
TCP的拥塞控制试图限制每个TCP链接,使他们达到公平共享网络带宽的目的,但对于有最低要求带宽限制的应用是有害的。实时应用是可以容忍数据丢失的,并不需要完全可靠的传输服务,因此,实时应用的开发者们通常使用UCP而不是TCP。
SSL:安全套接字层,用SSL加强后的TCP提供了关键的进程到进程的安全型服务,包括加密、数据完整性和端点鉴别。SSL不是独立于TCP和UDP的第三种运输层协议,而是对TCP的加强,这种加强是在应用层上实现的。
b、UDP服务:
UDP是一种不提供不必要服务的轻量级运输层协议,仅提供最小服务。UDP是无连接的,因此在两个进程通信前没有握手过程。
①、UDP提供的是不可靠数据传输服务,可能丢包,可能乱序。
②、UDP不提供连接的建立,不支持流控制,没有拥塞控制机制。因此发送端可以以任何速率向下面的层(网络层)注入数据。(注意到实际的端到端吞吐量可能小于这一速率,因为中间链路的带宽首先或因为拥塞导致的)
实时应用通常可以忍受一定的数据丢失,同时具有最低速率的要求,所以可以使用UDP,以避开TCP的拥塞控制机制和分组开销。
当前服务都保证最小带宽、实验、安全
竞争带宽时UDP占优势
c、因特网运输层协议所不提供的服务:
TCP提供了可靠地端到端数据传输服务。目前的因特网运输层没有提供吞吐量和定时保证两种服务。但是设计时尽最大可能弥补了这两种服务。
d、进程寻址:
为了识别接收进程,需要定义两种信息:①该主机的名称或地址;②用来指定目的主机上接收进程的标识。
主机用IP地址来进行标志,IP地址是用来唯一标识主机的32比特数。
目的地端口号标识了主机上的接收进程,例如web服务进程用的是80号端口,邮件服务进程(使用SMTP协议)用的是25号端口,可以在http://www.iana.org找到。当开发者创建了一个新的网络应用程序时,必须为该应用程序分配一个新的端口号。
5、应用层协议;
应用层协议定义了运行在不同端系统上的应用程序进程如何相互传递报文。定义了:
①、交换的报文类型,如请求报文和响应报文
②、各种报文类型的语法,如报文中的各个字段极其详细叙述
③、字段的语义,即包含在字段中的信息的含义
④、进程何时、如何发送报文
⑤、对报文进行响应的规则
有些应用层协议是由RFC文档定义的,因此他们位于公共领域,如web的应用层协议HTTP(超文本传输协议)。应用层协议只是网络应用的一部分,web应用是一种客户机/服务器应用程序。
用于电子邮件的主要应用层协议是SMTP(简单邮件传输协议)。

你可能感兴趣的:(计算机网络)