计算机网络之IP地址与MAC地址

IP地址

IP地址(Internet Protocol Address):
    缩写为IP Adress,是一种在Internet上的给主机统一编址的地址格式,也称为网络协议(IP协议)地址。
    它为互联网上的每一个网络和每一台主机分配一个逻辑地址。

常见的IP地址,分为IPv4与IPv6两大类,当前广泛应用的是IPv4。
目前IPv4几乎耗尽,下一阶段必然会进行版本升级到IPv6。

IP地址对应于OSI参考模型的第三层网络层,工作在网络层的路由器根据目标IP和源IP来判断是否属于同一网段。
如果是不同网段,则转发数据包。

IP地址的组成:
    IP地址=网络地址+主机地址。

计算机的IP地址由两部分组成,一部分为网络标识,一部分为主机标识,同一网段内的计算机网络部分相同,主机部分不能同时重复出现。

    路由器连接不同网段(网络标识),负责不同网段之间的数据转发。
    交换机连接的是同一网段的计算机(主机标识)。

    通过设置网络地址和主机地址,在互相连接的整个网络中保证每台主机的IP地址不会互相重叠,即IP地址具有了唯一性。

IP数据包首部

IP数据包首部:

    版本(4位):ipv4或者ipv6

    首部长度(4位):最大值60字节(4位表示0-15,一个单位位4个字节)

    区分服务(8位):数据包传输着急还是不着急

    总长度(16位):首部+数据部分

    标识(16位)

    标志(3位)

    片偏移(13位):某片在原片中的相对位置

    生存时间(8位):数据在网络中可通过路由器的最大值

    协议(8位)

    首部校验和(16位):校验IP数据包首部是否错误

IP地址的分类

MAC地址

MAC(Media Access Control,介质访问控制)地址,或称为物理地址,也叫硬件地址:
    用来定义网络设备的位置,MAC地址是网卡出厂时设定的,是固定的。
    但可以通过在设备管理器或注册表等方式修改,同一网段内的MAC地址必须唯一。

    MAC地址采用十六进制数表示,长度是6个字节(48位),分为前24位和后24位:

        前24位叫做组织唯一标志符(Organizationally Unique Identifier,即OUI),
        是由IEEE的注册管理机构给不同厂家分配的代码,区分了不同的厂家。

        后24位是由厂家自己分配的,称为扩展标识符。同一个厂家生产的网卡中MAC地址后24位是不同的。

MAC地址对应于OSI参考模型的第二层数据链路层:
    工作在数据链路层的交换机维护着计算机MAC地址和自身端口的数据库,
    交换机根据收到的数据帧中的“目的MAC地址”字段来转发数据帧。

MAC帧格式

IP地址与MAC地址区别

长度不同:
    IP地址为32位(二进制),MAC地址为48位(十六进制)。

分配依据不同:
    IP地址的分配是基于网络拓扑,MAC地址的分配是基于制造商。

寻址协议层不同:
    IP地址应用于OSI第三层(网络层),而MAC地址应用在OSI第二层(数据链路层)。

IP地址与MAC地址的作用和关系:
    IP和MAC两者之间分工明确,默契合作,完成通信过程。

    在数据通信时,IP地址专注于网络层,网络层设备(如路由器)根据IP地址,将数据包从一个网络传递转发到另外一个网络上。

    而MAC地址专注于数据链路层,数据链路层设备(如交换机)根据MAC地址,将一个数据帧从一个节点传送到相同链路的另一个节点上。

IP和MAC地址这种映射关系由ARP(Address Resolution Protocol,地址解析协议)协议完成:
    ARP根据目的IP地址,找到中间节点的MAC地址,通过中间节点传送,从而最终到达目的网络。

IP地址与MAC地址位置

IP地址决定最终地址,MAC地址决定下一跳给谁

原文地址:https://www.cnblogs.com/loveer/p/11722103.html

时间: 2024-09-29 17:37:33

计算机网络之IP地址与MAC地址的相关文章

如果重新设计网络,有没有可能合并IP地址跟MAC地址?

前阵子看网络基础相关的书籍,冒过一个疑问,为什么要有MAC地址跟IP地址?两者可否合二为一? 现在的逻辑是这样子:在数据传输过程中,路由器查看这个数据包的IP地址,跟路由表中记录的“IP集合:下一跳的mac地址”做对照,确定了要往那边扔:网卡在接收数据的时候,也会看看这个数据包中记录的目标MAC地址是不是自己,只接收自己的. MAC地址是数据链路层使用到的,IP地址是网络层使用到的.MAC地址是硬件的物理属性,在网卡上固定不变,IP地址是逻辑属性. 所以,因为网络分层的设计,很自然的就想到要使用

IP地址与MAC地址

众所周知,每一块网卡在出厂时都烧录了世界唯一的MAC地址,使用该地址可以在网络中识别不同的计算机.同时,互联网中也使用IP地址来定位客户端,这是因为IP地址比MAC地址定位更方便,而且也更加便于记忆.  1.1 IP地址在大多数的局域网中,IP地址是计算机之间通信的唯一依据.当网络中计算机数量比较多时,想要准确记忆每一台计算机的IP地址,显然是一件不太可能的事情.如果网络规模相当大,而且划分了VLAN,那么网络管理员更无法准确记忆用户IP地址了. IP信息查看--ipconfigipconfig

nbtscan命令和arp -a组合可以查看局域网所有正在使用的IP地址和MAC地址

1.下载nbtstat,解压包里的cygwin1.dll要和nbtscan.exe放在一起,如果cygwin1.dll文件无效,请使用"百度电脑专家"下载 *.dll文件. 2.使用ARP -a 可以查看所有在在线的IP地址和MAC地址.

java获取客户端IP地址和MAC地址

最近项目中要获得客户端的mac地址.服务端是移植的centos系统,arm架构的盒子.客户端是手机和移动设备.(其它场景应该也是类似的) 首先要获得ip地址: 根据客户端的http请求,利用request.getRemoteAddr()获取客户端Ip地址.在局域网内getRemoteAddr()和getRemoteHost()获得的结果相同.request.getRemoteAddr()是获得客户端的ip地址 .getRemoteHost()是获得客户端的主机名 .在有些场景中,可能有Squid

Internet为什么需要IP地址和MAC地址?

1 基本概念 IP地址是Internet协议地址,每个Internet包必须带有IP地址,每个Internet服务提供商(ISP)必须向有关组织申请一组IP地址,然后一般是动态分配给其用户. MAC地址是Ethernet网卡上带的地址,长度为48位.每个Ethernet网卡生产厂家必须向IEEE组织申请一组MAC地址,在生产网卡时在网卡的串行EEPROM中写入一个唯一的MAC地址. 2 为什么需要IP地址和MAC地址? 第一种情形:宽带用户通过ADSL拨号上网 用户/主机(如Host A)最初是

一句话脚本系列之获取eth0网卡的IP地址(或MAC地址)

欢迎转载!转载时请注明出处:http://blog.csdn.net/nfer_zhuang/article/details/42609733 引言 使用场景: 我使用的Linux服务器上有多个网卡,有时候就需要在脚本中使用到指定网卡的IP地址或MAC地址,那么这个时候就有两种做法,一是预先读取网卡的IP地址或MAC地址,然后写入到脚本中:另外一种方法就是通过shell命令实时获取指定网卡上的当前IP地址或MAC地址. 一般用法: 使用ifconfig eth0读取网卡信息 手动将IP地址或MA

IP地址映射绑定MAC地址

1.局域网之间通过查询对方IP地址可以将对方Mac地址映射到主机的APR缓冲表中.将主机IP地址映射到Mac上 首先通过 net view 查询共享的的局域网主机 第二:随便选取一个计算机名,强制使用ipv4得到IP地址,ping同之后ARP缓冲表中更新了ARP表,添加了当前的IP地址和对应的Mac 第三 获取主机的APR缓冲表 第四.将得到的Mac地址和自己主机IP地址进行映射 这样就成功的将自己的IP地址映射到局域网中的其他主机的Mac上.常见的蹭网形式.但是校园网存在账户设置不行.应为IP

理解IP地址和MAC地址

概述: IP 是地址,有定位功能(网与网的通讯)(网络层) MAC 是身份证,无定位功能(在子网干活)(链路层) 首先是如何查看ip地址的问题: Window:ipconfig Linux:ifconfig .ip addr #Linux下ip addr的内容 [email protected]:~# ip addr 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default link/lo

获取客户端的ip地址与mac地址总结

最近刚完成的一个模块中,需要获取系统客户端的IP地址与物理地址(MAC地址). 1. 获取的本机IP与MAC是服务器的,而非客户端的→_→ 通过JAVA获取,本机的IP地址与MAC地址,使用如下代码即可完成: package com.howin.util; import java.net.*; public class Ipconfig { public static void main(String[] args) throws Exception { // TODO Auto-generat