<TCP/IP>地址解析协议ARP
  从前两章中有学到,网络层地址和链路层地址是由不同的,一个是物理地址,一个是IP地址。物理地址固定存储在网卡中,不会改变,而IP地址是可以网络管理员和用户自己分配的
  在传统的IPv4网络中,一台A主机要想将数据传输到另一台B主机上,只知道B的IP地址可不行,还需要知道B主机在网络中的有效物理地址,但是要怎么才能把IP地址转换成物理地址呢?这时候就要用到ARP(地址解析协议)
ARP
地址解析其实是发现两个地址之间映射关系的过程,基本上都用于32位的IPv4地址和以太网的48位MAC地址之间的映射,如下图所示,IP地址经过ARP的处理,变成了硬件地址。

书中还举了一个例子,当我们打开一个网页,我们的电脑会和相关的服务器联系,它首先判断该服务是位于本地(同一IP子网)还是远程,如果在同一子网,则向本网发送ARP广播,获得目标IP所对应的MAC地址,如果不在同一子网,就通过ARP询问默认网关(路由器)对应的MAC地址
ARP帧格式
下图为以太网中转换一个IPv4地址时常用的ARP请求和应答分组的格式
  
- 在以太网中,对于ARP(请求或应答),两字节的帧类型字段必须为0x0806
 - 硬件类型字段指出硬件地址类型,对于以太网该值为1
 - 协议类型字段指出映射的协议地址类型,对于IPv4地址,该值为0x0800
 - 硬件和协议地址长度分别指出硬件地址和协议地址的字节数,对于以太网中使用IPv4地址的ARP请求或应答,它们的值分别为6和4
 - Op字段指出该操作是ARP请求(1),ARP应答(2),RARP请求(3),RARP应答(4),RARP为反向地址转换
 
直接交付
在同一个子网下,两个IP地址直接传输数据,就可以使用直接交付,IPv4直接交付的基本操作如下:
- 主机A向主机B发送IPv4数据报,A必须将B的IP地址转换成物理地址,ARP开始运行
 - ARP工作在正常模式下,仅适用于广播网络,在一个共享的链路层网段上,ARP向所有连接着的主机发送一个称为ARP请求的以太网帧,其中包含主机B的IP地址
 - 只有符合目标IP地址的主机B回答这个ARP请求,其他站点则忽略这个请求,即为ARP应答,该应答包含B的IP地址和MAC地址,此时不是广播,而是直接发送给A
 - 主机A收到应答后,会在自己的缓存中构建一个ARP表,将得到的地址信息缓存起来,以备将来和同一目的节点通信时直接在ARP表中查找,避免了多次的广播请求
 
感谢在实践中深入理解ARP协议和ARP地址解析过程(同一子网和不同子网)这两篇文章的作者们提供的帮助,想更深入了解ARP的同学可以点击链接学习
<TCP/IP>地址解析协议ARP的更多相关文章
- TCP/IP具体解释学习笔记——地址解析协议ARP
		
一 概述 我们知道,IP协议是用来在不同的物理网络之间数据传输的.要在不同的网络之间数据传输,至少须要将IP协议所用的地址转换成特定网络所使用的物理地址. 一般来说.就是将IPv4地址转换为mac地址 ...
 - TCP/IP的排头兵――地址解析协议(ARP) (转载)
		
转自:http://blog.csdn.net/wangxg_7520/article/details/2488442 一.引言 古人行军打仗,都要有一个可以引领队伍前进方向的排头兵,在TCP/IP网 ...
 - TCP/IP, UDP, ICMP, ARP协议族简介--纯图慎点
		
ISO/OSI的网络模型架构 TCP/IP参考模型的层次结果 以太网头部结构 以太网属于数据链路层, 属于最基本的协议结构 IP协议 IP协议为TCP, UDP, ICMP提供最基本的数据传输通路 I ...
 - 【RL-TCPnet网络教程】第23章 RL-TCPnet之地址解析协议ARP
		
第23章 RL-TCPnet之地址解析协议ARP 本章节为大家讲解ARP(Address Resolution Protocol,地址解析协议),通过前面章节对TCP和UDP的学习,需要大家 ...
 - TCP/IP网络协议基础
		
实验楼学习网络协议传送门 一.TCP/IP简介 TCP/IP(Transmission Control Protocol/Internet Protocol)是传输控制协议和网络协议的简称,它定义了电 ...
 - 地址解析协议ARP与逆地址解析协议RARP
		
IP地址是用来通信的,但是和硬件地址是有区别的.物理地址是数据链路层和物理层使用的地址,IP地址是网络层及以上各层使用的地址. 发送数据时,数据从高层向下层传输,使用IP地址的IP数据报交给下层的数据 ...
 - 初探计算机网络之TCP/IP网络协议
		
网络协议  在计算机诞生以来,从最原始的单机模式到现在多台计算机协同工作,形成计算机网络,从前很难想象的信息共享.多机合作.大规模计算在今天也早已成了现实.在早期,计算机网络需要解决的痛点,就是怎样 ...
 - Linux--网络基础(概念+协议的了解+OSI七层模型,TCP/IP五层协议,网络数据传输流程)
		
网络的发展 网络的发展有下面几个阶段: 独立模式:计算机最开始是以单机模式被广泛使用的.每一台计算机都是独立的,之间不能够进行数据共享与通信 网络互联: 计算机之间可以链接在一起,完成数据共享,计算机 ...
 - 2016.7.8    计算机网络复习要点第四章之地址解析协议ARP
		
1.地址解析协议ARP:知道一个机器的IP地址,需要找到其相应的硬件地址:ARP协议的用途是为了从网络层使用的IP地址解析出在链路层使用的硬件地址: 2.由于是IP协议使用了ARP协议,因此通常就把A ...
 
随机推荐
- golang byte与rune区别
			
先看代码 package main import ( "fmt" ) func main() { var a = "hello world" var b = & ...
 - 2016vijos 1-3 兔子的晚会(生成函数+倍增FWT)
			
求出序列的生成函数后,倍增FWT #include<cstdio> using namespace std; #define N 2048 ; int inv; ]; int Pow(in ...
 - Spring事物的属性
			
链接:https://www.nowcoder.com/questionTerminal/1c65d30e47fb4f59a5e5af728218cac4?orderByHotValue=2& ...
 - vue 组件动态 循环
			
组件可以是动态的,记录如下 <div v-for="item in arrComponent"> <component v-bind:is="item. ...
 - [译]使用mediatR的notification来扩展的的应用
			
原文 你不希望在controller里面出现任何领域知识 开发者经常有这样的疑问"这个代码应该放在哪呢?"应该使用仓储还是query类?.... 怎么去实现职责分离和单一职责呢? ...
 - IDAPython教程(三)
			
在过去两个部分中,我们已经讨论了使用IDAPython让逆向工程更容易一些.这一部分我们来看一下条件断点. 当在IDA中调试时,分析者经常会遇到希望可以在一个特殊的地址中断下来的情况,但这只有在一些特 ...
 - 【SRM-09 B】撕书II
			
Description 琉璃手头有一黑一白两本魔法书,一本是<缟玛瑙的不在证明>,另一本是<白色相簿1.5>.传说同时打开这两本书会有奇怪的事情发生.琉璃打开一看,果然非常奇怪 ...
 - js伪数组转数组
			
方法1: 遍历伪数组,在把值push进一个空数组中 方法2: 使用数组的slice方法,它返回的是数组,使用call或apply指向伪数组 var arr = [].slice.call(argume ...
 - 基础的POJ学习
			
OJ上的一些水题(可用来练手和增加自信)(poj3299,poj2159,poj2739,poj1083,poj2262,poj1503,poj3006,poj2255,poj3094) 初期: 一. ...
 - 第24月第30天 scrapy《TensorFlow机器学习项目实战》项目记录
			
1.Scrapy https://www.imooc.com/learn/1017 https://github.com/pythonsite/spider/tree/master/jobboleSp ...