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和右边三个考试即可获得) 服务器管理专家( ...
一周排行
  • github下的respond.js 在项目中引用该js <script src="../js-common/respond.src.js"></script>
  • 2012年的re:Invent大会上我们看到了一款新产品和降价消息,2013年的会议有什么值得期待? 2012年,大约6名与会者长途跋涉赶到美国拉斯维加斯参加公有IaaS云服务商Amazon的首次客户会议.在re:I ...
  • 6月29日消息,据国外媒体报道,谷歌在I/O大会上发布了一系列重量级产品后,一些现存的产品危险了.以下盘点那些"有危险"的产品.1.亚马逊Kindle FireNexus 7因为和Kindle同样 ...
  • 附录1: 惊天地兮泣鬼神,C语言学习库诞生 编写C/C++习作,可以多编写一些趣味程序,即增强能力,又提高兴趣,还便于在老师和同学面前展示,提高关注度. 在前面的章节中,本书已经提出,需要“在Windows SDK ...
  • 下面是OPENCV B4.0 附带的 FLOOD FILL 算法的源代码样例,可以实现简单的彩色图像分割. #ifdef _CH_#pragma package <opencv>#endif #ifnde ...
  •       前言:作为搞IT技术的,相信很多人都是比较内向的,以下文章正是介绍内向者的,希望大家能够从中认识自己,接受自己--     "外向的人更倾向从外部世界寻找力量,而内向的人更倾向关注自己的内部世界 ...
  • 配置Google API SDK 如果要想进行Google Map或者说是定位服务的开发,那么肯定需要下载一个新的SDK的支持. 1.点击Android SDK Manager,下载SDK. 2.直接配置已经下载好的 ...
  • 2.6内核中进程调度模块的负载均衡行为分为"拉"和"推",推这里不考虑,关于拉均衡有一篇文章特别好,具体出处就不记得了,我当时用的百度快照,那篇文章我认为最精彩的部分就是下面摘 ...
  • 在 Tomcat 中设置 HTTP 基本认证的示例 在 $TOMCAT_HOME\conf\tomcat-users.xml 文件中配置角色和用户: <tomcat-users> <role rol ...
  • 近来同事中血压高的越来越多,从网上整理了一些资料,希望对高血压治疗有所帮助. 什么是高血压? 是一种慢性心脑血管病,诊断标准为收缩压>=140mmHg,或舒张压>=90mmHg. 一.高血压与运动 高血压 ...