印花网络通信的原理是什么

  介绍

这篇文章给大家介绍印花网络通信的原理是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

1。印花网络模型揭秘

下面我们通过具体的例子来帮助大家理解印花网络的通信原理。任意选择k8集群中的一个节点作为实验节点,进入容器,查看容器的IP地址:

<>之前,美元ip    1:,瞧:& lt;环回,,lower_up>, mtu  65536, qdisc  noqueue  state  UNKNOWN  qlen  1000   ,,,联系/loopback  00:00:00:00:00:00  brd  00:00:00:00:00:00   ,,,inet  127.0.0.1/8  scope  host 瞧   ,,,,,,valid_lft  forever  preferred_lft 直到永远   3:,eth0@if771: & lt;广播、多播,,lower_up, m-down>, mtu  1440年,qdisc  noqueue  state    ,,,联系/ether  66: fb: 34: db:制备过程:b4  brd  ff: ff: ff: ff: ff: ff   ,,,inet  172.17.8.2/32  scope  global  eth0   ,,,,,,valid_lft  forever  preferred_lft 永远

这里容器获取的是/32位主机地址,表示将容器一个作为一个单点的局域网。

瞄一眼容器一个的默认路由:

<>之前,美元ip 路线   default  via  169.254.1.1  dev  eth0   169.254.1.1  dev  eth0  scope 链接

现在问题来了,从路由表可以知道<代码> 169.254.1.1>

莫慌,先回忆一下,当一个数据包的目的地址不是本机时,就会查询路由表,从路由表中查到网关后,它首先会通过<代码> ARP 获得网关的MAC地址,然后在发出的网络数据包中将目标MAC改为网关的MAC,而网关的IP地址不会出现在任何网络包头中。也就是说,没有人在乎这个IP地址究竟是什么,只要能找到对应的MAC地址,能响应ARP就行了。

想到这里,我们就可以继续往下进行了,可以通过IP马嘶<代码> 命令查看一下本地的ARP缓存:

<>之前,美元ip 马嘶声   169.254.1.1  dev  eth0  lladdr  ee: ee: ee: ee: ee: ee 可及

这个MAC地址应该是棉布硬塞进去的,而且还能响应ARP。但它究竟是怎么实现的呢?

我们先来回想一下正常情况,内核会对外发送ARP请求,询问整个二层网络中谁拥有<代码> 169.254.1.1 这个IP地址,拥有这个IP地址的设备会将自己的MAC地址返回给对方。但现在的情况比较尴尬,容器和主机都没有这个IP地址,甚至连主机上的端口<代码> calicba2f87f6bb> ee: ee: ee: ee: ee: ee>

这里我就不绕弯子了,实际上白布利用了网卡的代理ARP功能。代理ARP是ARP协议的一个变种,当ARP请求目标跨网段时,网关设备收到此ARP请求,会用自己的MAC地址返回给请求者,这便是代理ARP(代理ARP)。举个例子:

印花网络通信的原理是什么

上面这张图中,电脑发送ARP请求服务器8.8.8.8的MAC地址,路由器(网关)收到这个请求时会进行判断,由于目标8.8.8.8不属于本网段(即跨网段),此时便返回自己的接口MAC地址给电脑,后续电脑访问服务器时,目标MAC直接封装为MAC254。

现在我们知道,印花棉布的本质上还是利用了代理ARP撒了一个“善意的谎言”,下面我们来确认一下。

查看宿主机的网卡信息和路由信息:

<>之前,美元ip  addr   …   771年:,calicba2f87f6bb@if4: & lt;广播、多播,,lower_up>, mtu  1440年,qdisc  noqueue  state  UP  group 违约   ,,,联系/ether  ee: ee: ee: ee: ee: ee  brd  ff: ff: ff: ff: ff: ff  link-netnsid  14   ,,,inet6  fe80:: ecee: eeff: feee: eeee/64, scope 链接   ,,,,,,valid_lft  forever  preferred_lft 直到永远   …      美元,ip  route    …   172.17.8.2  dev  calicba2f87f6bb  scope 链接   …

查看是否开启代理ARP:

<>之前,美元cat /proc/sys/net/ipv4/conf/calicba2f87f6bb/proxy_arp   1

如果还不放心,可以通过tcpdump抓包验证一下:

<>之前,美元tcpdump 小姐;calicba2f87f6bb  -e 神经网络   tcpdump: verbose  output 镇压,,use  -v 或是-vv  for  full  protocol 解码   listening 提醒calicba2f87f6bb, link-type  EN10MB (以太网),capture  size  262144字节         14:27:13.565539  ee: ee: ee: ee: ee: ee 和gt;, 0: 58:交流:1 c: ce: 12日,ethertype  IPv4  (0 x0800), length  4191年,10.96.0.1.443 和gt;, 172.17.8.2.36180:, Flags  [p], seq  403862039:403866164,, ack  2023703985,, win  990年,options  [nop、nop TS  val  331780572, ecr  603755526), length  4125   14:27:13.565613  0: 58:交流:1 c: ce: 12,和gt;, ee: ee: ee: ee: ee: ee,, ethertype  IPv4  (0 x0800), length  66年,172.17.8.2.36180 和gt;, 10.96.0.1.443:, Flags  (。), ack  4125年,win  2465年,options  [nop、nop TS  val  603758497, ecr  331780572),, length  0

印花网络通信的原理是什么