1)要求程序为命令行程序。比如,可执行文件名为framer.exe,则命令行形式如下:framer inputfile outputfile
其中,inputfile为原始数据文件,outputfile为输出结果。
使用操作系统、语言、编程环境不限,但在报告中必须注明。
2)输出:对应input1和input2的结果分别为output1和output2。
【帧封装】是数据链路层的一个重要概念,它指的是在网络传输数据时,为了确保数据在物理链路上的正确传输,会在原始数据的前后加上特定的头部和尾部信息,形成一个完整的帧结构。帧封装是理解网络协议运作机制的关键步骤,通过封装,数据能够被正确识别和处理,同时也能检测并纠正传输过程中可能产生的错误。
在这个【计算机网络课程设计】中,任务是编写一个命令行程序,该程序能够将给定的原始数据文件(如input1和input2)封装成IEEE802.3格式的帧,并将结果保存到新的文件中(如output1和output2)。程序执行时,需通过命令行指定输入和输出文件,例如:`framer inputfile outputfile`。程序的实现语言和编程环境不做特定限制,但要求在报告中说明。
按照802.3标准,一个Ethernet帧由7个部分组成:
1. **前导码**:由连续的56位10101010…101010位序列组成,主要用于接收同步阶段。
2. **帧前定界符**:由6位的101011组成,用于区分帧的开始。
3. **目的地址**:48位的MAC地址,标识帧的目的节点。
4. **源地址**:同样为48位的MAC地址,标识帧的发送节点。
5. **长度字段**:2字节,表示数据字段的长度,不包含前导码、帧前定界符、目的地址、源地址和校验字段。
6. **数据字段**:长度可变,最小为46字节,如果不足46字节则需要填充。
7. **校验字段**:4字节的CRC校验码,用于检测传输中的错误。
**CRC校验**是一种广泛应用于数据通信领域的错误检测技术。发送端通过给定的生成多项式对原始数据进行计算,生成一个校验码附加到数据后面。接收端同样使用生成多项式对收到的数据进行校验,通过比较是否一致来判断传输过程中是否有错误。CRC校验码有以下特点:
- 可检测出所有单个错误。
- 可检测出所有奇数位错误。
- 可检测出所有双位错误。
- 可检测出所有小于或等于校验位长度的突发错误。
- 有较高的概率检测出长度为(K+1)位的突发错误。
在设计实现程序时,首先需要填充帧头部字段,包括前导码、帧前定界符、目的地址、源地址和长度字段。长度字段的计算需要获取输入文件的大小,通常通过文件流操作获取。然后,根据输入文件的内容填充数据字段。计算CRC校验码,并将其添加到帧的尾部。整个过程涉及文件I/O操作、数据处理和错误检测,有助于深入理解网络协议的工作原理和实际应用。