在网络中,不同的层有不同的标识:
- 数据链路层的标识是MAC地址
- 网络层的标识是IP地址
- 传输层的标识就是UDP或者TCP的端口号
MAC地址
什么是MAC地址
MAC地址也称为局域网地址(LAN Address),MAC位址,以太网地址(Ethernet Address)或物理地址(Physical Address),它是一个用来确认网络设备位置的位址。
MAC地址用于在网络中唯一标示一个网卡,一台设备若有一或多个网卡,则每个网卡都需要并会有一个唯一的MAC地址
MAC地址由网络设备制造商生产时烧录在网卡的EPROM(一种闪存芯片,通常可以通过程序擦写)
- Mac地址是由一个48位(6字节)的二进制,为了方便记忆,常转为12个16进制数,如:00-16-EA-AE-3C-40就是一个MAC地址,其中前3个字节,16进制数00-16-EA代表网络硬件制造商的编号,而后3个字节,16进制数AE-3C-40代表该制造商所制造的某个网络产品(如网卡)的系列号。只要不更改自己的MAC地址,MAC地址在世界是唯一的。形象地说,MAC地址就如同身份证上的身份证号码,具有唯一性
工作过程
网络上的数据包从初始点开始 ,经过一个个中间节点最终到达目标节点 ,数据包是如何从初始节点开始识别一个个中间节点最终找到目标节点的呢?
- 实际上初始节点是根据目标节点的地址 ,将目标节点的IP地址映射到中间节点的MAC地址,找到第一个中间节点。从第一个中间节点出发,根据目标节点的IP地址映射到第二个中间节点的MAC地址,从而找到第二个中间节点……,以此类推,直到当找到最后一个中间节点后,从最后一个中间节点出发,根据目标节点的地址映射到目的节点的MAC地址,从而将数据包传送给目标主机。
- 所以数据包的传送过程就是:不断地将目标节点的地址映射到一个个中间节点的MAC地址,再从一个个中间节点出发,直到找到最终的目标节点
数据包传送的关键是将目标节点的IP地址映射到中间节点的MAC地址。IP地址与MAC地址的映射要通过ARP地址解析协议来完成。
MAC头
生成了 IP 头部之后,接下来网络包还需要在 IP 头部的前面加上 MAC 头部
MAC 包头格式
MAC头是以太网使用的头部,它包含了接收方和发送发的MAC地址等信息
在MAC包头里需要发送发MAC地址和接收方MAC地址,用于两点之间的传输
怎么生成报文
协议类型
一般在TCP/IP通信里面,MAC包头的协议类型只使用
0800
: IP协议0806
: ARP协议
怎么填写发送方的MAC地址
发送方也就是自己的MAC地址。直接从本机的网卡中的ROM中读取出来就可以,MAC地址是在网卡生产时写入到ROM中的。
怎么填写接收方的MAC地址
- 先查询路由表,得到下一步要发送的IP:在路由表中找到相匹配的条目,然后把包发给
Gateway
列中的** IP 地址**就可以了。 - 现在我们已经知道了要发送的IP地址,那么怎么知道这个IP地址是那块**网卡(Mac地址)**呢?
- ARP 协议会在以太网中以广播的形式,对以太网所有的设备喊出:“这个 IP 地址是谁的?请把你的MAC 地址告诉我”。
- 然后就会有人回答:“这个 IP 地址是我的,我的 MAC 地址是 XXXX”。
如果对方和自己处于同一个子网中,那么通过上面的操作就可以得到对方的 MAC 地址。然后,我们将这个 MAC 地址写入 MAC 头部,MAC 头部就完成了。
好像每次都要广播获取,这不是很麻烦吗?
在后续操作系统会把本次查询结果放到一块叫做ARP缓存的内存空间留着以后用,不过缓存的时间就几分钟。
也就是说,在发包时:
- 先查询 ARP 缓存,如果其中已经保存了对方的 MAC 地址,就不需要发送 ARP 查询,直接使用ARP 缓存中的地址。
- 而当 ARP 缓存中不存在对方 MAC 地址时,则发送 ARP 广播查询。
查看 ARP 缓存内容
arp获取mac地址只能获取内网机器的mac地址
ARP工作原理解析:
主机A的IP地址为192.168.1.1,MAC地址为0A-11-22-33-44-01;
主机B的IP地址为192.168.1.2,MAC地址为0A-11-22-33-44-02;
当主机A要与主机B通信时,地址解析协议可以将主机B的IP地址(192.168.1.2)解析成主机B的MAC地址,以下为工作流程:
- 第1步:根据主机A上的路由表内容,IP确定用于访问主机B的转发IP地址是192.168.1.2。然后A主机在自己的本地ARP缓存中检查主机B的匹配MAC地址。
- 第2步:如果主机A在ARP缓存中没有找到映射,它将询问192.168.1.2的硬件地址,从而将ARP请求帧广播到本地网络上的所有主机。源主机A的IP地址和MAC地址都包括在ARP请求中。本地网络上的每台主机都接收到ARP请求并且检查是否与自己的IP地址匹配。如果主机发现请求的IP地址与自己的IP地址不匹配,它将丢弃ARP请求。
- 第3步:主机B确定ARP请求中的IP地址与自己的IP地址匹配,则将主机A的IP地址和MAC地址映射添加到本地ARP缓存中。
- 第4步:主机B将包含其MAC地址的ARP回复消息直接发送回主机A。
- 第5步:主机A收到主机B发来的ARP回复消息时,用主机B的IP和MAC地址映射更新ARP缓存。本机缓存是有生存期的,生存期结束后,再次重复上面的过程。主机B的MAC地址一旦确定,主机A就能向主机B发送IP通信了。
有几个网卡就有几个MAC地址,有几个MAC地址就有几个IP地址
为什么有了MAC地址还要有IP地址
- 网卡坏了怎么办?
- 如果一个IP主机要从另一个地方移动到其他地方,要重新装机吗?
- IP地址的分配是根据网络的拓扑结构,而不是谁制造了网络设备。
置于为什么要有IP地址,下次说
评论记录:
回复评论: