计算机网络实验目录
- eth协议实现
- ARP协议实现
- RIP路由配置和协议分析
- IP协议实现
- ICMP协议实现
- UDP协议实现
- NAT组网
- 邮件客户端的设计与实现
前言
HITSZ 2022春计算机网络实验记录,并结合计网理论课程内容进行复习总结
实验网址
基础知识
一、数据链路层基本工作
数据链路层的基本工作:
- 封装成帧:添加首部(SOH)和尾部(EOT)进行帧界定,划分IP数据报内容,首部和尾部还包含必要的控制信息。各种链路层协议都对首部和尾部有明确的规定,同时规定数据部分的长度上限(MTU)
- 透明传输:在数据部分中可能出现的SOH和EOT前加ESC转义字符
- 差错检测:如循环冗余检测CRC(FCS帧检验序列,属于数据后面添加的冗余码)
二、数据链路层协议
- PPP协议(点对点协议,可靠传输协议):用户计算机与ISP进行通信时所用的协议
- 广播信道(一对多通信):以太网使用
- CSMA/CD协议:不可靠传输协议,使用载波监听和碰撞检测,是总线型以太网采用的协议。
二、MAC地址
MAC地址实际上是局域网适配器的标识地址,又叫物理地址或者硬件地址,MAC的6字节地址被固化在适配器的ROM中。世界上的每一个适配器都有唯一的地址。
三、以太网MAC帧格式
总线型和星型网络结构均使用以太网帧
- 以太网帧不需要EOT:使用曼彻斯特编码,但接受的电平不发生转变时,只需前移4个字节即可找到数据的结束位置
去除报头和FCS得到链路层的数据帧:
- MAC目标地址:接收帧的网络适配器的物理地址(MAC地址),6个字节。
- 当网卡接收到一个数据帧时,首先会检查该帧的目的地址,如果与当前适配器的物理地址相同,进一步处理
- 帧的目的地址为广播地址(FF-FF-FF-FF-FF-FF),进一步处理;
- 否,则直接丢弃。
- MAC源地址:发送帧的网络适配器的物理地址,6个字节。
- 类型,2个字节:
- 当该值在0x05DC(10进制数为1500)以下,表示该以太网数据帧长度;
- 在0x0600以上时,则表示上层协议的类型,标识数据交付哪个协议处理。
实验实现
一、分析
实际上就是对接收到的以太网MAC帧进行处理,由于封装好了很多包,所以只需要进行基础函数编写,需要注意:
- memcpy使用的时候最好指定清楚拷贝的大小
- 注意大小端字节序