计算机网络
第二章 应用层
2.1 应用层协议原理
研发网络应用程序的核心是编写可以在多个不同端系统和通过网络彼此通信的程序
网络核心不在应用层上起作用,仅在较低层起作用(网络层及以下)
将应用限制在端系统,促进了大量网络应用程序的研发和部署
2.1.1 网络应用程序体系结构
应用程序体系结构:规定如何在各种端系统上组织应用程序
- C/S结构,P2P结构
一、C/S结构
基本特征:
- 服务器总是打开
- 客户之间不直接通信
- 服务器有固定的、周知的IP地址
- 客户通过向服务器的IP地址发送分组进行联系
二、数据中心
- 用于创建强大的虚拟服务器
三、P2P体系结构
基本特点:
- 对等方:应用程序在间断联通的主机之间直接通信
- 不是服务提供商所有,通常是用户控制的桌面机和漆上机所有
- 自扩展性:每个对等方都由于请求文件产生较大的负荷,同时由因文件分发为系统增加了服务能力
- 对位于数据中心的服务器有最小依赖。不需要庞大的服务器基础设施和服务器宽带
- 应用于高度非集中式结构,面临安全性、性能和可靠性的挑战
2.1.2 进程通信
进程:运行在端系统中的一个程序
- 进行通信的是进程,而非程序
- 运行在一个端系统上的多个进程之间的通信
- 使用进程间通信机制相互通信,进程之间的通信规则有操作系统确定
- 运行在不同的端系统上的进程之间的通信
- 通过跨越计算机网络交换报文相互通信
- 发送进程:生成并发送
- 接受进程:接受并回送报文
一、客户和服务器进程
网络应用程序由成对的进程组成,这些进程通过网络相互发送报文。上载文件称服务器,下载文件称客户。
二、进程与计算机网络之间的接口
套接字:
- 进程通过套接字(房子的门)软件接口想网络发送报文和从网络接收报文。
- 套接字是同一台主机内应用层与运输层之间的接口,由于套接字是建立网络应用程序的可编程接口,所以也被作为应用程序与网络之间的应用程序网络接口
- 应用开发人员可以控制套接字在应用层端的一切,但对套接字的运输层端的运行没有控制权
- app开发这对运输层的控制权限:选择运输层协议,也能能设定几个运输层参数
- 一旦app开发者选择了一个运输层协议,应用程序就建立在该协议提供的运输层服务之上
三、进程寻址
1、为表示接受进程(目的地),定义两种信息:
- 主机的地址
- 在目的主机中指定接受进程的标识符
2、在因特网中,主机由IP地址标识
3、报文发送除了知道目的地的主机地址外,发送进程还要指定运行在接受主机上的接受进程(接受套接字),需使用目的地端口号。
2.1.3 可供应用程序使用的运输服务
运输层协议可为调用它的应用程序提供的服务:
- 可靠数据传输
- 吞吐量
- 定时
- 安全性
一、可靠数据传输
- 若一个协议提供了确保数据交付服务,即提供了可靠数据传输
- 运输层可以潜在向应用层提供进程到进程的可靠数据传输。
- 运输协议本服务时,发送进程只要将数据传递进套接字,就可以完全相信数据能无差错传递到接受进程
不提供本服务的应用:容忍丢失的应用:多媒体中的数据,如音频、视频
二、吞吐量
- 在沿一条网络路径两个进程之间的通信会话场景中,可用吞吐量为:发送进程能够向接受进程交付比特的速率。
- 吞吐量随时间波动:其他会话共享网络路径带宽,会话将会到达和离开
- 运输层协议能够以某种特定的速率提供确保的可用吞吐量
- 吞吐量是最低速率
带宽敏感应用:对吞吐量有需求的应用程序(多媒体应用)
弹性应用:能够根据当时可用的带宽或多或少第利用可供使用的吞吐量(电子邮件、文件传输、web传送)
三、定时
运输层协议可用提供定时服务。定时保证可以由多种方式实现。
交互实时应用程序对时延的要求较高
四、安全性
运输层协议可提供一种或多种安全性服务
- (机密性)加密发送数据:在发送和接受进程之间提供机密性,防止数据以某种方式在两个进程之间被观察到。
- 数据完整性
- 端点鉴别
2.1.4 因特网提供的运输服务
因特网为应用程序提供TCP和UDP两个运输层协议。
一、TCP服务
TCP服务包括面向连接的服务和可靠数据传输服务
- 面向连接的服务:数据报文流动前,TCP让客户和服务器相互交换运输层控制信息,为大量分组的到来做好准备。然后一个TCP连接在两个进程的套接字之间建立了。该连接是全双工的,两节双方的进程可以在此连接上同时进行报文收发。报文发送结束后,连接断开。
- 可靠数据传输服务:无差错、按适当顺序交付所有发送的数据。无字节丢失和冗余。
- TCP拥塞控制机制:不一定为通信进程带来直接好处,但对网络整体可以带来好处(why)
- 发送发和接收方之间的网络拥塞时,会抑制发送进程
- 试图限制每个TCP连接,达到公平共享网络宽带的目的
SSL(安全套接字层)加强后的TCP,增加了进程到进程的安全性服务(加密、数据完整性和端点鉴别)
SSL不是与TCP和UDP在同一层次上的第三种因特网运输协议,只是TCP的一种加强,该强化在运输层实现。
二、UDP服务
UDP是一种不提供不必要服务的轻量级运输协议
- UDP协议是无连接的,提供一种不可靠数据传送服务:进程将报文发送进UDP套接字时,UDP协议不能保证报文到达进程,且报文可能是乱序到达的
- UDP不包括拥塞控制机制,因此UDP发送端可以用它选定的任意速率向其下层(网络层)注入数据
- 实际端到端的吞吐量可能小于该速率:因为中间链路的宽带受限或因为拥塞造成
三、因特网运输协议所不提供的服务
- 不能提供任何定时或宽带保证
2.1.5 应用层协议
1、应用层协议定义了运行在不同端系统上的应用程序进程如何相互传递报文。
- 定义了交换报文类型(请求or相应)
- 定义各种报文类型的语法(报文中各字段及字段如何描述)
- 字段的语义(字段中信息的含义
- 确定一个进程何时以及如何发送报文,对报文进行响应的规
2、RFC文档定义的应用层协议,位于公共域中
- Web的应用层协议HTTP(超文本传输协议)
3、专用的应用层协议,有意不为公共域使用
- Skype使用了专用的应用层协议
4、网络应用与应用层协议
- 应用层协议是网络应用的一个部分,如应用层协议是web应用的一部分,HTTP定义了Web服务器之间传输的报文格式和序列HTTP只是Web应用的一个部分
2.1.6 本书涉及的网络应用
五种应用:
- Web
- 文件传输
- 电子邮件
- 目录服务
- 流视频和P2P
2.2 Web和HTTP
待续。。。。。。