Linux下同一网段内的IP中两台主机通信不经过路由器(ARP)(转)

摘要:
这种和图一类似,三层switch的SVI接口不能接收到A与B之间的用户数据流量。家庭网关,俗称无线路由器,它的WAN口通常用来PPPoE拨号,运营商可以动态分配一个公网IP,绑定在此WAN口;通常还有4个LAN口,这4个LAN就是一个小switch,同样也有一个SVI接口,SVI接口的IP就是无线路由器的缺省网关,比如192.168.1.1或10.1.1.1,同样SVI也有自己的MAC地址。

答案一:同一网段A与B通信,不需要路由器介入。

A直接广播ARP request 到广播域,B处于同一广播域,可以接收到ARP request,B用单播方式直接告诉A自己的MAC B 地址。A收到B的ARP reply,将 MAC B ----10.1.1.3 缓存在ARP Table,既然知道B的二层、三层地址,可以完成 Ethernet Frame 的封装,从接口发送出去,可以长驱直入到达B,B也以同样的原理发回返程的Ethernet Frame。

答案二:A使用自己物理接口的网络掩码255.255.255.0,与自己的IP 10.1.1.2 做 【按位与】操作,计算出自己网段地址为10.1.1.0,再用自己的掩码和 B的IP 10.1.1.3 做【按位与】操作,计算出B的网段地址为10.1.1.0,由于A与B的网段地址完全相同,可以认为是同一网段。

答案三:路由器可能看到A与B的通信,也可能看不到A与B的通信,这取决于他们之间是交换机、还是HUB互联。

1)A、B、路由器三者采用二层交换机互联,如图一所示:

Linux下同一网段内的IP中两台主机通信不经过路由器(ARP)(转)第1张

A 的ARP request 到达 switch,switch 学习到A的 MAC A,并将A连接交换机的Port Number 和 MAC A 映射起来,我们称之为MAC Address Table:

Port 2/2 ----- MAC A

当B的ARP Reply 到达switch,switch 也用类似的方法将B的 Port Number 和MAC B 映射起来,看起来如下图

Port 2/3 ----- MAC B

当A发给B的 Ethernet Frame 到达switch,switch发现Frame 's Destination MAC = MAC B,查询一下MAC Address Table,找到这个表相:

Port 2/3 ----- MAC B

于是就从 Port 2/3 发送出去,Port2/3 是直连B的,所以只有B才可以收到此 Frame,路由器无法收到。

2)A、B、路由器三者采用HUB互联,如图二所示:

Linux下同一网段内的IP中两台主机通信不经过路由器(ARP)(转)第2张

A 与B之间的所有通信,包括ARP、A与B之间Frame 都被HUB以广播方式,发给广播域里每一个主机或路由器,所以路由器可以看到A与B的通信,路由器所要做的工作很简单,默默地丢( silently discard)

3)A、B、路由器三者采用具有三层功能的switch互联,如图三所示:

Linux下同一网段内的IP中两台主机通信不经过路由器(ARP)(转)第3张

switch 采用 SVI ( Software Virtual Interface ) 10.1.1.1 做A、B的缺省网关。这种和图一类似,三层switch 的SVI 接口不能接收到A与B之间的用户数据流量。

VLAN知识:

VLAN,Virtual Local Area Network, 虚拟局域网。如果没有VLAN,二层交换机所有的端口都在一个广播域,网络里通过二层互联的交换机全部处于一个广播域;假设switch 有48 个端口,有100台switch,那将有4800个端口,如果都连上主机,意味着有4800 host 处于同一个广播域,任何一个host 发广播消息,如 ARP 请求,4800 host都会接收,只有一个host 会发 ARP reply,其它都会被丢弃。造成的后果就是网络很嘈杂,网络充斥着广播消息,不仅浪费带宽,还浪费host CPU 资源。

另外大家处在一个二层域,不利于安全控制;比如公司有很多部门,有HR,财务,研发等部门,财务部门不希望和其他部门处于一个广播域,想有自己独立的广播域,如果用独立的switch 只给财务部门用,用路由器把这个switch隔离起来也可以,但不够灵活。财务部门可能工作在多个楼层,每个楼层财务人员可能只有几个人,不能充分利用48口交换机端口。

于是就有了VLAN这个利器,可以在一台交换机上划分多个VLAN,每个VLAN是一个独立的广播域,只有属于这个VLAN的交换机端口才可以收到属于这个VLAN的广播。比如HR VLAN,Finance VLAN,DEV VLAN,Finance 员工被分到Finance VLAN,于是Finance部门就不会收到 其它两个VLAN的广播。

配置了VLAN的switch,通常会动态生成一个SVI接口,Software Virtual Interface,这是一个软件虚拟接口,你可以把它看做位于switch 上的一个 host,它有自己的三层IP,也有自己的MAC,也有自己的端口号(内部端口号),SVI 既然属于VLAN这个广播域,可以收到ARP,可以做这个VLAN的缺省网关。

家庭网关,俗称无线路由器,它的WAN口通常用来PPPoE 拨号,运营商可以动态分配一个公网IP,绑定在此WAN口;通常还有4个LAN口,这4个LAN就是一个小 switch,同样也有一个SVI接口,SVI接口的IP就是无线路由器的缺省网关,比如 192.168.1.1 或10.1.1.1 , 同样SVI也有自己的MAC地址。

家庭网关还有DHCP 功能,可以给电脑或手机动态分配IP地址 + 缺省网关 + DNS server,再次提醒,缺省网关就是SVI的IP地址。

家庭网关 还具有NAT功能,私网和公网的转换,具体含义可以参考我别的文章,不再阐述。

家庭网关,还具有无线AP功能,可以验证用户,绑定用户,分配IP地址,加密/解密 用户数据流量。

普通的无线路由器没有VLAN的设置,如果想弄,cisco 无线路由器应该有这些功能,可以分 Man VLAN , Woman VLAN ,这样男人打游戏,女人看视频,互不干扰。

参考:

https://www.zhihu.com/question/41496681(以上内容转自此篇文章)

免责声明:文章转载自《Linux下同一网段内的IP中两台主机通信不经过路由器(ARP)(转)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇使用API管理平台的优势Jmeter(三) 从上传图片来入门Jmeter下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

RESTFul API

目录 一、前言 二、获取所有数据 三、获取详情 四、新增数据 五、修改数据 六、删除数据 七、特性路由 (1) 基本路由映射 (2) 路由映射参数 (3) 多重特性路由 (4) 缺省参数路由 (5) 参数约束路由 (6) 通配符(*)路由变量 (7) 路由映射复杂参数 (8) 路由前缀 一、前言 RESTful API 是基于HTTP协议...

[转]TCP/IP 协议基础(一)

参考书籍为《图解tcp/ip》-第五版。这篇随笔,主要内容还是TCP/IP所必备的基础知识,包括计算机与网络发展的历史及标准化过程(简述)、OSI参考模型、网络概念的本质、网络构建的设备等 下面是协议层从底层至顶层的一个模型图: 一、计算机网络的背景 1.1 计算机的发展 有人说:“20世纪最伟大的发明就是计算机”,自诞生伊始,计算机经历了一系列发展,从...

用Python构造ARP请求、扫描、欺骗

目录 0. ARP介绍 1. Scapy简述 2. Scapy简单演示 2.1 安装 2.2 构造包演示 2.2.1 进入kamene交互界面 2.2.2 查看以太网头部 2.2.3 查看 ICMP 头部 2.2.4 查看 IP 头部 2.2.5 查看 TCP/UDP 头部 2.2.6 简单构造 ICMP 包 2.2.7 简单 构造 ARP 包...

主流服务器虚拟化技术简单使用——Hyper-V(一)

Tips:因为博客园排版的原因,图片显示不清晰,可以放大网页查看清晰图片。 如果系统使用物理机,需要在BIOS里面开启Intel VT-x(或AMD-V),如果是VMware workstation,还须将处理器的虚拟化引擎中的三项开启。 本机主要硬件配置(使用VMware workstation模拟) CPU:i5-6200U(2核) 内存:4G 硬盘...

Mac for MySQL 5.7 安装教程

一、环境 MAC OS X 10.10 二、下载MySQL 地址:http://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.10-osx10.10-x86_64.dmg 三、双击安装 安装过程中需要注意的是,MySQL已经默认用户root的密码已经不再是root,而是动态生成的一个临时密码(如:root...

React native路由跳转navigate、push、replace的区别

由于没有系统的去学习RN,对路由跳转了解不多,只是跟着项目在做,抽点时间简单学习一下RN路由跳转方法区别,总结如下: 如上图,外部是一个栈容器,此时A页面在最底部,navigate到B页面,为什么此时用navigate没有用push呢,因为在栈内没有B页面时,用navigate和push是一样的,都是进行入栈操作,没有区别,出于习惯使用navigate。...