zoukankan      html  css  js  c++  java
  • TCP-IP-part7-IP协议相关技术(一)

    仅凭IP是无法完成通信的,需要一些IP的辅助技术。这些技术的包格式可能不一样,但它们都是基于IP地址进行的,都是通过匹配路由表来进行的,只是功能不一样。例如DHCP分配IP地址,它只管通知这条信息,具体怎么分还要依靠上层。

    TCP/IP相关内容第七部分,包含:

    • DNS
    • ARP
    • ICMP

    一、DNS

    IP地址不好记,我们希望用主机名代替。DNS负责将主机名转换为具体的IP地址。

    早期的方法是集中管理一个大型的数据库,所有主机都要下载这个文件,更新主机名和地址的时候要通知所有人,非常麻烦。
    现在用DNS维护一个用来表示组织内部主机名和IP地址之间对应关系的数据库。地址和主机名的变更只需要在组织机构内部进行即可,不需要向别的机构申请或报告。较小的范围内通过DNS管理主机名映射,很方便。

    域名的构成

    域名是指为了识别主机名称和组织机构名称的一种具有分层的名称。在使用域名时,可以在每个主机名后追加上组织机构的域名。主机名重合,但只要组织机构域名不重合就可以。

    分层结构呈树状结构,顶点是根,下一层第一层域名包括国家域名和特定机构域名(如所有美国教育机构.edu、所有美国企业.com),在下一层可以是地域的通用域名,或是不同组织机构的属性域名。

    域名服务器

    每层域名都有一个域名服务器,实质上是个软件。每个域名服务器都有一个IP地址,本层的域名服务器都了解(注册了)本域内下层域名服务器的IP地址,直到再无下一层域名,就可以连主机,指定主机名给IP地址了。另外,每个域名服务器必须注册所在区域的根域名服务器的IP地址(全球共13个),在查找非本域的时候从跟开始。

    为了提高容灾能力,一个域名至少设置两个以上域名服务器。

    解析器

    解析器,即需要进行DNS查询的主机,就是你的电脑。其至少要注册一个以上的域名服务器IP地址,解析器不仅可以访问本域名中的域名服务器,也可访问其他域的域名服务器,进行域名查询。

    DNS查询

    解析器相域名服务器申请查询,域名服务器会先在自己的数据库查找,没找到则相跟域名服务器申请查询,从上往下顺序遍历,找到返回。解析器和域名服务器都有缓存,可以保存最新了解到的信息,可以减少查询。

    DNS不仅保留主机名和IP地址的映射,也保留了其他如邮件地址等映射。

    二、ARP

    主机发送IP数据包,封装成帧时的目的MAC只是同一个数据链路上的节点的MAC,甚至同一个链路上也可能只知道IP,不知道MAC。

    用来根据IP地址查询MAC地址。ARP只适用于IPv4,IPv6用ICMPv6替代ARP发送邻居探索信息。

    工作机制

    借助ARP请求和ARP响应完成。ARP发送的包格式与IPv4是不一样的,因此需要不同的程序去处理。

    起初通过广播发送一个ARP请求包,包中包含了目的主机的IP地址,在链路层,ARP包会被链路层默认封装成广播帧,在网络层,接收方默认认为ARP包是广播的,不想IP包目的IP要全1才是广播,才接受下来去解析。当解析后发现目的IP与自己的IP一致,则返回ARP响应包,里面有自己的MAC地址,目的IP是从请求包中了解到的。ARP包会被路由器隔离。

    IP地址和MAC地址的信息缓存一段时间,下次发送时会先查表,可以减少ARP查询。但要定时清楚缓存,要是不换的话IP可能已经更换了MAC设备,就不可达了。

    RARP

    与ARP相反。设置RARP服务器,设备发送自己的MAC地址给服务器,可以获得IP地址来设置。因为有些硬件设备不具备DHCP动态获取IP的功能,只能用RARP获取IP。

    大专栏  TCP-IP-part7-IP协议相关技术(一)tle="代理ARP">代理ARP

    通常ARP包会被路由器隔离,采用代理ARP可以将ARP请求转发给邻近的网段,使两个以上的网段节点像在一个网段上一样通信。

    三、ICMP

    起到辅助IP的作用,ICMP数据是放在IP首部的后面,就像TCP/UDP一样明文传输,因此是IP的上层协议,但它是为了分担IP的一部分功能,因此仍属于网络层。ICMP两大类型:

    1. 通知出错原因的错误信息
    2. 用于诊断的查询信息

    ICMP有多个消息类型,每个消息类型有自己的错误号来说明信息。

    1、主要的ICMP消息

    ICMP目标不可达信息(类型3)

    IP路由器无法将IP包发送给目标地址时,会给发送端主机返回一个目标不可达信息。错误号为1表示主机不可达,即找不到目的IP的MAC,ARP没人响应。错误号0表示网络不可达,即在路由表中找不到下一跳的IP。错误号4用于MTU发现,包不可分片。

    ICMP重定向信息(类型5)

    路由器发现发端主机使用了次优的路径发送路径,就返回一个ICMP重定向信息,包含更合适的路由信息。但路由信息并不包含子网掩码,因此主机追加更优路由信息时,只会以“主机路由”形式(/32)为这个目的IP地址追加下一跳路由信息,且在一定时间后自动清除。一般不进行重定向设置。

    ICMP超时信息(类型11)

    错误号0表示TTL减到0,IP包被抛弃,返回ICMP超时消息。错误号1表示路由器在规定时间内没有收到所有分片,重组超时。

    traceroute命令就是利用ICMP超时信息工作。显示到达特定主机之前经历多少路由器。原理是利用IP包生存周期从1开始递增,同时发送UDP包,强制接收超时消息。

    ICMP回送信息(类型0、8)

    可以向对端主机发送回送请求(类型8),主机收到后回复一个应答消息(类型0)。Ping命令就是用这个实现的。

    ICMP原点抑制信息(类型4)

    低速广域网时,WAN路由器遇到网络拥堵,会向源地址发送ICMP原点抑制信息。收到后主机打开IP包的传输间隔。一般不用。

    ICMP路由器探索信息(类型9、10)

    用于发现与自己相连网络中的路由器。主机发出ICMP路由请求(类型10),路由器返回公告消息(类型9)。

    ICMP地址掩码信息(类型17、18)

    主机或路由器向了解子网掩码情况。向目标主机或路由器发送ICMP地址掩码请求信息(类型17),收方返回地址掩码应答信息(类型18),收房获得子网掩码信息。

    2、ICMPv6

    同样分为错误消息和信息消息。IPV6中使用的ICMP,不再是辅助作用,而是不可缺少。IPV4中的ARP就是通过ICMPv6的邻居探索消息实现。

    邻居探索消息,类型133-137。用于查询IPv6地址和MAC地址的对用关系。采用多播地址传输。

    得益于IPV6用MAC地址作主机标识,IPv6也实现了即插即用,不需要DHCP服务器也能自动获取IP地址。在没有路由器的网络,就是用MAC地址作为链路本地单播地址。在有路由器的网络环境中,从路由器中获取前64bit,后64bit用MAC地址设置。

  • 相关阅读:
    Android测试工具 UIAutomator入门与介绍
    C#异步编程
    懒得找,存个笔记:easyui combogrid 下拉+关键字搜索
    mssql replace
    序列化类型为XX的对象时检测到循环引用
    shell脚本运行python命令
    python技巧
    边缘检测测评标准
    mybatis 手动生成可执行sql
    Linux如何扩容物理文件系统分区
  • 原文地址:https://www.cnblogs.com/lijianming180/p/12360830.html
Copyright © 2011-2022 走看看