AND运算

数据网络设备内部是运用数字逻辑来解释地址的。在创建或转发 IPv4 数据包时,必须从目的地址中提取出目的网络地址。这一步通过 AND 运算来完成。

对 IPv4 主机地址同其子网掩码执行 AND 逻辑运算,可以确定该主机相关联的网络地址。地址和子网掩码之间的 AND 运算得到的结果就是网络地址。
AND 运算
AND 运算是数字逻辑中使用的三种基本二进制运算之一。另外两种是 OR 和 NOT。虽然这三种运算都用于数据网络中,不过用于确定网络地址的是 AND。因此,本章的讨论仅限于逻辑 AND。逻辑 AND 运算比较两个位,所得结果如下:
1 AND 1 = 1
1 AND 0 = 0
0 AND 1 = 0
0 AND 0 = 0
任意值同 1 进行 AND 运算,所得结果都是原来的位。即,0 AND 1 得 0 而 1 AND 1 得 1。相应地,任意值同 0 进行 AND 运算,结果都为 0。AND 运算的这些特性与子网掩码配合使用便可以“遮掩”IPv4 地址的主机位。地址的每个位同子网掩码的相应位进行 AND 运算。
由于子网掩码中代表主机位的所有位都是 0,因此,所得网络地址的主机部分也全部变为 0。我们曾学过,主机部分全部为 0 的 IPv4 地址代表网络地址。
同理,子网掩码中表示网络部分的所有位均为 1。这些 1 同地址的相应位逐个进行 AND 运算时,所得各位与原来的地址位相同。
使用逻辑 AND 的原因
数据网络中的设备在主机地址和子网掩码之间执行 AND 运算的原因各异。
路由器使用 AND 运算来确定传入数据包的合理路由。路由器检查目的地址,并尝试将此地址关联到下一跳。当数据包到达路由器时,路由器对传入数据包中的 IP 目的地址和可能路由的子网掩码执行 AND 运算。由此得到的网络地址将与所用子网掩码的路由表中的路由相比较。
发送主机必须确定应该将数据包直接发送到本地网络中的主机还是应将其转发到网关。要做出此决定,主机首先必须了解自己的网络地址。
主机通过对其地址和子网掩码执行 AND 运算提取出自己的网络地址。发送主机也会对该数据包的目的地址和主机的子网掩码执行逻辑 AND 运算。得到的结果便是目的地址的网络地址。如果此网络地址与本地主机的网络地址相符,就会将该数据包直接发送到目的主机。如果两个网络地址不符,就会将该数据包发送到网关。
逻辑 AND 的重要意义
如果路由器和终端设备无需干预即可完成这些运算过程,我们为什么还要了解 AND 运算的运算方法呢?这是因为我们对网络的工作原理了解越多,对网络运行情况的预测能力也就越强,设计和(或)管理网络的准备也就越充分。
在网络验证/故障排除过程中,通常需要确定主机所在的 IPv4 网络或确定两台主机是否位于同一个 IP 网络中。我们需要从网络设备的角度来做出此决定。由于配置不正确,某台主机可能会以为自己所在的网络与预定网络不同。这可能会导致工作不正常,但检查该主机使用的 AND 运算过程就可以诊断这个问题。
此外,路由器可能有许多条不同路由都可以将数据包转发到给定目的地址。选择使用哪条路由发送给定的数据包是一个非常复杂的运算过程。例如,构成这些路由的前缀并非直接与分配给主机的网络相关联。这表示路由表中的路由可能代表许多网络。如果路由数据包的过程存在问题,就需要确定路由器做出路由决定的方式。
尽管网络管理员可以使用子网计算器,但了解如何手动计算子网也非常实用。

本文出自 “07net01” 博客,请务必保留此出处http://07net01.blog.51cto.com/1192774/571335

更多相关文章
  • 这篇文章主要介绍了CSS3中Animation属性的使用详解,是CSS3入门学习中的基础知识,需要的朋友可以参考下 在开始介绍Animation之前我们有必要先来了解一个特殊的东西,那就是”Keyframes”,我们把他叫做“关键帧”,玩过flash的朋友可能对这个东西并不会陌生.下面我们就一起来看 ...
  • 最近刚好系统学习到linux文件权限这一块,在"umask值及其对应的文件权限"这一个问题上,找过视频看(老男孩老师的视频,强烈推荐),也看过鸟哥的书,当然也在网上找了找,发现计算方法都是多种多样的,但是个人觉得掌握一种就好了,看了各种方法,觉得其实大多数都是在找规律,不是找规律 ...
  • 上一篇我们对ASP.NET中常见的内置对象做了概述,现在我们开始了解怎么用,用哪里,何时用,首先我们从Request和Response说起. 大家在开发过程中,免不了会遇到这样一个问题,就是从客户端传值到服务端,或者从服务端传值到客户端,在这里我们用到的就是Request和Response. 一.R ...
  • leetcode原文引用:   Write a SQL query to delete all duplicate email entries in a table named Person, keeping only unique emails based on its smallest Id. ...
  • 课程介绍    本课程讲述使用WebSphere Studio Application Developer去开发与J2EE标准相兼容的应用程序,主要包括以JSP/Servlet/ JavaBean为核心的Web应用程序,讲解EJB的原理及开发要点,同时介绍如何使用EJB开发环境.JAVA编码工具.以 ...
  •   类别 课程 证书种类 适用对象 CIW Associate CIW基础课程(CIW Foundations) CIW Associate 所有的互联网从业人员 系统管理大师Master CIW Administ-rator(通过CIW Assistant和右边三个考试即可获得) 服务器管理专家( ...
一周排行
  • 基本概念:所谓正则表达式就是用某种模式去匹配一类字符串的一个公式. 正则表达式创建: var regExp=/正则表达式/gi[flag]  (隐式创建) var regExp=new regExp(正则表达式,”g ...
  • 成都办理建筑劳务资质需要哪些手续及其材料?咨询[989]<建筑业企业资质管理规定> 第十四条首次申请或者增项申请建筑业企业资质,应当提交以下材料: (一)建筑业企业资质申请表及相应的电 ...
  • Begin at 2014. 1.make的内置规则 可以能过make -p来查看make的内置规则,改变一些内置的变量值,Makefile就不用写那么长了,例如LDLIBS表示要连接的库,CFLAGS表示一些编译选 ...
  •   一个多月前,Kernel.org公布了自己遭受的黑客攻击,并将网站下线.现在,Kernel.org网站重新上线. 在8月份,Kernel.org声明自己的服务器被恶意网站攻破,这引发了Linux社区的剧烈反应.K ...
  • ftp服务.Nfs服务和Nis服务          ftp服务 安装vsftpd服务 :#yum  install vsftpd* -y 查看vsftdd安装 :#getsebool –tl grep ftp   ...
  • 在玩仙剑奇侠传6游戏的时候,很多时候只是想做些任务,并不想大怪物,那么如何不遇到怪物呢?接下来随脚本之家一起去看看吧 仙剑奇侠传6中很多玩家是不是会觉得在做任务的时候在怪物区域碰到怪物不想打想快点过去,下面小编就来给 ...
  • 利用3.0里面封装好的模板类来写,不罗嗦,直接上例子(消除星星小游戏中 星星类) require "extern" StarSprite = class("StarSprite" ...
  • #include<iostream> #include<iomanip> using namespace std; int main(){ int n; while(cin>>n) ...
  • 华为荣耀3c 1g和2g哪个好?华为荣耀3c1g版开卖了,很多网友在纠结华为荣耀3c 1g和2g哪个性价比高,有什么区别的问题,接下来介绍华为荣耀3c 1g和2g版区别对比评测 1G版开机后的可用运行内存有500MB ...
  • 雷霆战机新版更新了未来战机--X翼冰河外,还更新了副武器--干涉波系列.下面就一起来了解震荡干涉波的满级图鉴内容 雷霆战机新版更新了未来战机——X翼冰河外,还更新了副武器——干涉波系列.下面就一起来了解震荡干涉波的满 ...