数据链路层中一些零碎且易忘的知识点
发布人:shili8
发布时间:2025-03-06 02:37
阅读次数:0
**数据链路层中的零碎知识点**
数据链路层是OSI参考模型中的第二层,位于网络接口层和网络层之间。它负责将数据分割成适合传输的帧,并在两个相邻设备之间传递这些帧。在这个文档中,我们将讨论一些零碎且易忘的知识点。
###1. 帧格式帧是数据链路层中的基本单位,它包含以下部分:
* **前导码**:用于标识帧开始和结束。
* **目的地址**:指向接收设备的MAC地址。
* **源地址**:指向发送设备的MAC地址。
* **控制信息**:用于控制数据传输,例如CRC校验等。
* **数据**:实际要传输的数据。
* **尾随码**:用于标识帧结束。
c// 帧格式示例struct Frame { uint8_t lead; // 前导码 uint16_t destMac; // 目的地址 uint16_t srcMac; // 源地址 uint8_t ctrlInfo[2]; // 控制信息 uint8_t data[1024]; // 数据 uint8_t tail; // 尾随码};
###2. MAC地址MAC地址是用于标识设备的唯一地址,它由6个字节组成,通常用十六进制表示。
c// MAC地址示例uint16_t macAddress[6] = {0x00,0x11,0x22,0x33,0x44,0x55};
###3. CRC校验CRC(循环冗余码)是用于检测数据传输错误的技术,它通过计算一个数字来检查数据是否完整。
c// CRC示例uint16_t crc16(const uint8_t* data, int len) { uint16_t crc =0xFFFF; for (int i =0; i < len; i++) { crc ^= data[i]; for (int j =0; j < 8; j++) { if (crc &1) { crc >>=1; crc ^=0xA001; } else { crc >>=1; } } } return crc; }
###4. 滑动窗口协议滑动窗口协议是一种用于控制数据传输的协议,它通过维护一个滑动窗口来管理数据的发送和接收。
c// 滑动窗口示例struct Window { int maxWindowSize; // 最大窗口大小 int currentWindowSize; // 当前窗口大小 int sendSequenceNumber; // 发送序列号 int receiveSequenceNumber; // 接收序列号};
###5. ARQ协议ARQ(自动重传请求)是用于控制数据传输的协议,它通过发送确认信息来管理数据的发送和接收。
c// ARQ示例struct Arq { int maxWindowSize; // 最大窗口大小 int currentWindowSize; // 当前窗口大小 int sendSequenceNumber; // 发送序列号 int receiveSequenceNumber; // 接收序列号};
###6. 流量控制流量控制是用于管理数据传输的技术,它通过监控网络负载来避免拥塞。
c// 流量控制示例struct FlowControl { int maxBandwidth; // 最大带宽 int currentBandwidth; // 当前带宽};
###7. 网络接口层网络接口层是OSI参考模型中的第一层,它负责将数据从应用程序传输到网络。
c// 网络接口示例struct NetworkInterface { int maxBandwidth; // 最大带宽 int currentBandwidth; // 当前带宽};
###8. 数据链路层数据链路层是OSI参考模型中的第二层,它负责将数据分割成适合传输的帧,并在两个相邻设备之间传递这些帧。
c// 数据链路示例struct DataLink { int maxWindowSize; // 最大窗口大小 int currentWindowSize; // 当前窗口大小};
###9. 网络层网络层是OSI参考模型中的第三层,它负责将数据从源设备传输到目的设备。
c// 网络示例struct Network { int maxBandwidth; // 最大带宽 int currentBandwidth; // 当前带宽};
###10.传输层传输层是OSI参考模型中的第四层,它负责将数据从源设备传输到目的设备。
c//传输示例struct Transport { int maxWindowSize; // 最大窗口大小 int currentWindowSize; // 当前窗口大小};
###11. 会话层会话层是OSI参考模型中的第五层,它负责建立和维护数据传输的连接。
c// 会话示例struct Session { int maxWindowSize; // 最大窗口大小 int currentWindowSize; // 当前窗口大小};
###12. 表现层表现层是OSI参考模型中的第六层,它负责将数据转换成适合传输的格式。
c// 表现示例struct Presentation { int maxWindowSize; // 最大窗口大小 int currentWindowSize; // 当前窗口大小};
###13. 应用层应用层是OSI参考模型中的第七层,它负责将数据从应用程序传输到网络。
c// 应用示例struct Application { int maxWindowSize; // 最大窗口大小 int currentWindowSize; // 当前窗口大小};
###14. OSI参考模型OSI参考模型是用于描述数据传输过程的框架,它包含七个层次。
c// OSI示例struct Osi { struct NetworkInterface networkInterface; struct DataLink dataLink; struct Network network; struct Transport transport; struct Session session; struct Presentation presentation; struct Application application; };
###15. TCP/IP参考模型TCP/IP参考模型是用于描述数据传输过程的框架,它包含四个层次。
c// TCP示例struct Tcp { int maxWindowSize; // 最大窗口大小 int currentWindowSize; // 当前窗口大小};
###16. IP协议IP协议是用于将数据从源设备传输到目的设备的协议。
c// IP示例struct Ip { int maxBandwidth; // 最大带宽 int currentBandwidth; // 当前带宽};
###17. ICMP协议ICMP协议是用于管理数据传输过程的协议。
c// ICMP示例struct Icmp { int maxWindowSize; // 最大窗口大小 int currentWindowSize; // 当前窗口大小};
###18. UDP协议UDP协议是用于将数据从源设备传输到目的设备的协议。
c// UDP示例struct Udp { int maxWindowSize; // 最大窗口大小 int currentWindowSize; // 当前窗口大小};
###19. DNS协议DNS协议是用于管理域名和IP地址之间的映射关系的协议。
c// DNS示例struct Dns { int maxWindowSize; // 最大窗口大小 int currentWindowSize; // 当前窗口大小};
###20. HTTP协议HTTP协议是用于管理Web服务和客户端之间的通信关系的协议。
c// HTTP示例struct Http { int maxWindowSize; // 最大窗口大小 int currentWindowSize; // 当前窗口大小};
###21. FTP协议FTP协议是用于管理文件传输和管理服务之间的通信关系的协议。
c// FTP示例struct Ftp { int maxWindowSize; // 最大窗口大小 int currentWindowSize; // 当前窗口大小};
###22. SMTP协议SMTP协议是用于管理电子邮件传输和管理服务之间的通信关系的协议。
c// SMTP示例struct Smtp { int maxWindowSize; // 最大窗口大小 int currentWindowSize; // 当前窗口大小};
###23. POP3协议POP3协议是用于管理电子邮件传输和管理服务之间的通信关系的