考研 408 × 求职面试
知识点 · 计算机网络 · 基础
每日一题 · 计算机网络
解析
面试小贴士 · 计算机网络
代码实现 · C
#include <stdio.h>
// 模拟数据自上而下逐层封装,每层加一个首部标记
void send(const char *data) {
printf("[应用层] 原始数据: %s\n", data);
printf("[传输层] 加 TCP 首部(含端口) -> 段\n");
printf("[网络层] 加 IP 首部(含 IP 地址) -> 包\n");
printf("[链路层] 加 MAC 首部 -> 帧\n");
printf("[物理层] 转为比特流发送\n");
}
// 接收方自下而上逐层解封装
void recv(const char *data) {
printf("[物理层] 接收比特流\n");
printf("[链路层] 去 MAC 首部 -> 帧\n");
printf("[网络层] 去 IP 首部 -> 包\n");
printf("[传输层] 去 TCP 首部 -> 段,按端口交付进程\n");
printf("[应用层] 还原数据: %s\n", data);
}
int main(void) {
const char *msg = "Hello, OSI!";
send(msg);
printf("----------------\n");
recv(msg);
return 0;
}