计算机网络协议报文分析

714 阅读3分钟

标准的计算机网络的OSI七层体系结构,在实际应用中被划分为五层协议体系结构,分别是物理层、MAC层(数据链路层),IP层(网络层),TCP/UDP(运输层),应用层。 对于物理层来说,不存在数据帧的概念,所有的数据都是由一串0101码组成,每个数据帧报文在发送前需要发送8个字节的前导码,每个有效的数据报文前有1个字节的帧开始定界符,网卡在接收到帧开始定界符后,就表示后面的报文都是以太网数据帧。

物理层去掉了每个数据帧的前导码之后,紧接着的就是一个以太网数据帧,按照计算机网络协议体系结构,属于数据链路层的报文内容,报文结构如上图所示,目的MAC、源MAC、协议类型以及数据和帧校验序列,一般来说,PC或者网络设备对前6个字节的目的MAC地址进行解析,就能判断是否要进行下一步处理。6个字节的目的地址可以判断出是广播报文(全FF),组播报文(01005E打头的报文,目的IP为224.0.0.0网段)还是单播报文。 如果是PC,收到的目的MAC是全F的广播报文,需要进行下一步判断,是网关发送过来的ARP/RARP请求、DHCP报文或者是网络内其他设备发送的ARP报文,进一步解析之后,需要回复网关或者其他主机的进行回复,否则报文丢弃。如果是组播报文,判断自己是否加入组播组,没有则丢弃。单播报文,如果目的MAC是自己,则上送CPU进行处理,如果目的MAC不是自己,则丢弃。 如果是网络节点设备,收到目的MAC是全F的广播报文,则报文内容需要自己回复,则进行报文回复,如果不是,则朝同一vlan的其他所有接口进行广播。转发时,报文头中的源MAC换成自己的MAC地址,目的MAC还是全F,一直到找到这个VLAN中能回复这个报文的设备为止。如果收到的单播报文,则判断目的MAC是不是自己,是自己,则上送进行下一步解析及回复,不是则查找mac表,如果mac表中有目的MAC,则根据mac地址表中对应的端口进行转发,转发时报文头中的源mac换为自己的mac。如果当前mac表中没有目的MAC,则需要先发送广播报文在网络范围内查找是否有这个目的MAC的主机存在。 网络节点设备上的mac地址表,是通过主机上线时朝网络节点设备上发送报文时,网络节点设备解析数据帧的源MAC并记录上报的端口号。对于一个接入层的二层交换机来说,不同主机从不同的端口接入,形成了一张端口+主机MAC(+VLAN)的MAC地址表。对于一个三层交换机来说,下联所有的二层交换机也是从不同的端口接入的,且二层交换机转发报文时将报文头中的源MAC换成了二层交换机自己的MAC,形成了一张端口+下联二层交换机MAC+VLAN的MAC地址表。路由器不存在VLAN的概念,每一个接口都是一个三层路由口,形成的一张端口+下联设备MAC的MAC地址表。

对于网络节点设备,每个入口其实都有对应的数据报文出入处理过程,在下一章节所述。

组播报文协议这里不扩展(不了解)

单播报文