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 ...
随机推荐
- go中的关键字-select
1. select的使用 定义:在golang里头select的功能与epoll(nginx)/poll/select的功能类似,都是坚挺IO操作,当IO操作发生的时候,触发相应的动作. 1.1 一些 ...
- 力扣(LeetCode)移除元素 个人题解
给定一个数组 nums 和一个值 val,你需要原地移除所有数值等于 val 的元素,返回移除后数组的新长度. 不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成 ...
- 如何使用Sping Data JPA更新局部字段
问题描述 在更新数据时,有时候我们只需要更新一部分字段,其他字段保持不变.Spring Data JPA并未提供现成的接口,直接使用save()更新会导致其他字段被Null覆盖掉. 解决办法 通常有两 ...
- 隐藏input输入框的增减按钮
当input 使用了type='number'后,会出现这个增减数值的按钮,如上所示, 解决办法: 1.type='text' ,改为输入字符串,缺点是要做类型转换,而且移动端不会调出纯数字键盘 2. ...
- windows 10上源码编译libjpeg-turbo和使用教程 | compile and use libjpeg-turbo on windows 10
本文首发于个人博客https://kezunlin.me/post/83828674/,欢迎阅读! compile and use libjpeg-turbo on windows 10 Series ...
- Openlayers Overlay加载gif图片
说明: 项目中使用vector图层做图片撒点功能,发现加载gif没有效果.网上查找资料发现,openlayers不支持gif图片样式. 后面采用overlay的方式,gif图片赋值给DOM元素 解决方 ...
- PHP编程20大效率要点
1.如果能将类的方法定义成static,就尽量定义成static,它的速度会提升将近4倍. 2.$row[’id’] 的速度是$row[id]的7倍. 3.echo 比 print 快,并且使用ech ...
- node 后台使用增删改查(4)
无论node还是java增删改查都是一样的原理,变得是配合框架使用时候有简便方法而已. 这里我接着上一篇开始讲,使用同一个数据库(数据库创建)这里必须创建了数据库 优化:为了维护方便这里我们把sql语 ...
- API规范约定
为了高效开发,节约编写文档的成本,API服务使用Swagger来描述 一.API设计原则 控制API的粒度和数量 命名要遵循简单.可读.统一原则: 优先设计API,然后编码 二.URL设计[针对后端开 ...
- 闲来无事写了一套 Jenkins 主题样式:刀锋
背景 Jenkins 的前端 CSS 样式坚挺了这么多年已经觉得腻的不行了,于是想换个风格缓解一下视觉疲劳,便有了这个项目.由于本人不是前端,所以很多只是随便改改,有些复杂的需求也实现不了,但是总的来 ...