互联网中一台主机要和另一台主机实现通信首先需要知道彼此在互联网中的位置,主机在互联网中的位置是通过ip地址标记的,当找到ip地址后,再通过端口号标识运行在主机中的进程从而实现通信。

IP地址:

  IP地址就是给互联网上的每一台主机或路由器的每一个接口分配一个在全世界范围内是唯一的32位的标识符,IP地址的结构使我们可以在互联网上很方便的进行寻址。为了便于寻址和层次化地构造网络,IP地址被分为A、B、C、D、E五类,商业应用中只用到A、B、C三类。IP协议(Internet Protocol)又称互联网协议,是支持网间互连的数据报协议,它与TCP协议(传输控制协议)一起构成了TCP/IP协议族的核心。它提供网间连接的完善功能,包括IP数据报规定互连网络范围内的IP地址格式。 Internet 上,为了实现连接到互联网上的结点之间的通信,  必须为每个结点(入网的计算机)分配一个地址,并且应当保证这个地址是全网唯一的,这便是IP地址。目前的IP地址(IPv4:IP第4版本)由32个二进制位表示,每8位二进制数为一个整数, 中间由小数点间隔,如159.226.41.98,整个IP地址空间有4组8位二进制数,由表示主机所在的网络的地址(类似部队的编号)以及主机在该网络中的标识(如同士兵  在该部队的编号)共同组成。为了便于寻址和层次化的构造网络,IP地址被分为A、B、C、D、E五类,  商业应用中只用到A、B、C三类。  * A类地址:A类地址的网络标识由第一组8位二进制数表示,网络中的主机标识占3组8位二进制数,A类地址的特点是网络标识的第一位二进制数取值必须为“0”。不难算出,A类地址允许有126个网段,每个网络大约允许有1670万台主机,通常分配给拥 有大量主机的网络(如主干网)。 * B类地址:B类地址的网络标识由前两组8位二进制数表示,网络中的主机标识占两组8位二进制数,B类地址的特点是网络标识的前两位二进制数取值必须为“10”。 B类地址允许有16384个网段,每个网络允许有65533台主机,适用于结点比较多的网络  (如区域网)。  * C类地址:C类地址的网络标识由前3组8位二进制数表示,  网络中主机标识占1组8位二进制数,  C类地址的特点是网络标识的前3位二进制数取值必须为“110”。  具有C类地址的网络允许有254台主机,适用于结点比较少的网络(如校园网)。 为了便于记忆,通常习惯采用4个十进制数来表示一个IP地址,十进制数之间采用句点“.”予以分隔。 这种IP地址的表示方法也被称为点分十进制法。如以这种方式表示, A类网络的IP地址范围为1.0.0.1-127.255.255.254; B类网络的IP地址范围为:128.1.0.1-191.255.255.254; C类网络的IP地址范围为:192.0.1.1-223.255.255.254。  由于网络地址紧张、主机地址相对过剩,采取子网掩码的方式来指定网段号。 TCP/IP协议与低层的数据链路层和物理层无关,这也是TCP/IP的重要特点。正因为如此 ,它能广泛地支持由低两层协议构成的物理网络结构。目前已使用TCP/IP连接成洲际网、全国网与跨地区网。(注意:这种将网络进行分类的方法现在已经过时了)

MAC地址:

  MAC地址是固化在适配器(网卡)中的地址,所以是主机的物理地址,每一个适配器都有一个唯一的MAC地址,MAC地址由48位二进制位组成。

ARP协议:

  ARP协议的用途是为了从网络层使用的IP地址,解析出在数据链路层使用的硬件地址(MAC地址)。

  需要明白:在网络层及网络层以上我们使用的是IP地址,在链路层及物理层我们使用的是MAC地址。目前使用的IP地址的版本是IPV4,它由32位组成,MAC地址一般由48位组成。

  ARP是解决同一个局域网上的主机或路由器的IP地址和硬件地址的映射问题。解决这个问题的方法是在主机ARP高速缓存中存放一个从IP地址到硬件地址的映射表。

  当主机A要向本局域网上的某台主机B发生IP数据报时,就先在其ARP高速缓存中查看有无主机B的ip地址,如果有,就在ARP高速缓存中查出其对应的硬件地址,再把这个硬件地址写入MAC帧中,然后通过局域网把该MAC帧发往此硬件地址;如果没有,找到主机B的硬件地址需要经过以下过程:

  a:主机A的ARP进程在本局域网上广播发送一个ARP请求分组。请求内容:“我的IP地址是209.0.0.5,硬件地址是 00-00-C0-15-AD-18,我想知道ip地址为 209.0.0.6的主机的硬件地址”

  b:在本局域网上的所有主机上运行的ARP进程都收到此ARP请求分组

  c:主机B的IP地址与ARP请求分组中要查询的IP地址一致,就收下这个ARP请求分组,并向主机A发送ARP响应分组,同时这个ARP响应分组中写入自己的硬件地址。由于其余的所有主机的IP地址都与ARP请求分组中要查询的ip地址不一致,因此都不理睬这个ARP请求分组。响应内容:“我的ip地址是209.0.0.6,我的硬件地址是08-00-2B-00-EE-0A”。

  d:主机A收到主机B的ARP响应分组后,就在其ARP高速缓存中写入主机B的IP地址到硬件地址的映射。

IP地址、MAC地址、ARP地址解析协议的更多相关文章

  1. 使用ARP获取局域网内设备IP和MAC地址

    根据Arp列表数据,查询本地设备在线状态 使用 arp -a 获得所有内网地址,首先看Mod对象 public struct MacIpPair { public string HostName; p ...

  2. 《TCP/IP详解 卷1:协议》第4章 ARP:地址解析协议

    4.1 引言 本章我们要讨论的问题是只对TCP/IP协议簇有意义的IP地址.数据链路如以太网或令牌环网都有自己的寻址机制(常常为48 bit地址),这是使用数据链路的任何网络层都必须遵从的.一个网络如 ...

  3. 怎么查询局域网内全部电脑IP和mac地址等信息?

    在局域网内查询在线主机的IP一般比较简单,但局域网内全部电脑的IP怎么才能够查到呢?查询到IP后我还要知道对方的一些详细信息(如MAC地址.电脑名称等)该怎么查询呢??? 工具/原料 Windows ...

  4. 怎么查询局域网内全部电脑IP和mac地址..

    在局域网内查询在线主机的IP一般比较简单,但局域网内全部电脑的IP怎么才能够查到呢?查询到IP后我还要知道对方的一些详细信息(如MAC地址.电脑名称等)该怎么查询呢??? 工具/原料 Windows ...

  5. 查询局域网内全部电脑IP和mac地址等信息

    怎么查询局域网内全部电脑IP和mac地址等信息_百度经验 https://jingyan.baidu.com/article/54b6b9c0348e432d583b47c1.html 枚举ping ...

  6. 通过IP获取MAC地址例子(应用层)

    博客地址:http://home.cnblogs.com/u/zengjianrong/ 由于某种需求,需要获取某个ip的mac地址,在应用层实现例子如下代码. 流程:1. 先遍历arp表,若存在对应 ...

  7. win10系统绑定本地IP和mac地址

    第一步:找到自己的IP和mac地址 1.按着win键+R键,输入cmd(大小写都一样) 2.命令: ipconfig   /all              #查看所有地址 然后按“回车键” 3.这样 ...

  8. 获得Unix/Linux系统中的IP、MAC地址等信息

    获得Unix/Linux系统中的IP.MAC地址等信息 中高级  |  2010-07-13 16:03  |  分类:①C语言. Unix/Linux. 网络编程 ②手册  |  4,471 次阅读 ...

  9. 获取平台所有接口的IP和MAC地址

    我们有时候会有获取网口的IP和MAC地址的需求.可以通过ioctl来获取. #include <sys/ioctl.h>#include <net/if.h>#include ...

随机推荐

  1. 【bzoj1042】[HAOI2008]硬币购物

    首先使用DP预处理,先求出,在不考虑每种硬币个数的限制的情况下,每个钱数有多少种拼凑方案. 为了避免重复的方案被转移,所以我们以硬币种类为第一层循环,这样阶段性的增加硬币. 一定要注意这个第一层循环要 ...

  2. 使用-Wl直接向ld传递参数

    gcc -Wl, key1, value1, key2, value2, key3, value3 包括-Wl在内全部都是以逗号分隔. 上面等价于: ld key1=value1 key2=value ...

  3. MessageBox.Show

    MessageBox.Show()共有21中重载方法.现将其常见用法总结如下: .MessageBox.Show("Hello~~~~"); 最简单的,只显示提示信息. .Mess ...

  4. POJ1751 Tree 树分治

    分析:每次找重心可以发现最多n层,每层复杂度是O(nlogn) 总体时间复杂度是O(nlog^2n) #include <cstdio> #include <cstring> ...

  5. sparksql语句

    (1)in 不支持子查询 eg. select * from src where key in(select key from test);支持查询个数 eg. select * from src w ...

  6. poj 2186(tarjan+缩点)

    Popular Cows Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 37083   Accepted: 15104 De ...

  7. Flask开启多线程、多进程

    一.参数 app.run()中可以接受两个参数,分别是threaded和processes,用于开启线程支持和进程支持. 二.参数说明 1.threaded : 多线程支持,默认为False,即不开启 ...

  8. SYSUCPC2017 1007 Tutu’s Array II

    题目大意:有A个0和B个1,每次取两个出来进行{XNOR,NAND,NOR}操作生成一个新的0/1,直到只剩一个元素.问最后是否可能剩下一个0,是否可能剩下一个1. XNOR 比较特殊 a XNOR ...

  9. 解决 IDEA 中文乱码

    一.打开Intellij的根目录,找到下图的两个文件(根据你的系统是32位或64位选择其中一个配置文件),在配置文件中添加:-Dfile.encoding=UTF-8 二.   配置IDE编码 点击F ...

  10. MySQL 目录结构信息

    bin 目录,存储可执行文件. data 目录,存储数据文件. docs 目录,文档. include 目录,存储包含的头文件. lib 目录,存储库文件. share 目录,错误信息和字符集文件.