Linux下同一网段内的IP中两台主机通信不经过路由器(ARP)(转)
答案一:同一网段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、路由器三者采用二层交换机互联,如图一所示:
<img data-rawwidth="677" data-rawheight="356" src="https://pic3.zhimg.com/50/0dc89a1bc237c10756b5ebbc0d91d658_hd.jpg" class="origin_image zh-lightbox-thumb" width="677" data-original="https://pic3.zhimg.com/0dc89a1bc237c10756b5ebbc0d91d658_r.jpg">

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互联,如图二所示:

A 与B之间的所有通信,包括ARP、A与B之间Frame 都被HUB以广播方式,发给广播域里每一个主机或路由器,所以路由器可以看到A与B的通信,路由器所要做的工作很简单,默默地丢( silently discard)。
3)A、B、路由器三者采用具有三层功能的switch互联,如图三所示:

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)(转)的更多相关文章
- 网络中两台主机的通信过程(TCP)
两台主机通信有两种情况:1.在同一网段中 2.不在同一网段中 (1.)在同一网段的通信过程 主机在应用层上的操作: TCP/IP协议上tcp的端口对应的各种应用程序,客户机要访问某个应用程序就会要求打 ...
- Cisco Packet Tracer中两台电脑通信设置
Cisco Packet Tracer是网络初学者仿真模拟网络环境的必备工具.今天我们来模拟下两台电脑之间的通信. Cisco Packet Tracer版本6.2.0 一.添加设备 1.这里添加一个 ...
- Linux中两台主机配置互信关系
服务名:sshd 客户端配置文件:/etc/ssh/ssh_config 服务端配置文件:/etc/ssh/sshd_config sshd服务需要重启才会生效 service sshd restar ...
- php计算网段内所有IP,分配子网段
由于最近业务需要,写了个获取网段内所有IP的函数,以及分配可用子网段的函数 /** * 根据网段获取计算所有IP * @param string $segment 网段 '139.217.0.1/24 ...
- 【Linux学习笔记】用nc实现两台主机间的文件传输(不需要输密码)
通常,可以用scp完成两台主机间的文件传输任务,但在主机间未建立信任关系的情况下,scp每次都需要输入密码,用起来感觉不是很方便,之前这篇笔记介绍过不用输入密码执行脚本或传输文件的方法,但对于一些临时 ...
- stp域中两台switch互联接口出现两口均为root口 并且在现有stp区域中无法确定根桥设备位置;分析其原因并赋予解决办法
stp域中两台switch互联接口出现两口均为root口 并且在现有stp区域中无法确定根桥设备位置:分析其原因并赋予解决办法 1.于上图描述了案例中当前组网环境的各交换机位置与stp状态情况 : ...
- linux 查看网段内所有IP
如有转载,不胜荣幸.http://www.cnblogs.com/aaron-agu/ 方法一: nmap –nsP 192.168.1.0/24 #从192.168.1.0到192.168.1.25 ...
- Backbox Linux简介与配置内网IP
总体说起来,Backbox内置的工具什么的,并不是很多,但是它集成了一些用起来很棒的工具. 比如:Beef.Sqlmap.wpscan.zenmap.msf.w3af.dns嗅探等一系列工具,传说中的 ...
- Linux两台主机之间建立信任(ssh免密码)
背景: 有时候我们在两个主机之间复制文件的时候,提示输入密码,很不方便,那如何免密码复制呢?,就是使用通过linux公钥和秘钥,建立双机信任关系. 在整理之前,我先说下ssh免密码的要点 : 你想免密 ...
随机推荐
- Power Profiles for Android
http://source.android.com/devices/tech/power.html Battery usage information is derived from battery ...
- SQLserver连接本地服务器
1.打开SQLserver “连接到服务器” 2.服务器类型:数据库引擎 3.服务器名称:浏览更多->本地服务器->数据库引擎->选择本地服务器 4.身份验证:windows验证 5 ...
- 191.Number of 1Bits---位运算---《剑指offer》10
题目链接:https://leetcode.com/problems/number-of-1-bits/description/ 题目大意:与338题类似,求解某个无符号32位整数的二进制表示的1的个 ...
- URAL题解三
URAL题解三 URAL 1045 题目描述:有\(n\)个机场,\(n-1\)条航线,任意两个机场有且只有一种方案联通.现有两个恐怖分子从\(m\)号机场出发,第一个人在机场安装炸弹,乘坐飞机,引爆 ...
- ../include/squid_md5.h:27:2: error: #error Cannot find OpenSSL MD5 headers【squid安装中】
../include/squid_md5.h:27:2: error: #error Cannot find OpenSSL MD5 headers yum install -y openssl* w ...
- 出现ERROR: While executing gem ... (Gem::FilePermissionError)这种错误的解决办法
重新安装ruby即可解决 brew install ruby
- Shp上传至Oracle Spatial
1.下载shp2sdo,将shp文件拷贝至shp2sdo相同路径下,打开windows命令窗口,执行: shp2sdo shp文件名 表名 -i id -s 4326 -d 例如:shp2sdo ci ...
- python 内置函数eval()、exec()、compile()
eval 函数的作用: 计算指定表达式的值.也就是说它要执行的python代码只能是单个表达式,而不是复杂的代码逻辑. eval(source, globals=None, locals=Non ...
- logstash参数配置
input配置: file:读取文件 input { file{ path => ["/var/log/*.log","/var/log/message" ...
- WordPress 用户管理插件 WP User Manager
WP User Manager 是一个较新的用户管理插件,可以在前端实现 用户注册.登录.找回密码.修改个人资料.修改密码等功能,如果你在找这方面的插件,WP User Manager 应该是一个不错 ...