1.1.3 差错控制和流量控制
网络的底层是通信信道的组合。由于噪声、硬件故障、数据被篡改......的原因,往往会出现数据的损坏或丢失。对这些错误i的处理,称为差错控制。在网络中,由于不稳定的各种因素,当发送方以超出接收方处理能力的速度生成信息时,接收方会使用流量控制的机制以使得发送方降低速度(且当网络中一部分单元失效时,仍能够进行通信)。
差错控制面对的是两种场景 :a. 应用不关心交付的数据块的顺序 b.应用需要按顺序的数据块
a.应用不关心交付的数据块的顺序时
在只有少数位出错时,有些算法可用于检测和修复这种差错(这种修复通常在网络中执行)
在分组中出现更多错误时,通常会重新传输整个分组
b.应用关心交付的数据的顺序
针对这样的需求,帧中继和internet协议采用称为"尽力而为"的服务方式。这种情况下,网络不会花费很大的开销来确保数据没有差错或缺陷。
1.2 设计实现
一个协议可用特定的方法实现,但这通常不是强制的。因此,对于协议体系结构和实现体系结构,我们会加以划分。 实现体系结构定义了协议体系结构如何用于软件形式的实现。
分层
分层中的复用、分解、封装
1.2.1 分层
通过分层,使得每层得以负责通信的一个方面,从而可以允许各自领域的专业人员可以分别实现系统的不同部分。
历史上,TCP/IP的分层模型曾与OSI模型不同。但是来自OSI模型的诸多思想,甚至整个协议已被用于TCP/IP中。(如IS-IS)。
对于网络本身的研究,我们重点关注网络层与传输层。对于分组网络的网络层,他提供了一种可互操作的分组格式,以使其可以通过不同的链路层网络;本层也包括针对主机的地址方案分组如何从一台设备发往另一设备的路由算法。对于传输层,它提供了一个会话间的数据流。
1.2.2 分层实现中的复用、分解和封装
分层体系结构具有协议复用的能力。这种能力允许多种协议共存于同一基础设施中;也允许相同协议对象的多个连接实例存在而不会混淆。
复用可以发生在不同层,每层的不同类型的标识符,则确定了信息属于哪个协议或信息流。当某层的一个称为协议数据单元(PDU)的对象(如分组、信息等)被底层携带时,这个过程称为在相邻低层的封装。
分层的另一个重要的特点是,并不是所有的网络设备都需要实现所有层。如在一些小型网络中,交换机只需要实现1、2层,而路由器只需实现1、2、3层。
实际上,针对一个特定的协议族,可以区分端系统和中间系统。通常网络层之上的各层使用端到端的协议;但网络层也提供了一种逐跳的协议,可用于两个端系统与每个中间系统
1.3 TCP/IP协议族结构和协议
1.3.1 ARPANET参考模型
一个最古老和最重要的协议是地址解析协议(ARP,只用于IPv4),它只用于多链路协议,完成IP层使用的地址和链路层使用的地址之间的转换。