对于Linux可以通过查看/proc/net/nf_conntrack文件的内容来跟踪包的链路情况
参考:浅析 /proc/net/nf_conntrack 文件(转)_cnxhsy的技术博客_51CTO博客
Bridge:
docker通过docker0这个网桥来保证容器间的通信,但是网桥一般是只认mac地址,不认ip地址,属于二层网络设备,路由器属于三层网络设备,我们发送一个包到一个ip后,首先三层网络设备会广播arp包来询问局域网中的ip地址所属的mac地址,找到mac地址后将mac地址写到网络包中的目的mac地址上,然后二层网络设备就能通过mac地址找到对应的网卡也就是说,网桥一般是二层设备,是没有ip地址的,那么docker0是一个虚拟网桥,为什么要设置一个ip地址呢,这是因为给网桥设置一个ip地址后,它就跟内核协议栈关联起来了,这样所关联的网络命名空间就能和主机,以及公网进行通信
veth-pair:
Linux的一个网络设备,这个网络设备有两个端点,数据从一个端点进入,必然从另外一个端点流出,每个veth都可以被赋予ip地址,并参与三层网络路由过程网络设备被赋予ip之后,那它的一端就可以被认为与协议栈相连
docker启动一个容器后,会创建一个veth-pair网卡,一端链接docker0,一端链接容器内的协议栈,并且为他们创建路由(为什么两端都要创建路由)
我们创建了一个veth-pair设备后,我们