2、接口的概念:
????接口可以理解为链路层的每一个收发单元,每一个接口可以对应实际的一个网卡,也可以是一个没有实际物理设备驱动对应的“虚”接口,比如网桥接口、vlan子接口,不论是“虚”接口还是“实”接口,在内核中都是以net_device结构体描述;
?? 对于网络层,最重要的工作是选路,即确定路由,而确定路由就是确定报文是转发还是上送本机,如果是转发的话从哪个接口发送(skb->_skb_dst),并且路由判决所需条件也包括报文的输入接口即报文是从哪个接口上到网络层的(skb->dev),除路由之外,上层协议栈其他部分也经常关注报文的输入接口和路由转发接口;??
?? 所以接口是报文实际输入输出的逻辑路径,但不一定是物理路径,如某报文的路由结果是从eth0.5接口转发出去,那么这个eth0.5就是转发的逻辑路径,但它并没有实际的物理驱动,而是再通过vlan子接口处理最终仍由eth0实际转发报文,再如某报文由网桥br0上送到网络层,那么br0是该报文的逻辑路径,上层协议栈认为该报文就是从br0接收的,而实际该报文可能是由eth1实际接收的,经过网桥处理后输入接口变为br0的。
?? 之所以会有“虚”接口,都是因为一些特殊的目的,linux需要实现网桥,需要实现vlan,而这些都是逻辑上的概念,并不真的存在某种物理设备叫网桥或者叫vlan,所以需要人为的制造出这些“虚”接口,以满足上层协议栈向下处理的统一性,而这些“虚”接口和“实接口的“虚实转换”,就是需要链路层实现的内容。
??“实”接口一般由网卡驱动生成,因为网卡驱动管理实际的物理设备,所以一般诸如eth0、wlan1、usb2之类“实”接口由网卡驱动生成,网卡驱动负责这些“实”接口的ops实现;而“虚”接口一般由应用程序生成,如网桥、vlan子接口,内核源码负责这些类型的“虚”接口的ops。
?? 可以把linux机器想象成一台能够实现交换机、路由器、主机的L2/3/4/5功能的结合体机器,“实”接口就是这个结合体机器的每个物理端口,“虚”接口表面上实现一些二层网络功能,如vlan子接口实现物理端口的vlan功能,网桥接口实现二层交换功能,而实际上这些“虚”接口同样被这个结合体机器的L3/4/5所识别。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/tongxinshuyu/article-60263-2.html
由于美帝如此“现代化”的军舰飞机的入侵
那只是商家自己做的决定