本章主要讲述了网络应用原理和应用层常见的一些协议。
1. 网络应用原理
1.1 网络应用体系结构
目前有两种主流的现代网络应用程序体系结构:客户-服务器体系结构(C-S)和对等体系结构(P2P)。
在C-S中有一台总是打开的主机,称为服务器,它用来接收许多其他称为客户的主机的请求,客户之间不直接通信。
在P2P中,应用程序在间断连接的主机对之间直接通信,而对服务器有最小的依赖,这些主机称为对等方。P2P最大的特性之一是自扩展性(self-scalability)。
1.2 进程通信
一个进程可以杯认为是运行在端系统的一个程序,所以进行通信的实际上是进程。这里只关注不同那个端系统上的进程间通信。在两个不同的端系统的进程,通过跨越计算机网络交换报文而相互通信
1.2.1 客户和服务器进程
在一对进程之间的通信会话中,发起通信(即在该会话开始时发起与其他进程的联系)的进程被标识为客户,在会话开始时等待联系的进程是服务器。
这个概念适用于C-S和P2P结构。
1.2.2 进程与计算机网络之间的接口
在一个进程向另一个进程发送报文时必须通过下层的网络。进程通过一个称为套接字(socket)的软件接口向网络发送报文以及接收报文。socket是同一台主机内应用层和运输层之间的接口。
开发者可以控制socket在应用层的一切,但是几乎没有对socket运输层的控制权,仅限于:选择运输层协议,设定几个参数,最大缓存,最大报文段长度等。
1.2.3 进程寻址
两个进程之间通信,必须需要明确接收方的地址,通常是以主机的IP地址和进程的端口号来标识。
1.3 可供应用程序使用的运输服务
在应用程序使用socket时,需要选择一种运输层协议,大体可以从以下的四个方面对应用程序服务要求进行分类,以便运输层的选择。