zoukankan      html  css  js  c++  java
  • tcp/ip 卷一 读书笔记(3)为什么既要有IP地址又要有MAC地址

    网络层

    首先明确一点,并不是所有的网络之间传输数据都需要mac地址和ip地址,比如说点对点线路之间的通信就没有MAC地址,网络层使用ipx协议时就没有ip地址,但是在当前的主流网络中,我们都使用ip地址和mac地址

    既然mac地址唯一,为什么还要有IP地址?

    之前我们提到,mac地址是唯一的,那理论上,在任何两个设备之间,我应该都可以通过mac地址发送数据,为什么还需要ip地址?

    mac地址就好像个人的身份证号,人的身份证号和人户口所在的城市,出生的日期有关,但是和人所在的位置没有关系,人是会移动的,知道一个人的身份证号,并不能找到它这个人,mac地址类似,它是和设备的生产者,批次,日期之类的关联起来,知道一个设备的mac,并不能在网络中将数据发送给它,除非它和发送方的在同一个网络内。

    所以要实现机器之间的通信,我们还需要有ip地址的概念,ip地址表达的是当前机器在网络中的位置,类似于城市名+道路号+门牌号的概念。通过ip层的寻址,我们能知道按何种路径在全世界任意两台Internet上的的机器间传输数据。

    mac地址通常是不变的,ip地址是可变的,尤其是移动设备,ip地址会经常变更。

    mac地址的设计不携带设备在网络中的位置信息,想要通过mac地址通信,我们得在所有的设备上维护一张很大的表,记录所有mac地址路由在当前位置的的下一跳,这显然是不合理的。

    既然能通过ip地址发送数据,为什么要有mac地址

    既然ip地址有位置信息,而且在一个网络中也是唯一的,那么我们为什么不完全通过ip地址通信,抛弃mac地址呢?或者说,合并ip层和mac层的功能。

    • 历史原因
      最初的链路层协议是和ip地址无关的,没有网络层方面的设定,只有物理层和链路层,最初也只有集线器,没有交换机路由器,服务器之间传输数据全靠mac地址。在没有ip地址之前,mac地址已经在使用了。现在到处都在用的二层交换机,就是根据mac地址转发数据。

    • 设计的原因
      现在这样设计是好的设计,链路层的实现不需要考虑数据之间的转发,网络层的实现不需要考虑物层的影响。

    也就是说,理论上可行,目前无太大意义,反而有坏处。

  • 相关阅读:
    net应用程序池自动关闭的解决方法
    asp.net 多个txt压缩导出下载
    asp.net 对象转XML,XML转对象
    asp.net Cache缓存的用法
    oracle 增加大字段项
    asp.net简繁体转换
    asp.net 根据连接地址保存文件,图片
    SpringSide从系统全局里面取值
    SpringSide dml操作
    一张表里面形成的树,固定初始化数据
  • 原文地址:https://www.cnblogs.com/zhangyufei/p/5565646.html
Copyright © 2011-2022 走看看