第二章第一节 应用层协议原理
网络应用是计算机网络存在的理由,在本章中,咱们学习有关网络应用的原理和实现方面的知识。咱们学习包括应用沉香谷所须要的网络服务、客户和服务器、进程和运输层接口。编程
咱们详细考察几种网络应用程序,包括Web、电子邮件、DNS 和 P2P文件分发。缓存
Outline
Notes
## 应用程序体系结构
应用程序体系结构由应用程序研发者设计,规定了如何在各类端系统上组织该应用程序。安全
三种程序结构为:客户 - 服务器体系结构、对等(P2P)体系结构和混合结构服务器
【客户-服务器体系结构】网络
- 定义:有一个老是打开的主机称为服务器,它服务于来自许多其余称为客户的主机的请求
- 服务器
- 对外提供不间断服务
- 服务器具备固定的、周知的地址(IP地址)
- 利用大量服务器实现可扩展性(数据中心)
- 客户端
- 客户端使用服务,间歇性接入网络
- 可能使用动态的IP地址
- 客户端之间不相互通讯
- 栗子:Web服务器、FTP、电子邮件

【P2P体系结构】学习
- 特色:
- 对于位于数据中心的专用服务器有最小(或没有)的依赖
- 任意端系统/节点能够直接通讯,这些主机被称为对等方
- 端系统间歇性接入网络,可能改变IP地址
- 栗子(流量密集型应用):文件共享、对等方协助下载加速器(迅雷)、因特网电话等
- 优势:自扩展性(成本可控、经过与其余对等方分发文件以增长服务能力)
- 缺点:难以管理
- 三大挑战:
- ISP友好:大多数住宅ISP的下载要比上载多得多,ISP已经受制于非对称的带宽应用
- 安全性:由于高度分布和开放特性,P2P给安全带来挑战
- 激励:要税负用户资源提供带宽、存储和计算资源

【混合结构】操作系统
P2P难于管理,那咱们就混入C/S的集中管理。C/S中服务器压力过大,咱们就混入P2P中的P们来为它减轻负担。Napster就是这样作的。计算机网络
Napster:文件传输使用P2P结构,文件搜索使用C/S结构设计
## 进程通讯
- 进程:一个具备必定独立功能的程序关于某个数据集合的一次运行活动,是系统进行资源分配和调度运行的基本单位
- 若是同一主机上运行的进程想互相通讯,它们能够经过进程间通讯机制来完成,这种机制是由操做系统提供的
- 在两个不一样端系统上的进程,经过跨越计算机网络交换报文(message)而相互通讯
- 端系统的进程经过套接字进行接受报文或发送报文
- 网络应用程序是由成对的进程组成,这些进程经过网络相互发送报文。对每对通讯进程,咱们将其中的一个标记为客户(client,通常为发起通讯的一方),另外一个标记为服务器(server,等待联系的一方)。
【套接字(Socket)】3d

- 套接字至关于一个公用的中间语言,让不一样的主机能够顺利通话。
- 套接字是创建网络应用程序的可编程接口,所以套接字也称为应用程序和网络之间的应用程序编程接口(Application Programming Interface,API)
- 应用程序开发者能够控制应用层端的一切,但对于套接字运输端的控制仅限于:
- 选择运输层协议;
- 也许能设定几个运输层参数,如最大缓存和最大报文段长度等(将在第3章中涉及)。
【进程寻址】
- 若是想实现不一样主机上的进程间通讯,每一个主机必须拥有标识符——IP地址,每一个进程须要拥有标识符——端口号。
- 进程的标识符 = IP地址+端口号
- IP地址是一个32比特的量且惟一的标识主机,更多的内容请参考第4章
- 端口号如:HTTP Sever:80
## 因特网提供的运输服务
【网络应用的需求和传输层服务】
- 运输层协议提供的运输服务包括:
- 可靠数据传输(容忍丢失)
- 吞吐量(带宽敏感)
- 时序/延迟
- 安全性
- 常见的应用所需的运输服务

【Internet提供的两类传输服务——TCP服务】
- TCP服务模型包括面向链接服务和可靠数据传输服务,TCP还提供拥塞控制机制
- 服务的具体描述:
- 面向链接:客户机/服务器进程间需创建链接。握手过程提示客户和服务器,使它们为大量分组的到来作好准备。在握手阶段后,一个TCP链接(TCP connection)就在两个进程的套接字之间创建了。
- 可靠的传输:通讯进程可以依靠TCP,无差错、按适当顺序交付全部发送的数据。
- 流量控制:发送方不会发送过快,超过接收方的处理能力。
- 拥塞控制:当网络负载太重时可以限制发送方的发送速度。
- 不提供时间/延迟保障。
- 不提供最小带宽保障。
【Internet提供的两类传输服务——UDP服务】
- UDP是一种不提供不须要服务的轻量级运输协议。
- 无链接:它不需在两主机间创建链接。
- 提供不可靠的数据传输
- 不提供拥堵控制UDP的发送端能够用它选定的任何速率向其下层(网络层)注入数据(值得注意的是实际端到端吞吐量可能小于这种速率,这多是由于中间链路的带宽受限或由于拥塞而形成的)
- 也不提供:可靠性保障、流量控制、延迟保障、带宽保障。
【常见应用选择的运输协议】


## 应用层协议
- 运输服务遵循应用层协议
- 公开协议:由RFC定义,标准化的HTTP、SMTP等
- 私有协议:多数P2P文件共享应用
- 应用层协议的主要内容
- 消息的类型(type):请求消息,响应消息。
- 消息的语法(syntax)/格式:消息中有哪些字段,每一个字段如何描述。
- 字段的语义(semantics):字段中信息的含义。
- 规则(rules):进程什么时候发送/响应消息等。
- 以HTTP为例;
