MAC寻址与IP寻址

两者是协议上的区分,MAC地址是网卡的物理地址,是提供二层交换机转发数据的,交换机会在自己的内部形成一个MAC地址表,然后根据这个表转发数据包;再者,如果说网络规模大一点的话,机器数量多,交换机就要有足够的MAC地址表来建立转发数据表的MAC表,这个表是通过广播包来收集到的,很容易形成广播风暴,影响网络性能。

利用ip地址进行广域网的数据包之间路由,有以下几点:

ip是三层协议即网络层,它有限的隔离广播包,使得一个很大的广域网分割成许多小的局域网,这样做有利于提高网络的稳定性,同样利用ip来做寻址转发,也会在路由器上形成一个路由表跟前面所说的MAC表类似,但是要比MAC地址表稳定!

从原理上来说,由于MAC地址实际只是在局域网内有效,虽然说不同设备MAC要求是唯一的,但由于每经过一个路由网段,报文里的源和目的MAC都要做更改(源和目的IP则一直不变),所以实际上就算不同网段中,存在相同的MAC地址,也是没影响的。只要同一个网段MAC地址不重复即可。

这个问题 个人理解是这样的:如果在网络的世界里每台电脑都有一个独一无二的门牌号,在发送接收数据的时候我们只需要写源门牌号和目的门牌号就行了。如果网络规模比较小这个方案还没什么问题,当网络渐渐增大 这样的门牌号太多,中间的网络设备不能记下所有的门牌号在哪了。我们需要用另外一种方式更加有区域性地规划网络,这样就出现了IP地址和子网掩码(有类无类的问题我们就不讨论了)。但是以前的门牌号在小型网络里寻址依然有效!所以被保留了,但是门牌号变成了本地有效。

随着当时互联网的发展,IP地址的分配没有按照区域规划,导致现在世界骨干网上IP路由表数目很多。

简单的来说是IP将网络世界划分成了很多小块,A块,B块,C块,D块…….。当你要找一个人的时候先通过他的IP地址找到他属于那块,当你到达他所在的块时,用他的门牌号(MAC地址)找到他本人。

简单来讲,比如你网购用快递,快递员收件之后,会在他们自己的各个中转站传递,然而到了你家所在城市的中转站之后,不能再传给中转站,而是要找你家的门牌号。Mac就是你家的门牌号,IP就是他们的中转站号。

MAC地址是硬件层的东西,唯一标示一块网卡,是物理层面的概念,在数据通信中,由于局域网算是多主多从的物理结构,寻址是必须的,而tcp/ip协议栈按我理解是一种逻辑上的概念,在局域网上没有选路,当然使用硬件上的寻址机制,ip只是为了是数据分组能够跨域局域网,实现网络互连而设计的

IP地址实现网络互联,MAC地址实现机器互联

所以为什么不用ip也实现机器互联,让局域网也工作在三层?

  • 去掉ip地址,路由器(交换机)需要学习每个mac地址,内存会非常庞大。而ip地址在划分子网后,可以用一个网关的ip地址来代表一个子网,逐级选路。

MAC地址只能被二层所识别,而用户是处在第七层的,所以,必须通过IP来实现用户与其用户之间的通信

局域网为什么不使用IP地址而使用MAC地址寻址

此观点不正确。

局域网在网络层也是需要ip层寻址的,比如判断目标地址和本机是否同一网段,进而决定把数据包发给路由器还是直接发送给目标主机。在数据链路层当然使用mac寻址,它是实现ip层的基础。在ip层和数据链路层有arp协议衔接。应该说在网络层ip寻址,数据链路层mac寻址。

对于192.168.0.0到192.168.0.255这个网络来说,(32位的二进制地址1100 0000 . 1010 1000 . 0000 0000 . 0000 0000)

  1. 可用的主机范围192.168.0.1-192.168.0.254
  2. 网络地址为192.168.0.0(Network IP)
  3. 广播地址192.168.0.255(Broadcast IP)(C类地址网络地址占用24位,最后8位为主机地址。将主机地址位全部置为1,即为广播地址)
  4. 网段内的主机可以通过网卡对网卡传递数据
  5. 192.168.0.1和192.168.0.2的主机无需使用Router传递数据包(两主机为同一网段,所以不需要路由器通信)
  6. 192在192.x.x.x-223.x.x.x这个范围内所以属于C类地址
请问 192.168.0.0/16 代表的是什么?

IP 是由四组8 bits 的数字所组成的;由于原本是二进制的方式来计算的,为了适应人类的思考方式,所以经过十进制的表示之后,自然就是由0 ~ 255 啰

ipv4 是 32 位的, 192.168.0.0 转化为 32 位的二进制地址即是: 11000000 10101000 00000000 00000000 ,/16 代表其 32 位的前 16 位是固定的,只能改变( 32-16=) 16 位地址,则 ip 范围是:

11000000 10101000 00000000 00000000 - 11000000 10101000 11111111 11111111

转化过来就是:

192.168.0.0 - 192.168.255.255

对应的网关是: 255.255.0.0

在主机上我看到这个会认为访问这个范围内的地址都不会发送到默认路由器

在路由器上看到这个我会认为是一个网络条目

/16 是掩码位;前16 也代表子网掩码 255.255.0.0

192.168.0.0/24 表示前24位固定,只能改变8位地址,则ip范围为192.168.0.0 - 192.168.0.255

172.16.0.0 的二进制 10101100.00010000.0000000.00000000

IP,MAC的更多相关文章

  1. esp8266 免费wifi强推广告神器(4) 发现当前WIFI下的用户数目,IP,MAC请求http信息 在用户请求跳转后跳转

    需求: 1 获取当前连接客户端的HTTP请求各种信息 方法 get  http 请求路径  例如  /index.html   /    /pic.jpg 请求版本   HTTP/1.0     HT ...

  2. C#获取路由器外网IP,MAC地址

    C#实现的获取路由器MAC地址,路由器外网地址.对于要获取路由器MAC地址,一定需要知道路由器web管理系统的用户名和密码.至于获取路由器的外网IP地址,可以不需要知道路由器web管理系统的用户名和密 ...

  3. 图解HTTP,TCP,IP,MAC的关系

    入门 用户发了一个HTTP的请求,想要访问我们网站的首页,这个HTTP请求被放在一个TCP报文中,再被放到一个IP数据报中,最终的目的地就是我们的115.39.19.22. 进阶 IP数据报其实是通过 ...

  4. linux系统下获取IP,MAC,子网掩码,网关

    获取IP和子网掩码 int getLocalInfo(char IP[],char Mask[]) { int fd; int interfaceNum = 0; struct ifreq buf[1 ...

  5. 通过js获取计算机内网ip,计算机名,mac地址

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xht ...

  6. 我家用的网络IP地址给定,MAC绑定,我买了个无线路由器,请问怎么设定能让我的电脑和手机都能上网

    我家用的网络IP地址给定,MAC绑定,我买了个无线路由器,请问怎么设定能让我的电脑和手机都能上网   房东给的IP地址是:192.168.1.5 255.255.255.0 192.168.1.1 2 ...

  7. IP头,TCP头,UDP头,MAC帧头定义(转)

    源:IP头,TCP头,UDP头,MAC帧头定义 一.MAC帧头定义 /*数据帧定义,头14个字节,尾4个字节*/ typedef struct _MAC_FRAME_HEADER { ]; //目的m ...

  8. IP,IP地址,mac地址

    IP地址与IP是两个不同的概念.单独讲IP,是指IP协议 IP地址分为三类:单播地址(目的为单个主机):多播地址(目的端为同一组的所有主机):广播地址(目的端为网络上所有给定的主机) ip地址由网络和 ...

  9. Linux C 网络编程 - 获取本地 ip 地址,mac,通过域名获取对应的 ip

    获取本地 ip 地址,mac,通过域名获取对应的 ip, 是网络编程可能遇到的比较常见的操作了,所以总结如下(封装了3个函数), 直接上代码: #include <stdio.h> #in ...

随机推荐

  1. 使用Topshelf组件 一步一步创建 Windows 服务

    我们先来介绍一下使用它的好处,以下论述参考自其他大神. topshelf是创建windows服务的一种方式,相比原生实现ServiceBase.Install.Installer更为简单方便, 我们只 ...

  2. CSS RESET —— 浏览器样式重置

    CSS Reset 1. CSS Reset为什么存在? 只要您的客户存在使用不同浏览器(ie,firefox,chrome等)的可能,那你就不得不从完美的理想状态回到现实,因为不同核心的浏览器对CS ...

  3. Git的使用和基本概念理解

    参考:https://www.liaoxuefeng.com/wiki/896043488029600 一).git的使用: 1.创建版本库(Resopsitory),相当于一个目录,目录中所有的文件 ...

  4. GeoServer 修改端口

    准备内容 安装环境:win10*64位专业版 安装文件:geoserver-2.15.2 操作步骤 1.找到文件夹下的start.ini,并用记事本打开 2.找到jetty.port,修改为自己需要的 ...

  5. Siamese-RPN论文阅读

    https://www.cnblogs.com/zhengyuqian/p/10609737.html

  6. scrapy知识补充--scrapy shell 及Spider

    什么是scrapy shell? Scrapy终端是一个交互终端,我们可以在未启动spider的情况下尝试及调试代码,也可以用来测试xpath或css表达是,来查看他们的工作方式,方便爬取页面中的数据 ...

  7. Virtualbox修改虚拟机分配内存的大小

    起因:因为虚拟机刚开始分配的内存太小,导致太卡, 解决方法:修改虚拟机分配内存的大小 方法一:必须在关闭ubuntu的前提下进行,否则无法修改 点击设置 系统选项 主板中的内存大小 之后开启即可 方法 ...

  8. 01 jQuery配置、jQuery语法结构、jQuery对象与DOM对象的互相转换

    配置jQuery环境 下载jQuery    官网:jquery.com 学习或开发建议选择未压缩版,便于学习,发布建议选择压缩版,便于用户极速体验(点击下载若出现的是代码页 面,Ctrl+A全选复制 ...

  9. adb查看Android app包名

    1. 确保电脑已经安装了adb.exe文件 2. 使用USB连接你的手机到电脑上,输入下图所示的命令后按下回车键:adb devices 3. 使用手机打开某个应用程序 4.回到命令号窗口,输入代码如 ...

  10. mysql 中文不显示问题

    MySQL的字符集支持(Character Set Support)有两个方面: 字符集(Character set)和排序方式(Collation).对于字符集的支持细化到四个层次: 服务器(ser ...