本文介绍了通信协议的概念以及如何通过添加特定的机制和信息来确保无错误的数据传输。
协议由所有 "交换 "信息的站点使用的通信规则和程序组成。所有在网络上交换数据的站点都使用协议,以满足目标。
协议是一组预定义的规则和约定,用于管理数据在计算机网络中的格式化、传输、接收和解释方式。 它定义了网络中的设备为了有效通信而应遵循的过程、格式和操作顺序。
目标示例:使用通信信道、确保可靠的端到端数据传输等。
如何确保一系列的二进制位(bit)能够被结构化并且被网络的另一端正确解释。
在传输层面,需要确保数据接收方能够正确辨识出数据帧的开始和结束,即进行二进制或帧同步。
数据在网络中传输前需要编码,包括文本(如字符)、图像等,确保接收方能够正确解码和理解。
在面向连接(Connected Mode)的通信中,一旦建立连接,数据可以随时交换。但这可能导致数据分片,并需要确保片段最终能够正确地重组(即解决分片引起的序列错乱问题)。例如,邮政系统和IP协议中的数据传输就可能面临这样的问题。
在无连接的通信中,每次数据交换都被视为独立的事件,需要控制信号来管理每次交换,包括建立连接、关闭连接以及连接管理,这通常涉及服务质量(QoS)的协商。例如,电话系统和TCP(传输控制协议)就是基于连接的通信例子。
每次添加新的机制时,虽然可以解决一个问题,但可能会引入另一个问题。
因此,需要确保随着时间的推移,新问题和修正措施之间的关系是收敛的,即最终能够达到可接受的错误率和效率。
通过在通信路径上增加协议层,可以改变该路径的属性,从而创建一个新的通信路径。
为了实施和管理这些机制,需要构建一个软件自动机(automate logiciel),它包含状态和基于事件的状态转换。
协议在确保通信质量中的重要性,以及在设计和实现这些协议时需要考虑的复杂性。一个有效的通信协议不仅要能够检测和修正错误,还要能够处理由新机制引入的潜在问题。这是确保数据可靠传输的关键部分,并且是现代通信系统设计的基础。
自动机理论提供了一种方法来组织和管理协议的不同状态和在这些状态之间转换的规则。
展示了一个简单的有限状态自动机,这是一个由状态(État)和在特定事件(événement)触发时进行的动作(Action)组成的系统。自动机从一个状态转移到另一个状态,基于发生的事件和执行的动作。这是一个抽象的示例,用于解释状态、事件和动作之间的关系。
状态0:当事件1发生时,执行动作1并转移到状态1。
状态1:当事件2发生时,执行动作2并可能转移到另一个状态。
状态2:自动机也可以从状态1经过事件3和动作3转移到状态2,或者从状态2经过事件4和动作4转回状态0。
实现交替位协议的状态机模型,该模型包含事件、当前状态、新状态、以及触发的动作。在这个协议中,发送方使用两个状态(状态0和状态1)来跟踪应该发送的数据包的位值(0或1)。
当在状态0时,如果发送方希望发送数据,它将发送一个位值为0的数据包(Data-0),并设置一个定时器,然后转移到等待确认0的状态(Attente Ack 0)。
如果在等待确认0的状态时收到确认0(Arrivée Ack 0),则停止定时器,并转移到状态1,准备发送下一个位值为1的数据包(Data-1)。
如果定时器到期(Expiration Timer)而没有收到确认,将会重发Data-0数据包,并重新设置定时器,状态保持不变。
类似的逻辑适用于状态1。这个自动机确保了数据包按照预定的顺序发送,并且每个数据包都被确认。
它是一种改进的Send & Wait协议,可以更有效地使用带宽。
带有窗口控制的协议(Les protocoles à anticipation):
Send & Wait的问题:Send & Wait机制导致带宽使用效率低下,因为在等待确认(acquittement)的过程中,带宽没有得到充分利用。
提前发送数据包:为了提高效率,一个可行的策略是在不等待前一个数据包的确认的情况下发送下一个数据包。
窗口控制:为了避免过度发送数据包(这可能会导致接收方处理不过来或者因为丢包而导致大量重传),引入了所谓的“窗口”机制。这个窗口定义了发送方可以发送但尚未收到确认的数据包的最大数量。这个限制被称为“窗口大小”或“窗口限制”。
窗口滑动:随着确认的到达,窗口会向前“滑动”或“移动”,这就意味着新的数据包可以被发送,同时保持窗口大小不变。
这种机制允许发送方连续发送多个数据包,而不需要在每个数据包后都暂停等待确认,这样可以更充分地利用网络带宽。这种方法在许多协议中得到应用,如TCP(传输控制协议),其中的TCP窗口控制就是这种机制的一个实例。通过动态调整窗口大小,可以根据网络状况和流量拥塞来优化传输性能。
目的:流量控制是一种通信机制,允许接收方控制发送方的数据传输速率,以匹配其处理能力。
功能:
调节发送速率:如果接收方无法处理快速到来的数据,它可以通知发送方降低发送速率。
防止数据溢出:此机制还可以防止数据超出接收方的缓冲区容量,这样可以避免数据丢失。
流量控制在网络通信中至关重要,尤其是在接收方的处理速度不足以跟上发送方数据传输速度时。例如,如果一个应用程序正在从网络上下载数据,但由于CPU或内存限制而无法及时处理这些数据,流量控制可以防止应用程序被过多的数据淹没。
TCP协议中的流量控制就是通过窗口大小(window size)来实现的。接收方根据当前的缓冲区容量来设置窗口大小,并在确认消息(Acknowledgment messages)中通告这个大小给发送方。发送方根据这个窗口大小来调整其发送数据的速率。如果窗口大小变为零,发送方就会停止发送数据,直到窗口大小增加。这样可以确保数据的顺利传输,同时不会超出接收方的处理能力。