ip地址使用在网络层以上,是一个逻辑地址,物理地址是数据链路层和物理层使用的

在发送数据的时候,数据是从上层往下层发送的,通过tcp报文-》ip数据报-》mac数据帧

IP地址放在数据报的首部,硬件地址放在mac帧的首部,在里面有几点注意

1:在ip层抽象的互联网上只能看到ip数据报。

2:在局域网的链路层只能看到MAC帧

3:虽然ip数据报首部有目的ip地址,但是路由器只根据目的地址的ip网络号进行选者

4:ip层抽象的互联网层屏蔽了下面的复杂的细节,所以在网络层上我们只对统一的ip地址研究原地址和目的地址就可以了

ARP解析协议:

我们在进行通信的时候,需要知道相互的硬件地址,但是我们只知道源ip和目的ip,怎么才能进行相互通信呢,这就需要了ARP地址解析协议,通过arp可以通过ip找到对应的硬件地址,rarp逆地址解析协议可以通过硬件地址找到ip地址

ARP的原理就是在主机ARP高速缓存中存储着一个ip地址到硬件地址的映射表,每一个主机都有arp高速缓存,

当主机A向主机B发送ip数据报的时候,他先查看本地arp缓存是否有主机b的mac地址,如果有,则将硬件地址写入mac帧,并通过局域网将mac帧发送到硬件地址去,如果找不到,那么主机A自动运行ARP,通过下面的方法找到mac地址

(1)主机A在局域网发送一个广播ARP请求,说我的ip是什么,我的硬件是什么,我要找到ip多少的

(2)本局域网所有主机都能收到,发现不是针对自己的,就丢弃,如果主机B收到了,发现是在寻找自己,那么就收下这个ARP请求分组,并向主机A发送一个响应分组,并在这个ARP响应分组写入自己的硬件地址,说我的ip是什么,我的硬件地址是什么,注意请求分组是广播,响应分组是单播

(3)在这个过程中,主机A收到主机B的响应分组,把B的硬件地址写入自己的ARP高速缓冲中,主机B也将A的硬件地址写入自己的高速缓存中

(4)ARP把缓冲中的每一个映射地址都设置了一个生存时间,过了这个时间,就会删除,并重新发送一个广播获得mac地址。因为如果主机b的mac地址改变了,可能会发送给错误的mac主机

优点:如果不使用ARP高速缓冲,那么任何一个主机进行通信的时候,都需要发送一次广播,这样会使网络的通信量增加很大,但是他解决的是同一个局域网的主机和路由,不能跨路由器,如果跨的话,需要多次解析,(不断的通过各个路由器),

注意:这个过程是自动进行的,主机的用户对这种解析并不知道

最新文章

  1. javascript思维导图
  2. Asp.net MVC 视图(三)
  3. air 移动开发配置文件详解
  4. Java IO之File
  5. android中使用Intent在activity之间传递数据
  6. hdu 4762 && 2013 ACM/ICPC 长春网络赛解题报告
  7. vim技巧和坑
  8. JavaScript函数部分
  9. UnityShader-菲涅尔反射(Fresnel Reflection)
  10. 【技术分析】DowginCw病毒家族解析
  11. 洛谷 P1219 八皇后【经典DFS,温习搜索】
  12. Zookeeper学习
  13. OpenCV和selenum实现点击操作
  14. [P3676]小清新数据结构题
  15. HTTP 请求头中的 Remote_Addr,X-Forwarded-For,X-Real-IP
  16. css多列居中
  17. 解决C3P0在Linux下Failed to get local InetAddress for VMID问题
  18. Simultaneous Localization and Mapping Technology Based on Project Tango
  19. POST 和 PUT 方法区别
  20. [Android] Implementation vs API dependency

热门文章

  1. Victor 串口 VCL 控件 - 简单实用, 功能强大的 C++ Builder 串口控件!
  2. 将ADS1.2的工程迁移到KEIL上-基于2440
  3. 微信小程序之----video视频播放
  4. IOS开发中UITableView(表视图)的滚动优化及自定义Cell
  5. web前端面试第三波~
  6. UVa 10148 - Advertisement
  7. zepto js 源码 解读
  8. PHP新手之学习类与对象(1)
  9. Android Studio快捷键汇总
  10. MySQL安装 MySQL5.7.10免安装版配置,mysql5.7.10免安装版