root@michael-host:/home/michael# ip addr show docker0 7: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default link/ether 02:42:ad:c7:75:98 brd ff:ff:ff:ff:ff:ff inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0 valid_lft forever preferred_lft forever inet6 fe80::42:adff:fec7:7598/64 scope link valid_lft forever preferred_lft forever root@michael-host:/home/michael#
在学习 Linux 网络相关的知识时或者在定位网络相关的问题中,经常需要使用 route 命令查看路由表,本节主要记录该命令的输出及其含义。Linux 系统上一般有3张路由表,可以通过 ip rule 命令查看:
1 2 3 4
# ip rule list 0: from all lookup local 32766: from all lookup main 32767: from all lookup default
路由表的配置可以通过 ip route list table {name} 输出,如果是查看 main 表,可以直接使用 route -n,例如:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
root:/mnt/e/github/proto# ip route list table main default via 172.23.32.1 dev eth0 10.42.0.0/24 dev cni0 proto kernel scope link src 10.42.0.1 172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown 172.23.32.0/20 dev eth0 proto kernel scope link src 172.23.45.94 root:/mnt/e/github/proto# root:/mnt/e/github/proto# root:/mnt/e/github/proto# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 172.23.32.1 0.0.0.0 UG 0 0 0 eth0 10.42.0.0 0.0.0.0 255.255.255.0 U 0 0 0 cni0 172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0 172.23.32.0 0.0.0.0 255.255.240.0 U 0 0 0 eth0 10.244.186.193 0.0.0.0 255.255.255.255 UH 0 0 0 cali687d9beb32a
Protobuf 是 Google 出品的消息编码工具,相比常用的 json 等编码方式,以牺牲可读性,而提高编码效率,减少编码之后消息体占用的字节大小,以提升传输效率。本篇文章主要分享如何生成 Go 语言 pb 版本,对于 Go 语言而言,protoc 不能直接生成 Go 代码,需要额外的插件。对于这个插件,官方有自己的实现,也有第三方的 gogo/protobuf,本节主要是用来厘清他们之间的区别以及用法。在开始之前,我们先澄清一些基本的概念: