仅凭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地址设置。

TCP-IP-part7-IP协议相关技术(一)的更多相关文章

  1. TCP/IP笔记(五)IP协议相关技术

    IP旨在让最终目标主机收到数据包,但是在这一过程中仅仅有IP时无法实现通信的.必须还要又能够解析主机名称和MACdivide功能,以技术包在发送过程中异常情况处理的功能. 这篇主要介绍下DNS.ARP ...

  2. 【前端童鞋看过来!】给大家分享网盘里前端相关书籍,主要是和网络通信(HTTP/TCP/IP)及javascript相关的

    百度云链接:https://pan.baidu.com/s/1kUPdf5H(无密码) 截图: <HTTP权威指南> [豆瓣书评]:此书第一部分是HTTP的概略,如果你没有时间,通读第一部 ...

  3. Ripple 20:Treck TCP/IP协议漏洞技术分析

    本文由“合天智汇”公众号首发,作者:b1ngo Ripple 20:Treck TCP/IP协议漏洞技术分析 Ripple20是一系列影响数亿台设备的0day(19个),是JSOF研究实验室在Trec ...

  4. TCP/IP 笔记 - 地址解析协议

    地址解析协议(ARP)提供了一种在IPv4地址和各种网络技术使用的硬件地址之间的映射.ARP仅用于IPv4,IPv6使用邻居发现协议,它被合并入ICMPv6.地址解析是发现两个地址之间的映射关系的过程 ...

  5. TCP/IP 和HTTP 协议基础知识

    来源:http://www.myhack58.com/Article/60/63/2014/50072.htm 相信不少初学手机联网开发的朋友都想知道Http与Socket连接究竟有什么区别,希望通过 ...

  6. TCP/IP和HTTP协议代理

    TCP/IP协议族 TCP/IP(传输控制协议/网际协议)是用于计算机通信的一个协议族. TCP/IP协议族包括诸如Internet协议(IP).地址解析协议(ARP).互联网控制信息协议(ICMP) ...

  7. 浏览器解析,HTTP/HTTPS、TCP/IP、WebSocket协议

    浏览器相关 浏览器对同一个域名有连接数限制,大部分是 6. 浏览器指的是 Chrome.Firefox,而浏览器内核则是 Blink.Gecko,浏览器内核只负责渲染,GUI 及网络连接等跨平台工作则 ...

  8. http与https与socket tcp/IP与UDP 协议等

    网络由下往上分为:   物理层--                       数据链路层-- 网络层--                       IP协议 传输层--               ...

  9. 在计算机通信中,可靠交付应当由谁来负责?是网络还是端系统? 网络层协议 MAC帧、IP数据报、TCP报文 关系 IP地址与硬件地址 链路层与网络层

    小结: 1. 网络层两种服务 虚电路服务 virtual circuit  电信网 网络层负责可靠交付 数据报服务  网络层不负责可靠交付 提供灵活的.无连接的.尽最大努力交付的数据报服务 不提供服务 ...

随机推荐

  1. ORBSLAM2的资源

    ORBSLAM2代码总结 https://blog.csdn.net/hzwwpgmwy/article/details/82462988 ORBSLAM2局部地图更新实现 https://blog. ...

  2. setTimeout()执行时序

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xht ...

  3. RL78 定义常量变量在指定的地址方法

    若想定义的常量地址在远端寻址,定义section段时  如定义MCU_INFOR段  则段名为MCU_INFOR_f   后缀需要添加f,近端寻址添加n. 程序中定义常量 需要使用#pragma  指 ...

  4. Unable to cast object of type 'System.String' to type 'System.Int32'.

    原因 数据库中 code 字段 类型为 varchar 而实体的类型为 int  导致string 类型无法转化为int 类型而报错 public int code { get; set; } 参考: ...

  5. @interface 注解详解

    转:http://www.cnblogs.com/xdp-gacl/p/3622275.html 只为成功找方法,不为失败找借口! Java基础加强总结(一)——注解(Annotation) 一.认识 ...

  6. xianduanshu

    https://www.cnblogs.com/xenny/p/9739600.html ***************https://blog.csdn.net/shiqi_614/article/ ...

  7. idea整合mybatis逆向工程

    --pom.xml添加插件 <build> <finalName>hnapi</finalName> <plugins> <plugin> ...

  8. 我是如何在四年时间里,从厨师转行为 Serverless 应用开发者

    ▎本文系译文,我的软件开发入行经历非常有趣 -- 我一开始其实是厨师. 作者:KieranMcCarthy 译者:Aceyclee 我在高中时就喜欢烹饪和烘焙,用不同食材的搭配去做出美味的食物,就像个 ...

  9. vue点击复制文本粘贴

    <template>  <ul>      <li> <input type="text" class="inpNone&quo ...

  10. Resin介绍及其使用配置

    Resin介绍及其使用配置一 Resin是一个提供高性能的,支持 Java/PHP 的应用服务器.目前有两个版本:一个是GPL下的开源版本,提供给一些爱好者.开发人员和低流量网站使用:一种是收费的专业 ...