数据流的分析

时间:2021-02-21 06:24:50

现在我就举一个数据流的分析:两主机(A、B)连在一个傻瓜交换机上,同一网段,分析ping包的数据流向。主机A向主机B发ping包,首先,主机A将目标IP地址和自己子网掩码进行“与”运算,判断目标是否跟自己在同一网段(不同网段数据交给网关处理)。接着会查ARP表是否有目标主机的MAC地址。有MAC地址则从OSI七层往下一层层封装数据,没有目标MAC地址则是发送ARP请求,请求目标主机MAC(不同网段请求网关MAC)。此时,主机A不知道目标主机B的MAC地址,主机A发送ARP请求包,那么主机A怎么解决二层数据封装问题,这时,就用到全F组成的广播地址还封装数据,让所有同一网的的主机收到这个包。主机A发送ARP请求包后,所有同网段的主机所做的第一件事就去二层帧头,查看三层数据。在三层IP头部只有目标IP为主机B的才接受这个包,其他主机则丢弃这个数据包。主机B接受包后,记录主机A的MAC地址,然后以一个单播ARP回应包告诉主机A(主机B已经学习到了A的MAC地址)。主机A收到ARP回应包学习到了主机B的MAC地址,就会发送ICMP包给主机B,此时是单播包,ICMP的数据从上层往下层封装(Reply from 192.168.1.1: bytes=32 time=1ms TTL=64,这是一个ping包,32字节的数据填充的是abcdefg……26个字母直到满32个字节,你们可以抓包看看)。主机B收到ICMP后,会回应一个ICMP给主机A。ping过程结束。这是个简单的数据流分析,便于理解网络过程。学习路由协议也是一样,只要理解者协议的数据流流向,就能很清楚的掌握路由协议原理。再举一个数据流分析问题的例子。ip route 0.0.0.0 0.0.0.0 ethernet 0这样的配置才书上说是有问题的,为什么呢。其实,你只要分析数据是怎么封装的就能知道为什么,当数据包封装到第二层的时候,路由器不知道路由下一跳的IP地址,无法ARP请求,故无法学习MAC,数据封装失败。最后,学习要多交流,因为只有多交流才会有更好更快的进步!