答案一:同一网段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)(转)的更多相关文章

  1. 网络中两台主机的通信过程(TCP)

    两台主机通信有两种情况:1.在同一网段中 2.不在同一网段中 (1.)在同一网段的通信过程 主机在应用层上的操作: TCP/IP协议上tcp的端口对应的各种应用程序,客户机要访问某个应用程序就会要求打 ...

  2. Cisco Packet Tracer中两台电脑通信设置

    Cisco Packet Tracer是网络初学者仿真模拟网络环境的必备工具.今天我们来模拟下两台电脑之间的通信. Cisco Packet Tracer版本6.2.0 一.添加设备 1.这里添加一个 ...

  3. Linux中两台主机配置互信关系

    服务名:sshd 客户端配置文件:/etc/ssh/ssh_config 服务端配置文件:/etc/ssh/sshd_config sshd服务需要重启才会生效 service sshd restar ...

  4. php计算网段内所有IP,分配子网段

    由于最近业务需要,写了个获取网段内所有IP的函数,以及分配可用子网段的函数 /** * 根据网段获取计算所有IP * @param string $segment 网段 '139.217.0.1/24 ...

  5. 【Linux学习笔记】用nc实现两台主机间的文件传输(不需要输密码)

    通常,可以用scp完成两台主机间的文件传输任务,但在主机间未建立信任关系的情况下,scp每次都需要输入密码,用起来感觉不是很方便,之前这篇笔记介绍过不用输入密码执行脚本或传输文件的方法,但对于一些临时 ...

  6. stp域中两台switch互联接口出现两口均为root口 并且在现有stp区域中无法确定根桥设备位置;分析其原因并赋予解决办法

    stp域中两台switch互联接口出现两口均为root口 并且在现有stp区域中无法确定根桥设备位置:分析其原因并赋予解决办法 1.于上图描述了案例中当前组网环境的各交换机位置与stp状态情况  : ...

  7. linux 查看网段内所有IP

    如有转载,不胜荣幸.http://www.cnblogs.com/aaron-agu/ 方法一: nmap –nsP 192.168.1.0/24 #从192.168.1.0到192.168.1.25 ...

  8. Backbox Linux简介与配置内网IP

    总体说起来,Backbox内置的工具什么的,并不是很多,但是它集成了一些用起来很棒的工具. 比如:Beef.Sqlmap.wpscan.zenmap.msf.w3af.dns嗅探等一系列工具,传说中的 ...

  9. Linux两台主机之间建立信任(ssh免密码)

    背景: 有时候我们在两个主机之间复制文件的时候,提示输入密码,很不方便,那如何免密码复制呢?,就是使用通过linux公钥和秘钥,建立双机信任关系. 在整理之前,我先说下ssh免密码的要点 : 你想免密 ...

随机推荐

  1. Linux内存高,触发oom-killer问题解决

    最近遇到两起Linux的内存问题,其一是触发了oom-killer导致系统挂 1. 首先确认该系统的版本是32位 ? #uname -a Linux alarm 2.6.9-67.ELsmp #1 S ...

  2. http状态码说明

    在学习网页设计的时候都应该知道状态码,但我们常见的状态码都是200,404,下面介绍其他的状态值 1开头的http状态码表示临时响应并需要请求者继续执行操作的状态代码. 100   (继续) 请求者应 ...

  3. ssh连接不上排查方法总结

    //常见报错信息 # No route to host --> server端没有开机或是网络不通(这个原因很多,最简单的是网线没有插.还有就是可能会是网卡down了等) 如果是网卡down了i ...

  4. java.lang.IllegalArgumentException: Page directive: invalid value for import

    我的项目原来用的tomcat版本是apache-tomcat-7.0.53,后来为了安全原因将版本升至\apache-tomcat-7.0.57,发现有的jsp页面出现下面的异常: java.lang ...

  5. HDU 1495 非常可乐(BFS倒水问题)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1495 题目大意:只有两个杯子,它们的容量分别是N 毫升和M 毫升 可乐的体积为S (S<101) ...

  6. 我所遇到的C++连接问题汇总

    http://blog.sina.com.cn/s/blog_7caa399301017k1e.html 1:无法打开kernel32.lib 针对不同版本的VS,lib库所在的地方都不一样,所以首先 ...

  7. Java Number类和Math类

    Java Number类 一般的,当需要使用数字的时候,我们通常使用内置数据类型,如:byte.int.long.double等. 然而,在实际开发过程中,我们经常会遇到需要使用对象,而不是内置数据类 ...

  8. luogu P1549 棋盘问题(2) 题解

    luogu P1549 棋盘问题(2) 题解 题目描述 在\(N * N\)的棋盘上\((1≤N≤10)\),填入\(1,2,-,N^2\)共\(N^2\)个数,使得任意两个相邻的数之和为素数. 例如 ...

  9. email 校验

    email 校验: javascript: /^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((\.[a-zA-Z0-9_-]{2,3}){1,2})$/ java: ^([a- ...

  10. 基于ZooKeeper实现——分布式锁与实现

    引言 ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件.它是一个为分布式应用提供一致性服务的软件,提 ...