首先要明白一点,IOS一共七层, 发送数据的过程是从上到下,也就是从应用层一直到物理层,接受数据是从下至上.

来看你的问题,环境如下,我们来用一个ping命令的过程来解释:
一个交换机,连两个电脑A和B,A和B不在一个网段,他们的IP分别是192.168.1.2,255.255.255.0,B是 192.168.2.1,255.255.255.0,网关也可以设也可以不设,但其实你设了也是个假的网关,因为在你的环境里面只有一个交换机,并没有路由器,对吗? A ping B:
1.Ping命令会构建一个固定格式的ICMP请求数据包,然后由ICMP协议将这个数据包连同IP地址“192.168.2.1”一起交给IP层协议.
2.IP协议会查看目的IP地址是否和源IP在同一网段,如果在同一网段就直接查找ARP缓存,查找目的MAC,如果目的IP地址是否和源IP不在同一网段,那么就将数据包发送到网关.
3.按照前面的描述,在A电脑上有两种情况,1是没设网关 2是设了一个假的网关,那么如果没设的话,数据包到这一步就丢弃了,目的IP和源IP不在一个网段而且A没有网关,那么就无法发送.如果A设网关了的话,接着往走.
4.假设A电脑设定的网关是192.168.1.1,那么IP协议知道了目的IP,但是不知道目的MAC,所以会查找A电脑的ARP缓存,看里面有没有目的MAC,很遗憾,肯定没有,因为环境里并没有这个网关设备存在.所以A会发一个ARP广播到192.168.1.X整个网段,来查找IP是192.168.1.1 的MAC,当然,物理上就不存在192.168.1.1这个设备,自然就没有设备来响应这个ARP广播,所以最终IP协议无法知道目的MAC,就无法将数据包往下一个层数据链路层传递. 回到最开始,还是那句话:IOS一共七层, 发送数据的过程是从上到下,也就是从应用层一直到物理层,接收数据是从下至上.
在此场景中数据包在三层就停住了,根本不会涉及到二层.

为什么不同网段的ip 不能直接通信的更多相关文章

  1. Linux下多网卡同网段多IP网络分流设定方法

    Linux下多网卡同网段多IP网络分流设定方法 -- :: 标签:Linux下多网卡同网段多IP网络分流设定方法 当服务器需要较高的网络流量时,在其它资源不造成瓶颈的情况下无疑会用到多网卡. 第1选项 ...

  2. 网段;IP;广播地址;子网掩码;

    网段(network segment)一般指一个计算机网络中使用同一物理层设备(传输介质,中继器,集线器等)能够直接通讯的那一部分.例如,从192.168.0.1到192.168.255.255这之间 ...

  3. 在ubuntu 16.04 的vm中添加新网卡,同一网段不同ip

    在ubuntu 16.04 的vm中添加新网卡,同一网段不同ip 来源 https://blog.51cto.com/744478/2083672 在ubuntu 16.04 的vm中新加了一块网卡, ...

  4. OpenVPN分配静态IP以及同一网段内IP个数(64个)

    说明:简单的来说,同一网段内可用的IP数量只有64个:(不一定正确)最直接的解释就是每个客户端占用两个IP,因为根据IP掩码位/30得知可用的IP就是两个.对于为什么只有64个,下面是官方的解释. 解 ...

  5. Shell脚本快速查看网段内ip占用情况和可用ip

    思想就是整个网段ping一遍,对于ping不通的,解析其失败的字符来判定 #!/bin/bash head_add=${} address=${head_add%.*} echo address=$a ...

  6. 属于同一网段的ip是不是就在同一个局域网?

    参考文章链接: https://zhidao.baidu.com/question/350887200.html?qbl=relate_question_0&word=%D4%DA%D2%BB ...

  7. python遍历一个网段的ip地址

    def ip2num(ip):#ip to int num lp = [int(x) for x in ip.split('.')] return lp[0] << 24 | lp[1] ...

  8. 查询指定网段可用IP脚本

    1.脚本内容: #vi hhh 添加以下内容: #!/bin/bash read -p "Please keyin the network segment: (e.g. 10.88.1) & ...

  9. 检测当前网段哪些IP是在线的

    [root@storage ~]# cat ping.ip #!/bin/bashfor ip in `seq 1 255`    do    {      ping -c 2 192.168.220 ...

随机推荐

  1. linux ----> centos 网络、tomcat、vi、等等的配置和使用

    网络/配置 环境: centos6.8-mini-version virtualbox 工具: FileZilla client  SecureCRT 静态ip地址 每一台计算机分配有一个固定的IP地 ...

  2. org.hibernate.id.IdentifierGenerationException

    [问题]org.hibernate.id.IdentifierGenerationException: ids for this class must be manually assigned bef ...

  3. 6、DHCP

    DHCP 一.DHCP简介 1.什么是DHCP DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是一种用户简化计算机IP地址管理的标准: 2.DHC ...

  4. CentOS6.8逻辑卷管理实战

    CentOS6.8逻辑卷管理实战 要求:利用现有的四块磁盘,创建一个有两个PV组成的大小为80G的名为testvg的VG:要求PE大小为16MB, 而后在卷组中创建大小为5G的逻辑卷testlv:挂载 ...

  5. spring boot 创建web项目并使用jsp作前台页面

    参考链接:https://www.cnblogs.com/sxdcgaq8080/p/7712874.html

  6. MVC实战之排球计分(三)—— 模型类的设计与实现

    此软件使用的数据库连接方式code first 由EF框架产生数据库. code first需要对模型类设计和实现.模型类是现实实体在计算机中的表示.它贯穿于整个架构, 负担着在各层次及模块间传递数据 ...

  7. awr相关

    手工生成awr快照SQL> exec dbms_workload_repository.create_snapshot; PL/SQL procedure successfully comple ...

  8. Node+Express的跨域访问控制问题:Access-Control-Allow-Origin

    问题一:项目A通过Ajax访问项目B的接口,获取json数据,项目B采用Node+Express技术栈.项目A可能遇到跨域访问控制问题. 问题二:vue-resource 能够跨域,一般使用jsonp ...

  9. <Closing connections idle longer than 60000 MILLISECONDS> <Closing expired connections>

    日志信息如下: 2017-07-05 18:28:34 -18705 [idle_connection_reaper] DEBUG   - Closing expired connections 20 ...

  10. Qt一步一步实现插件通信(附源码)

      前一章已经实现了主程序调用加载插件功能,这一章描述主程序和插件间通信功能 说道Qt的通信必须要了解信号和槽的机制原理,这里不做论述,不清楚的同学去看看信号和槽机制 不废话直接上步骤,在上一章的基础 ...