IP,MAC
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)
- 可用的主机范围192.168.0.1-192.168.0.254
- 网络地址为192.168.0.0(Network IP)
- 广播地址192.168.0.255(Broadcast IP)(C类地址网络地址占用24位,最后8位为主机地址。将主机地址位全部置为1,即为广播地址)
- 网段内的主机可以通过网卡对网卡传递数据
- 192.168.0.1和192.168.0.2的主机无需使用Router传递数据包(两主机为同一网段,所以不需要路由器通信)
- 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的更多相关文章
- esp8266 免费wifi强推广告神器(4) 发现当前WIFI下的用户数目,IP,MAC请求http信息 在用户请求跳转后跳转
需求: 1 获取当前连接客户端的HTTP请求各种信息 方法 get http 请求路径 例如 /index.html / /pic.jpg 请求版本 HTTP/1.0 HT ...
- C#获取路由器外网IP,MAC地址
C#实现的获取路由器MAC地址,路由器外网地址.对于要获取路由器MAC地址,一定需要知道路由器web管理系统的用户名和密码.至于获取路由器的外网IP地址,可以不需要知道路由器web管理系统的用户名和密 ...
- 图解HTTP,TCP,IP,MAC的关系
入门 用户发了一个HTTP的请求,想要访问我们网站的首页,这个HTTP请求被放在一个TCP报文中,再被放到一个IP数据报中,最终的目的地就是我们的115.39.19.22. 进阶 IP数据报其实是通过 ...
- linux系统下获取IP,MAC,子网掩码,网关
获取IP和子网掩码 int getLocalInfo(char IP[],char Mask[]) { int fd; int interfaceNum = 0; struct ifreq buf[1 ...
- 通过js获取计算机内网ip,计算机名,mac地址
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xht ...
- 我家用的网络IP地址给定,MAC绑定,我买了个无线路由器,请问怎么设定能让我的电脑和手机都能上网
我家用的网络IP地址给定,MAC绑定,我买了个无线路由器,请问怎么设定能让我的电脑和手机都能上网 房东给的IP地址是:192.168.1.5 255.255.255.0 192.168.1.1 2 ...
- IP头,TCP头,UDP头,MAC帧头定义(转)
源:IP头,TCP头,UDP头,MAC帧头定义 一.MAC帧头定义 /*数据帧定义,头14个字节,尾4个字节*/ typedef struct _MAC_FRAME_HEADER { ]; //目的m ...
- IP,IP地址,mac地址
IP地址与IP是两个不同的概念.单独讲IP,是指IP协议 IP地址分为三类:单播地址(目的为单个主机):多播地址(目的端为同一组的所有主机):广播地址(目的端为网络上所有给定的主机) ip地址由网络和 ...
- Linux C 网络编程 - 获取本地 ip 地址,mac,通过域名获取对应的 ip
获取本地 ip 地址,mac,通过域名获取对应的 ip, 是网络编程可能遇到的比较常见的操作了,所以总结如下(封装了3个函数), 直接上代码: #include <stdio.h> #in ...
随机推荐
- 【Leetcode 做题学算法周刊】第四期
首发于微信公众号<前端成长记>,写于 2019.11.21 背景 本文记录刷题过程中的整个思考过程,以供参考.主要内容涵盖: 题目分析设想 编写代码验证 查阅他人解法 思考总结 目录 67 ...
- Spring Boot2 系列教程(二十六)Spring Boot 整合 Redis
在 Redis 出现之前,我们的缓存框架各种各样,有了 Redis ,缓存方案基本上都统一了,关于 Redis,松哥之前有一个系列教程,尚不了解 Redis 的小伙伴可以参考这个教程: Redis 教 ...
- SpringBoot 配置文件与依赖库分离打包配置
一.应用场景 一般情况下我们对springboot应用打包时使用springboot的maven插件spring-boot-maven-plugin的maven进行打包,打包完成得到一个fatjar, ...
- UML分析AsyncDisplayKit框架-ASMuplexImageNode异步下载时序图。
PS:博客园图片服务器不正常工作,数据上传后服务器返回http500,园方迟迟还没解决. 我从2016-01-18 05:52向园方反馈问题-请问博客园的图片服务器有在正常运行吗,至此时2016-01 ...
- pod删除主要流程源码解析
本文以v1.12版本进行分析 当一个pod删除时,client端向apiserver发送请求,apiserver将pod的deletionTimestamp打上时间.kubelet watch到该事件 ...
- PostGIS mysql_fdw安装(Linux)
##本人在安装过程中,可能因为系统环境因素或是其他原因,参考网上的文章没有一篇是非常顺利的,所以自己总结一下. ##安装过程中非常坎坷,有些地方反复了好几次,弄的有点模糊,但模糊的地方在文中我会指出. ...
- 🔥《手把手教你》系列练习篇之1-python+ selenium自动化测试(详细教程)
1.简介 相信各位小伙伴或者同学们通过前面已经介绍了的Python+Selenium基础篇,通过前面几篇文章的介绍和练习,Selenium+Python的webUI自动化测试算是 一只脚已经迈入这个门 ...
- VS Code 中文社区正式成立啦!VS Code Day 圆满落幕!
背景简介 Visual Studio Code 是一款现代化轻量级代码编辑器,它免费.开源.跨平台.功能强大.本次 VS Code Day 是广大 VS Code 爱好者一起学习与交流的盛会,让我们对 ...
- oracle查询练习
1成绩表score如下,查询出每门课都大于80分的学生姓名 准备数据 -建表- SQL> create table score( 2 name varchar(50), 3 kech ...
- Win10无法安装.NET Framework3.5的解决办法
诸位网友如果工作中使用WIN10遇到如图的这种问题,现将解决办法整理如下: 一.第一步就是修复系统:按“Windows+X”点击“Windows PowerShell(管理员)&命令提示符(管 ...