目录
2.1 应用层协议原理
- 研发网络的核心是写出能够运行在不同端系统和通过网络彼此通信的程序
2.1.1 网络应用程序体系结构
-
应用程序的体系结构和网络的体系结构完全不同
-
应用程序体系结构由应用程序开发者设计,规定了如何在各种端系统上组织该应用程序,两种主流体系结构:
-
客户 - 服务器体系结构(C/S)
-
对等体系结构(P2P)
-
-
在C/S结构中,有一个总是打开用来服务其他称为客户的主机的请求,叫服务器
- 客户之间不进行通信
- 服务器具有固定的,周知的地址,称为IP地址
- 客户总是能够通过该服务器的IP地址发送分组与其联系
- 在一个CS结构应用中,当一台主机不能满足客户的需求时,配备大量的数据中心常被用做创建强大的虚拟服务器
- 缺点: 可扩展性较差
-
在P2P体系结构中,对位于数据中心的专用服务器有最小的依赖,相反应用程序在间接连接的主机间使用直接通信,这些主机称对方为对等方
- 例:文件共享,视频会议等
- P2P的特性之一就是自扩展性
- 缺点:难以管理
2.1.2 进程通信
- 需要了解多个端系统上的程序是如何进行互相通信的
- 进行通信的实际上是进程: 一个进程可以被认为是运行在端系统上的一个程序
- 多个进程运行在相同的端系统上时,它们使用进程间的通信机制进行通信
- 进程间的通信规则由操作系统规定
- 两个不同端系统上的进程,通过跨越计算机网络交换报文而相互通信
- 发送进程生成并向网络发送报文;接收进程接收报文并可能通过回送报文进行相应
-
客户和服务器进程
- 在一对进程之间的通信会话场景中,发起通信的进程被标识为客户,在会话开始时等待联系的进程是服务器
-
进程与计算机网络间的接口
-
多数应用程序是由通信进程对组成,每对中的两个进程互相发送报文,进程通过一个称为 套接字(socket) 的软件接口向网络发送报文和从网络接收报文
-
套接字是同一台主机内应用层与运输层之间的接口。是建于网络应用程序的可编程接口,因此套接字也被称为应用层和网络之间的应用程序编程接口 (API)
-
应用程序开发者可以控制套接字在应用层的一切,但对套接字在运输层几乎没有控制权限
- 仅限于:选择运输层协议;设定运输层参数
-
3. 进程寻址
- 接收进程需要一个地址,为了标识该接收进程,需要定义两种信息
- 主机的地址
- 在目的主机中指定接收进程的标识符
- 主机由IP地址标识
2.1.3 可供应用程序使用的运输服务
-
一个运输层协议能够为调用它的应用程序提供的服务为:
- 可靠数据传输
- 吞吐量
- 定时
- 安全性
-
可靠数据传输
-
必须做一些工作以确保由应用程序的一端发送的数据正确,完全的交付给该应用程序的另一端。如果一个协议提供了这样的确保数据交付服务,就认为提供了 可靠数据传输
-
当一个运输层协议不能提供可靠数据传输时,由发送进程发送的某些数据可能到达不了接收进程。这可能被 容忍丢失的应用 所接收。例如多媒体视频音频等
-
-
吞吐量
- 可用吞吐量 就是发送进程能够向接收进程交付比特的速率
- 运输层协议能够以某种特定的速率提供明确的可用吞吐量
- 具有吞吐量要求的应用程序被称为 带宽敏感的应用
- 弹性应用 能够根据当时可用的带宽或多或少的利用可使用的吞吐量
-
定时
-
安全性
2.1.4 因特网提供的运输服务
-
因特网为应用程序提供两个运输层服务: