数据链路层(组帧)
数据链路层之所以要把比特组合成帧为单位传输,是为了在出错时只重发出错的帧,而不必重发全部数据,从而提高效率。为了使接收方能正确地接收并检查所传输的帧,发送方必须依据一定的规则把网络层递交的分组封装成帧(称为组帧)。组帧主要解决 帧定界、 帧同步、 透明传输等问题。
注意:组帧时既要加首部,又要加尾部。原因是,在网络中信息是以帧为最小单位进行传输的,所以接收端要正确地接收帧,必须要清楚该帧在一串比特流中从哪里开始到哪里结束(因为接收端收到的是一串比特流,没有首部和尾部是不能正确区分帧的)。而分组(即IP数据报)仅是包含在帧中的数据部分,所以不需要加尾部来定界。
字符计数法
字符计数法是指在帧头部使用一个计数字段来标明帧内字符数。目的结点的数据链路层收到字节计数值时,就知道后面跟随的的字节数,从而可以确定帧结束的位置(计数字段提供的字节数包含自身所占用的一个字节)。
这种方法最大的问题在于,如果计数字段出错,即失去了帧边界划分的依据,那么接收方就无法判断所传输的结束位和下一帧的开始位,收发双方将失去同步,从而造成灾难性后果。
字符填充的首尾定界符法
字符填充法使用一些特定的字符来定界一帧的开始(DLE STX)与结束(DLE ETX)<