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地址转发数据。
  • 设计的原因
    现在这样设计是好的设计,链路层的实现不需要考虑数据之间的转发,网络层的实现不需要考虑物层的影响。

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

时间: 2024-11-08 20:13:10

tcp/ip 卷一 读书笔记(3)为什么既要有IP地址又要有MAC地址的相关文章

tcp/ip 卷一 读书笔记(1)tcp/ip 四层协议

广域网 WAN TCP/IP通常被认为是一个四层协议系统,包括 链路层 包括arp,rarp协议,包括操作系统中的网卡驱动程序和对应的网络接口卡,一起处理数据在电缆之间传输的细节,这一层是同一个链路网络内,不同接口之间通过mac地址通信.arp协议是根据ip地址,请求对应的mac地址,rarp协议是根据mac地址,请求ip地址(可以用来做开机获取ip地址,实际现在已经不这么做了),二层的典型设备是交换机,交换机内有一张mac地址和对应的端口规则的表,每当收到一个包,如果是arp广播包,那么就将这

《图解tcp/ip》读书笔记(二)

<图解tcp/ip>读书笔记(二) 本周主要阅读的是本书的第三章--数据链路. 当然了,从某些角度讲,我认为这一章就是计算机网络的最基本的内容之一.整章讲述了数据链路层的作用和相关技术,主要描述了以太网.无线通信.ppp.公共网络以及其他的一些数据链路一些细节性的技术. 由于之前已经学习过相关计算机网络的课程,因此,就不再详细的记录整个阅读内容了,很多让我突破以前思维定式的一些知识,我挑一些列在下面. 其实这些知识花几分钟.几个小时,就可以得到,或者查阅互联网会得到比这本书更新的技术,但是,有

Effective TCP/IP Programming读书笔记

TCP/IP深入思考 这是我读Effective TCP/IP Programming的 读书笔记和思考,以及做的一些实验.强烈建议后端工程师有空读一读这本书,有些细节的确是我们平时没有注意的,读了最好自己动手做一些实验加深理解. fin的含义 对端发送fin会导致read()返回,但send()照样可以发送,也就是单纯的fin其实相当于shutdown(SHUT_WR). 当对端应用程序崩溃后(未close),本段一直调用send(),对端会返回RST,此时read()会返回Connectio

《图解TCP/IP》读书笔记

一.国际惯例:书托 这是一本图文并茂的网络管理技术书籍,旨在让广大读者理解TCP/IP的基本知识.掌握TCP/IP的基本技能. 书中讲解了网络基础知识.TCP/IP基础知识.数据链路.IP协议.IP协议相关技术.TCP与UDP.路由协议.应用协议.网络安全等内容,引导读者了解和掌握TCP/IP,营造一个安全的.使用放心的网络环境. 同时,这本书也是我的2016年度读书计划中的一本,下面我将会把我看书中的重点内容总结和摘录下来,所谓把书读薄,就是把精华内容留下,以供以后随时参考. 二.网络基础知识

《图解TCP/IP》读书笔记1 - 网络基础

第一章:网络基础知识 1 协议: 互联网 ->TCP IP HTTP LAN -> IPX/SPX 2 分组通信/分组交换协议->Packet 3 OSI ->层与层之间通过某种协议通信 4 数据逐层添加首部,接受后逐层分离 5 表示层识别编码 6 传输方式: 有连接 - 建立连接后发送数据 无连接 - 直接发送 TCP:面向有连接的分组发送协议 7 网络通信方式: 电路交换:电话网 分组交换:TCP/IP 分解成数据包,使多个计算机可以同时交换数据 8 分组交换: 路由器连接通信

根据IP地址获取用户的mac地址

根据实际需要可以使用以下的代码 获取MAC地址. /**  * 根据IP地址获取mac地址  * @param ipAddress 127.0.0.1  * @return  * @throws SocketException  * @throws UnknownHostException  */ public static String getLocalMac(String ipAddress) throws SocketException, UnknownHostException { //

TCPIP路由技术卷一读书笔记之IPv6

不知道为什么贴不过来,发链接上来吧 http://1.thecatcher.sinaapp.com/?p=42

IP地址 无限网卡的MAC地址

《大型网站技术架构》读书笔记之六:永无止境之网站的伸缩性架构

此篇已收录至<大型网站技术架构>读书笔记系列目录贴,点击访问该目录可获取更多内容. 首先,所谓网站的伸缩性,指不需要改变网站的软硬件设计,仅仅通过改变部署的服务器数量就可以扩大或者缩小网站的服务处理能力.在整个互联网行业的发展渐进演化中,最重要的技术就是服务器集群,通过不断地向集群中添加服务器来增强整个集群的处理能力. 一.网站架构的伸缩性设计 1.1 不同功能进行物理分离实现伸缩 (1)纵向分离:将业务处理流程上得不同部分分离部署,实现系统的伸缩性: (2)横向分离:将不同的业务模块分离部署