本帖最后由 ztbf 于 2020-2-5 11:44 编辑
从事网络工作很多年,感到很多基础网络知识点是支撑工作重要工具,,比如arp转发,特别是上大学计算机专业表弟问我为什么转发需要arp时,才明白很多人不理解,当设备的数据过网络传给另一设备时,IP数据报文必须封装成帧才能通过物理网络发送,这个时候需要知道对端的MAC,而这需要ARP协议,另外vxlan转发流程也一样,后面有机会和大家交流下时也会写下,自己面试员工时,也喜拿这个当题目,所以分享给大家交流。
先来简单点: 二层arp 转发流程,自己用viso画的图,说明下,
当主机A和主机B在同一网段时,主机A查看自己的ARP表,确定其中是否包含B对应的ARP表项。如果找到了B对应的MAC地址,则A直接利用ARP表中的MAC地址,对IP数据包进行帧封装,并将数据包发送给B。
如果主机A在ARP表中找不到对应的MAC地址,则将缓存该数据报文,然后以广播方式发送一个ARP请求报文。ARP请求报文中的发送端IP地址和发送端MAC地址为A的IP地址和MAC地址,目标IP地址为B的IP地址,目标MAC地址为全0的MAC地址。由于ARP请求报文以广播方式发送
该网段上的所有主机都可以接收到该请求,但只有被请求的主机B会对该请求进行处理。B比较自己的IP地址和ARP请求报文中的目标IP地址,当两者相同时进行如下处理:将ARP请求报文中的发送端A的IP地址和MAC地址存入自己的ARP表中。之后以单播方式发送ARP响应报文给A,其中包含了自己的MAC地址B向A发出一个包含其MAC地址的ARP响应报文。
A收到ARP响应报文后,将B的MAC地址加入到自己的ARP表中以用于后续报文的转发,同时将IP数据包进行封装后发送出去.
下面在来个三层arp转发流程,简单说明下
主机A和主机B不在同一网段时,主机A将数据包发送到网关由网关进行三层寻址转发, 1 首先A会读arp缓存,看是否有网关ip与mac地址的对应关系,如果有将直接封装帧转发;如果没有将使用arp协议也就是广播,携带自己的ip地址与mac地址,目的地址为网关ip,mac地址为f
网关收到此arp广播后,将回复A自己的mac地址,数据包为网关ip和mac地址目的为A ip和mac地址。
主机A收到数据包后会将IP和MAC地址写入到电脑的arp缓存表里,并直接封装数据包,三层IP头为源A,目的为B,二层帧格式为源macA,目的为网关macC地址(记住此包头)。
2 网关将收到A发来的数据包,进行拆包,根据其目的ip地址进行寻址(路由表),找到对应的,如果查找到ip和mac地址的对应关系将直接封装转发,如果没有交换机将发送arp广播包获取目的ip地址的mac地址.
B接收到路由器发来的数据包,解封检验MAC地址为自己MAC 接收数据包,然后向源发送IC应答数据包,过程一样。
引申:自己遇到很多人问过,有一台电脑能正常访问其它服务器,而有一台不行,这个有故障的服务器能访问自己的网关,这个时候很有可能故障服务器没有配置网关引起的故障。
|