zoukankan      html  css  js  c++  java
  • 【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

  • 相关阅读:
    实现iFrame自适应高度,原来非常简单!
    ajax document.write 问题
    [转]JavaScript为事件处理器传递参数
    开源手机自动化测试框架iQuery入门教程(一)
    Visual Studio的Web Performance Test提取规则详解(1)
    .Net最佳实践3:使用性能计数器收集性能数据
    Visual Studio进行Web性能测试 Part III
    Visual Studio进行Web性能测试 Part II
    Visual Studio进行Web性能测试 Part I
    扩展iQuery使其支持多种编程语言(上) – 兼编译器的词法分析简介
  • 原文地址:https://www.cnblogs.com/qq952693358/p/5719892.html
Copyright © 2011-2022 走看看