计算机网络随记

应用层

应用层协议原理

研发网络应用程序的核心是写出能够运行在不同的端系统和通过网络彼此通过网络彼此通信的程序。并且这些应用程序不需要写在网络核心设备如路由器或链路层交换机上运行的软件。即使你要为网络核心设备写应用程序软件,你也不能做到这一点。这种基本设计,软件限制在端系统的方法,促进了大量的网络应用程序的迅速研发和部署。

网络应用程序体系结构

记住应用程序的体系结构明显不同于网络的体系结构。应用程序体系结构有应用程序研发者设计,规定了如何在各种端系统上组织该应用程序,现代网络应用程序中所使用的两种主流体系结构:客户-服务器体系结构或对等(P2P)体系结构。
客户-服务器的特征之一是总有个总是打开的主机,称为服务器。客户之间不直接通信。另一个特征是该服务器有固定的,周知的地址,该地址称为IP地址。具有这种体系结构的包括WEB.FTP,Telnet和电子邮件。一般来说大型网站肯定不只一台单独的服务器,因此配备大量主机的数据中心常被用于创建强大的虚拟服务器。一个数据中心有多的多大几十万台服务器,他们必须要供电和维护。此外还要支付不断出现的互联网和带宽费用
在一个P2P体系结构中,对位于数据中心的专用服务器有最小的依赖。相反,应用程序在间断连接的主机对之间使用直接通信,这些主机对被称为对等方。许多目前流行的,流量密集型应用都是P2P体系结构,比如迅雷啊,BitTorrent,迅雷看看的啊,需要提及的是,某些应用具有混合的体系结构,他结合了客户-服务器和P2P元素。P2P体系结构最引人入胜的特征之一是他们的自扩展性。尽管每个对等方都由于请求文件产生工作量,但每个对等方通过向其他对等方分发文件也为系统增加服务能力。但P2P应用也面临着三个挑战:ISP友好,安全性,激励

进程通信

实际上运行在多个端系统的程序是通信是通过进程而不是程序。一个进程可以被认为是运行在端系统中的一个程序。当进程运行在相同的端系统上时,它们使用进程间通信机制相互通信。这个由端系统上的操作系统确定。在两个不同端系统上的进程,通过跨越计算机网络交换报文。

客户和服务器进程

对每对通信进程,我们通常将这两个进程之一标识为客户,而另一个进程标识为服务器。对于P2P文件共享,下载文件的对等放标识为客户,上载文件的对等方标识为服务器

进程与计算机网络之间的接口

进程通过一个称为套接字的软件接口向网络发送报文和从网络接受报文。进程可类比于一个房子,而它的套接字可以类比于它的门。套接字是同一台主机内应用层与运输层之间的接口。套接字也可称为应用程序和网络之间的应用程序编程接口。应用程序开发者可以控制套接字在应用层端的一切,但是对该套接字的运输层几乎没有控制权。应用程序开发者对于运输层的控制仅限于:(1)选择运输层协议(2)也许能设定几个运输层参数,如最大缓存和最大报文长度。一旦应用程序开发者选择了一个运输层协议,则应用程序就建立在由该协议提供的运输层服务之上。

进程寻址

为了向另一台主机上运行的进程发送分组,接受进程需要有一个地址,为了标识该接受进程,需要定义两种信息:(1)主机的地址(也就是IP地址了)(2)定义在目的主机中的接受进程的标识符(也就是端口号了

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

一个运输层协议能够为调用它的应用程序提供什么样的服务了?我们大致能从四个方面对应用程序服务要求进行分类:可靠数据传输,吞吐量,定时,和安全性

可靠数据传输

如前所讲,分组可能字计算机网络中丢失,分组可能是路由器中的缓存溢出,或者当分组的某些比特损坏后可能被丢弃。但有些应用像电子邮件,文件传输,WEB文档传输等,要求数据不能丢失,为了支持这些应用,必须做一些工作以确保又应用程序的一端发送的数据正确,完全地交付给该应用程序的另一端,如果一个协议提供了这样的确保数据交付服务,就认为提供了可靠数据传输。当一个运输协议提供这种服务时,发送进程只要将其数据传递进套接字,就可以完全相信该数据将能无差错地到达接受进程。当一个运输层协议不提供可靠数据传输时,由发送进程发送的某些数据可能不能够到达接受进程,这可能被容忍丢失的应用所接受,比如多媒体应用,像交谈时音频/视频

吞吐量

在沿着一条网络路径上的两个进程之间的通信会话场景中,可用吞吐量就是发送进程能够向接受进程交付比特的速率。因为其他会话将共享沿着该网络路径的带宽,并且因为这些会话将会到达和离开,该可以吞吐量将随着时间波动。这些观察导致另一种自然的服务,即运输层协议能够以某种特定的速率提供确保的可用吞吐量。比如,运输层协议能够确保可用吞吐量至少是R比特/秒。具有吞吐量要求的应用程序被称为带宽敏感的应用。带宽敏感的应用具有特定的吞吐量要求,而弹性应用能够根据情况或多或少地利用可供使用的吞吐量。

定时

运输层协议也能提供定时保证。如具有吞吐量保证那样,定时能够以多种形式实现。一个例子如:发送方注入套接字中的每个比特到达接受方的套接字不迟于100ms

安全性

运输协议能够为应用程序提供一种或多种安全性服务。例如,在发送主机中,运输协议能加密由发送进程传输的所有数据,在接受主机中,运输层协议能够在将数据交付给接受进程之前解密这些数据。运输协议还能提供除了机密性以外的其他安全性服务,包括数据完整性和端点鉴别。

因特网提供的运输服务

因特网为应用程序提供两个运输层协议,即UDP和TCP

TCP服务

TCP服务模型包括面向连接服务和可靠数据传输服务。当某个应用程序调用TCP作为其运输协议时,该应用程序就能获得来自TCP的这两种服务
1. 面向连接的服务 在应用层数据报文开始流动之前,TCP让客户和服务器互相交换运输层控制信息。这个所谓的握手过程提示客户和服务器,使他们为大量分组的到来做好准备。在握手阶段后,一个TCP连接就在两个进程的套接字之间建立了。这条连接是全双工的,即连接双方的进程可以在此连接上同时进行报文收发。当应用程序结束报文发送时,必须拆除该连接
2. 可靠的数据传送服务:通信进程能够依靠TCP,无差错,按适当顺序交付所有发送的数据。当应用程序的一端将字节流传进套接字时,它能够依靠TCP将相同的字节流交付给接收方的套接字,而没有字节的丢失和冗余。

其实TCP还具有拥塞控制机制,这种服务当发送方和接收方之间的网络出现拥塞时,TCP的拥塞控制机制会抑制发送进程,其实TCP的拥塞控制机制也试图限制每个TCP连接,使他们达到公平共享网络的目的。
TCP安全,无论TCP还是UDP都没有提供任何加密机制,即传进套接字的数据,是明文。该明文将经过发送方与接收方之间的所有链路,这就可能在中间链路被嗅探和发现。所以因特网界已经研制了TCP的加强版本,称为安全套接字层(SSL)。用SSL加强后的TCP不仅能够做传统的TCP所能做的一切,而且提供了关键的进程到进程的安全性服务。包括加密,数据完整性和端点鉴别。我们强调SSL不是与TCP和UDP在相同层次上的第三种因特网运输协议,而是一种对TCP的加强,这种强化是在应用层上实现的。这个过程是 数据先进SSL套接字,加密后的数据再进TCP套接字。接受方是数据先到TCP套接字,TCP套接字中出来的数据再传递到SSL套接字进行解密。

UDP服务

UDP是一种不提供不必要服务的轻量级运输协议,它仅提供最小服务。UDP是无连接的,因此在两个进程通信之前没有握手过程。UDP协议提供一种不可靠数据传送服务,也就是说,当进程将一个报文发送进UDP套接字时,UDP协议并不保证该报文将到达接收方。不仅如此,到达接受进程的报文也可能是乱序到达的。UDP没有包括拥塞控制机制。

因特网运输协议所不提供的服务

明显,我们对TCO和UDO的描述中,明显缺少对吞吐量或定时保证的讨论,即这些服务目前的因特网运输协议并没有提供。但不是说像时间敏感这类的应用不能运行在因特网上了,这些应用之所以还工作的现当好,因外它们已经被设计成尽最大可能对付这种保证的缺乏。无论如何,在时延过大或端到端吞吐量受限时,好的设计也是有限制的,总之,今天的因特网通常能够为时间敏感应用提供满意的服务,但它不能够提供任何定时或宽带保证。 因为因特网电话应用通常能够容忍某些丢失但要求达到一定的最小速率才能有效工作,所以因特网开发者通常原意将应用运行在UDP上,从而设法避开TCP的拥塞控制机制和分组开销。但因为许多防火墙被配置成阻挡(大多数类型的)UDP流量,所以因特网电话应用通常设计成如果UDP通信失败就使用TCP作为备份。

应用层协议

应用层协议定义了运行在不同端系统上的应用程序如何相互传递报文。特别是应用层协议定义了:
1. 交换的报文类型,例如请求报文和相应报文。
2. 各种报文类型的语法,如报文中的各个字段以及这些字段是如何描述的。
3. 字段的语义,即这些字段中包含的信息的含义
4. 一个进程何时及如何发送报文,对进程进行相应的规则

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值