实验一 组网实验
1.2 以太网链路层帧格式分析
一、实验目的
分析Ethernet V2标准规定的MAC层帧结构,了解IEEE802.3标准规定的MAC层帧结构和TCP/IP的主要协议和协议的层次结构。
二、 实验内容
通过对截获帧进行分析,分析和验证Ethernet V2标准和IEEE802.3标准规定的MAC层帧结构,初步了解TCP/IP的主要协议和协议的层次结构。
三、 实验环境和分组
l 二层交换机2台,标准网线6根,console线4条,计算机6台;
l 计算机均需要在网络设置中配置NWLink IPX/SPX/NETBIOS协议;
l 每组6名同学,其中每2名同学作为一个小组。
l ethereal,winpcap
四、 实验组网
五、实验步骤
步骤 1 按图2-3所示连接好设备,正确配置PCA和PCB的IP地址。将交换机的配置清空。
步骤 2 在PCA和PCB上运行Ethereal截获报文,然后进入PCA的Windows命令行窗口,执行如下命令:(先打开PCA和PCB的Message服务)
net send 192.168.1.21 “hello”
这是PCA向PCB发送消息的命令,等到PCB显示器上收到消息后,终止截获报文,将截获报文命名为HELLO—学号,
PCC和PCD的操作与上面完全一样。
步骤 3 对截获的报文进行分析:
(1) 列出截获的报文的协议种类,各属于哪种网络?
按网络交换功能分:1.电路交换 2.报文交换 3.分组交换 4.混合交换
你选择哪个呢?
(2) 找到发送消息的报文并进行分析,研究主窗口中的数据报文列表窗口和协议树窗口信息,填写表2-1。
表2-1 报文分析
此报文类型 |
SMB |
|
此报文基本信息(数据报文列表窗口中Information项内容) |
Send single block message request |
|
EthernetⅡ协议树中 |
Source字段值 |
00:88:99:80:61:3e |
Destination字段值 |
00:99:88:00:31:4a |
|
Internet Protocol协议树中 |
Source字段值 |
192.168.99.23 |
Destination字段值 |
192.168.99.22 |
|
User Datagram Protocol协议树中 |
Source Port字段值 |
1089 |
Destination Port字段值 |
Netbios-ssn(139) |
|
应用层协议树 |
协议名称 |
Server massage block protocol |
包含Hello的字段名 |
Massage |
注:将倒数第二行的User Datagram Protocol改成TCP。反正我没有看到有User Datagram Protocol。截图证明我收的数据包分明是TCP。如果你捕获到的数据包有User Datagram Protocol,请通知我。谢谢!
六、实验总结
通过实验,我对Ethernet V2标准规定的MAC层报文结构进行了分析,了解TCP/IP的主要协议和协议的层次结构,验证了IEEE802.3标准规定的MAC层报文结构。
上图中的数据链路层头(Header)是数据链路层的控制信息的长度不是固定的,根据以太网数据帧的格式的不同而不同,那么判断 IEEE802.3、IEEE802.3 SNAP、Ethernet Version2、Netware 802.3 “Raw”这些数据帧的最主要依据也源于 Header的变化(下文分别给出这几种帧的结构)。捕捉数据包的时候是掐头去尾的,不要前面的前导码,还也丢弃后面的CRC校验(注意它只是不在 Decode 里显示该区域,但并不代表它不去做数据包CRC校验)。因为硬件-网卡已经做了帧同步,帧校验的工作。
图1-2 Ethernet Version2 帧
图 1-3 IEEE802.3 帧
SFD: 开始定界符
DSAP: 目标服务访问点
SSAP:源服务访问点
Control: 控制信息
图 1-4 IEEE802.3 SNAP 帧
图 1-5 Novell Netware 802.3 “Raw”
从上图中可以看出,802.3 “Raw”帧通过在 DLC 头中 2 个字节的长度(Length)字段来标记数据帧长度,而在长度字段后紧跟着就是两个字节的十六进制值 FFFF,它是用来标识 IPX 协议头的开始。为了确保最小数据帧长度为 64 字节,MAC 层会进行填充数据区域来确保最小长度。
图 1-6
Ethernet V2 帧与 IEEE 802.3 帧的比较
因为这两种帧是我们在现在的局域网里最常见的两种帧,因此,我们对它们进行一些比较。 从图 1-6 中可以看出, Ethernet V2 可以装载的最大数据长度是 1500 字节, 而IEEE 802.3可以装载的最大数据是 1492 字节(SNAP)或是 1497 字节; Ethernet V2 不提供 MAC 层的数据填充功能,而 IEEE 802.3 不仅提供该功能,还具备服务访问点(SAP)和 SNAP 层,能够提供更有效的数据链路层控制和更好的传输保证。 那么我们可以得出这样的结论: Ethernet
V2 比 IEEE802.3 更适合于传输大量的数据,但 Ethernet V2 缺乏数据链路层的控制,不利于传输需要严格传输控制的数据,这也正是 IEEE802.3 的优势所在,越需要严格传输控制的应用,越需要用 IEEE802.3 或 SNAP 来封装,但 IEEE802.3 也不可避免的带来数据装载量的损失,因此该格式的封装往往用在较少数据量承载但又需要严格控制传输的应用中。在实际应用中, 我们会发现, 大多数应用的以太网数据包是 Ethernet V2 的帧 (如 HTTP、FTP、 SMTP、 POP3 等应用) , 而交换机之间的 BPDU (桥协议数据单元) 数据包则是 IEEE802.3
的帧,VLAN Trunk 协议如 802.1Q和Cisco 的 CDP(思科发现协议)等则是采用 IEEE802.3 SNAP 的帧。
举例:
本人在课堂上也截获到了(Ethernet 2的数据包比802.3的数据包容易捕获)
图1-7
图 1-8
从上两图可以看出,IEEE802.3 把 DLC层分隔成明显的两个子层:MAC 层和 LLC 层,其中 MAC 层主要是指示硬件目的地址和源地址。LLC 层用来提供一些服务:
– 通过 SAP 地址来辨别接收和发送方法
– 兼容无连接和面向连接服务
– 提供子网访问协议(Sub-network Access Protocol,SNAP) ,类型字段即由它的首部给出。
MAC 层要保证最小帧长度不小于 64字节,如果数据不满足 64 字节长度就必须进行填充。
图 1-72是Ethereal捕获的 IEEE802.3 帧的解码,可以看到在 DLC层源地址后紧跟着就是802.3 的长度(Length)字段 0026,它小于 05FF,可以肯定它不是 Ethernet V2 的帧,而接下来的 Offset 0E 处的值“4242” (代表DSAP 和 SSAP,是十六进制的) ,既不是 Novell 802.3 “Raw”的特征值“FFFF” ,也不是 IEEE 802.3 SNAP 的特征值“AAAA” ,因此它肯定是一个 IEEE802.3的帧。值得留意的是这些帧的source,居然是cisco_1c:59:95。汗~
另外请思考:
在同一个文件中看到有一个ARP数据包的报文长度是42(如下图所示)。从图1-1可以知道截获的报文长度应该是60;从图1-2中 也可以得6+6+2+46=60。你再看看其他的数据包,还真没有发现少于60的数据报文了。这究竟是怎么回事呢?