【TCP/IP详解 卷一:协议】第四章 ARP:地址解析协议 以及其他部分的一些知识
4.1 引言
数据链路 如以太网(Ethernet) 或者 令牌环网 都有自己的寻址机制(一般为 48 bit 的地址)。
一个网络(数据链路层) 可以同时被多个不同的网络使用。比如,一组使用TCP/IP协议的主机 和 另一组使用某种PC网络软件的主机 可以共享(share)相同的电缆。
当一台主机把以太网数据帧 发送到位于 同一局域网(LAN) 的另一台主机时,是根据48 bit 的以太网地址 来确定目的接口的。
地址解析协议 为这两种不同的地址形式 提供映射。
数据链路层地址 --(RARP)--> IP地址(Internet 地址)
数据链路层地址 <--(ARP)-- IP地址(Internet 地址)
- ARP 为 IP地址 到 对应的硬件地址 之间提供 动态映射。之所以使用了 动态 这个词,是因为这个过程是自动完成的。一般应用程序用户或者系统管理员不需要关心这个问题。
- RARP 被那些没有磁盘驱动器的系统所使用(一般是无盘工作站或X终端),它需要管理员进行手工设置。
4.2 一个例子
Terminal 键入
ftp bsdi
这个形式的命令,都会进行以下步骤:
- (1) 应用程序FTP客户端 调用函数 gethostbyname(3) 把 主机名(bsdi) 转换成 32 bit 的 IP地址。 这个函数在 DNS(域名系统) 中被称作 解析器。
- (2)FTP客户端 请求 TCP(运输层) 用转换得到的 IP地址 建立连接。
- (3)TCP 发送一个连接请求 分段到远端的主机。即 给上述IP地址(某个接口) 发送一个IP数据报。
- (4) 假如 目的主机是在本地网络上(如 以太网,令牌环网 或者 点对点链路的另一端),那么IP数据报可以直接发送到目的主机。如果目的主机在一个远程网络,那么就通过 IP选路 来确定下一站路由器地址,并转发数据报。
这两种情况,IP数据报都是被送到位于本地网络的一台主机或者路由器上。
- (5) 假如 是一个以太网(Ethernet),那么发送端主机必须把 32 bit 的 IP地址 变换为 48 bit 的以太网地址。
从 逻辑 Internet 地址 到对应的 物理硬件地址(MAC) 需要进行翻译,这就是ARP的作用。
- (6)ARP发送一份称作 ARP请求 的 以太网数据帧 给以太网上的每一台主机。这个过程称作广播。
ARP请求:
Hello, 你好吗,我的 IP地址 是 ···,如果你是 ··· 这个 IP地址 的主人,请回答!
- (7)目的主机的 ARP层 收到这份广播报文之后,识别出这是发送端在询问它的IP地址,于是发送一个 ARP应答。这个 ARP应答 包括 IP地址 以及 对应的硬件地址。
ARP应答:
你好,我是 ··· IP地址 的主人,很高兴认识你,我的IP地址是 ··· ,我的硬件地址(MAC)是 ···。
- (8)收到 ARP应答 之后,使 ARP 进行 请求-应答交换 的 IP数据报 现在就可以开始传送了。
- (9)发送 IP数据报 到目的主机。
一个基本概念:网络接口有一个硬件地址(或者说是 链路层地址),知道主机的 IP地址 并不能让 内核(比如 以太网驱动程序) 发送一帧数据 给主机。内核必须知道 目的端的硬件地址 才能发送数据。
点对点链路 不使用 ARP。当设置这些链路的时候(一般为主机引导过程进行),必须告知内核 链路每一端 的 IP地址。
4.3 ARP 高速缓存
每个主机上 都有一个 ARP高速缓存,这是 ARP高速运行的关键。
这个高速缓存 存放了 最近 Internet地址 到 硬件地址(MAC) 的 映射记录。
生存周期一般为 20分钟,起始时间 从被创建时算起。
第四章 其他的知识
ARP代理 :如果 ARP请求 是从一个网络的主机 发送往另一个网络的主机,那么连接这俩网络的路由器就可以回答该请求,这个过程称作 ARP代理 或者 委托ARP。这样可以欺骗 发起 ARP请求的发送端。
免费ARP :ARP的特性,它是指主机发送 ARP 查找自己的IP地址。
- 一个主机可以通过它来 确定 另外一个主机 是否设置了 相同的 IP地址。
- 如果发送 免费ARP 的主机刚好改变了硬件地址(很可能是主机关机了,并换了一块接口卡,这样硬件地址就改变了,并重新启动),那么这个分组就可以 使其他主机的高速缓存中 旧的硬件地址,进行相应的更新。
其他内容拾遗
ICMP
ICMP 经常被认为是 IP层 的一个组成部分。它 传递差错报文 以及其他需要注意的信息。
ICMP 是在 IP数据报 的内部 被传输的。
在后面的 IP选路 中,我们能够看到 ICMP主机或者网络不可达差错,ICMP 重定向报文,ICMP路由器发现报文。
Ping 程序
目的是为了 测试另一台主机是否可达。
Traceroute 程序
Traceroute 程序能够使我们看到 IP数据报 从一台主机 传到 另外一台主机 所经过的 路由。
2016/7/29
【TCP/IP详解 卷一:协议】第四章 ARP:地址解析协议 以及其他部分的一些知识的更多相关文章
- TCP/IP详解 卷一(第四、五章 ARP、RARP)
数据链路如 以太网都有自己的寻址机制(MAC)地址,而IP层使用的是IP地址. 当一台主机把以太网数据发送定位于同一局域网上的另一台主机时,是根据MAC地址来确定目的接口的.设备驱动程序从不检查IP数 ...
- TCP/IP详解 卷一(第三章 IP:网际协议)
IP是TCP/IP协议族中最为核心的协议.所有的TCP.UDP.ICMP及IGMP数据都以IP数据报格式传输. IP提供不可靠.无连接的数据报传送服务. 1.不可靠:就是它不能保证IP数据报能成功地到 ...
- TCP/IP详解 卷一(第十三章 IGMP:Internet组管理协议)
本章将介绍用于支持主机和路由器进行多播的Internet组管理协议(IGMP) 它让一个物理网络上的所有系统知道主机当前所在的多播组.多播路由器需要这些信息以便知道多播数据报应该向那些接口转发. 跟I ...
- TCP/IP详解 卷一(第十一章 UDP:用户数据报协议)
UDP是一个简单的面向数据报的运输层协议. UDP不提供可靠性:它把应用程序传给IP层的数据发送出去,但是并不保证它们能到达目的地. UDP首部的个字段如下图所示
- TCP/IP详解 卷一(第六章 ICMP:Internet控制报文协议)
ICMP是(Internet Control Message Protocol)Internet控制报文协议. 用于在IP主机.路由器之间传递控制消息.控制消息是指网络通不通.主机是否可达.路由是否可 ...
- TCP/IP详解 卷一(第十七章 TCP:传输控制协议)
与UDP协议相比,TCP提供一种面向连接的.可靠的字节流服务. TCP首部 跟UDP一样,TCP数据被封装在一个IP数据报中,下面显示TCP的首部数据格式 每个TCP段都包含源端和目的端的端口号,用于 ...
- 『TCP/IP详解——卷一:协议』读书笔记——10
2013-08-22 22:57:17 3.8 ifconfig命令 这个命令在Linux系统下可以通过下面的指令阅读说明文档: ifconfig 由于书中作者用的系统比较早的某Unix系统,所以我的 ...
- 『TCP/IP详解——卷一:协议』读书笔记——01
从今日起开始认真研读TCP/IP详解这本经典制作,一是巩固我薄弱的计算机网络知识,二来提高我的假期的时间利用率.将心得与思考记录下来,防止白看-哦耶 2013-08-14 18:47:06 第一章 概 ...
- 【TCP/IP详解 卷一:协议】第二章:链路层
2.1 引言 链路层的三个目的: (1)为IP模块发送和接收IP数据报. (2)为ARP模块发送ARP请求和接收ARP应答.地址解析协议:ARP. (3)为RARP模块发送RARP请求和接收RARP应 ...
- 【TCP/IP详解 卷一:协议】第十二章 广播和多播
建议参考:广播和多播 IGMP 12.1 引言 IP地址知识点回顾: IP地址分为三种:(1)单播地址 (2)广播地址 (3)多播地址 另外一种是,IP地址一般划分成五类:A-E类. 单播 考虑 类似 ...
随机推荐
- ubuntu设置目录容量大小
1:方法如下 sudo dd if=/dev/zero of=/root/disk1.img bs=2M count=10 // 2M*10=20M zero 是de ...
- Gson的两种解析用法
第一种. 常见的解析,直接将json字符串解析为对应的类. public JavaBean getJsonString(String jsonString) { Gson gson = new Gso ...
- linux命令:locate
1.命令简介 locate(locate) 命令用来查找文件或目录. locate命令要比find -name快得多,原因在于它不搜索具体目录,而是搜索一个数据库/var/lib/ml ...
- Centos7 Zabbix3.2集群安装
安装环境:服务器10.80.0.191作为zabbix-server,10.80.0.191-195作为zabbix-agent. [zabbix@miyan ~]$ cat /etc/redhat- ...
- ssh 远程执行命令
SSH 是 Linux 下进行远程连接的基本工具,但是如果仅仅用它来登录那可是太浪费啦!SSH 命令可是完成远程操作的神器啊,借助它我们可以把很多的远程操作自动化掉!下面就对 SSH 的远程操作功能进 ...
- javascript unicode与GBK2312(中文)编码转换示例
一个javascript的unicode与GBK2312编码相互转换的方法. 代码: var GB2312UnicodeConverter = { ToUnicode: function (s ...
- Pycharm上python3运行unittest无法生成测试报告
原文地址https://www.cnblogs.com/yoyoketang/p/7523409.html 前言 经常有人在群里反馈,明明代码一样的啊,为什么别人的能出报告,我的出不了报告:为什么别人 ...
- java多态性方法的重写Overriding和重载Overloading详解
java多态性方法的重写Overriding和重载Overloading详解 方法的重写Overriding和重载Overloading是Java多态性的不同表现.重写Overriding是父类与子类 ...
- canvas实现验证码功能
我们在做一些后台系统登录功能的时候,一般都会用到验证码,最多的就是后台生成的验证码图片返回给前端的.也可以不调用后端接口,前端使用canvas直接生成验证码. 由于功能过于简单,不需要多少代码和文字说 ...
- 浏览器内核控制标签meta说明
由于众所周知的原因,国内的主流浏览器都是双核浏览器:基于Webkit的内核用于常用网站的高速浏览,基于IE的内核主要用于部分网银.政府.办公系统等网站的正常使用.以360浏览器为例,我们优先通过Web ...