第五章 有关IP协议的技术

  • Post author:
  • Post category:其他



目录


概述


重要提示


DNS  域名系统服务


DNS 的产生


域名结构


ARP 地址解析协议


ARP 何方神圣


ARP工作机制


ICMP 网络控制报文协议


辅助IP的 ICMP


主要的ICMP 消息


其他的ICMP 消息


ICMPv6


DHCP 动态主机分配协议


实现即插即用的技术


DHCP 的工作机制


DHCP中继代理


NAT 网络地址转换服务


NAT的定义


NAT 的工作机制


NAT-PT(NAPT-PT)


解决问题的办法和 NAT 穿越


IP隧道


其他相关技术


IP多播技术


IP任播


通信质量控制


Moblie IP


尾声


概述

IP协议目的是让目标收到数据包,但仅仅只有IP 协议还不足以实现这个看似简单而实际却复杂的多的问题,所以这一章我们来聊一聊为了让IP实现它的目的所用到的其他技术 比方解析驻京 mac 地址解析  异常处理 等等

重要提示

我们前面已经知道了 IP 如何实现数据包传输到目标的。但实际应用中,我们发现,几乎没有人直接使用IP 地址通信的,比方我访问网站 输入的一个叫域名的网站名称,发送电子邮件 也仅需要输入对方电子邮件地址,

在者 具体到链路内部也就是局域网内部 也不识别IP 而是靠mac 通信的。IP数据包路由到本链路 非依靠链路内部传输才能最终到达目的。于是我们发现一个重要的实施,仅仅凭IP 并不能很好的服务,我们还需要更多支持IP协议的技术和服务

所以这一章我们来聊一聊 包括 DNS  ARP  ICMP  DHCP  NAT  等众多技术 以及 IP隧道  多播  任播  质量控制  拥塞显示和 Mobile IP 技术

DNS  域名系统服务

或者我们会有这样的疑惑,在TCP/IP 的互联网世界中访问一台主机需要使用IP 地址。但是我们访问百度时候却输入 www.baidu.com  这个叫域名的东东,并没有写上百度的IP地址,那是为什么呢? 这是因为 有个DNS 服务器将你的域名翻译成了对应的IP 地址从而访问的服务器。

DNS 的产生

其实TCP/IP 一开始就发现 访问输入IP 地址非常不便  这东东比电话号码都难记。所以一开始人们就给主机一个识别码 就是主机名,每个主机一个还不能重复。这个主机名和它的ip 地址的对应关系保存在一个 host 文件中。访问的时候 系统必须将主机名翻译成IP 地址通信。但是后来连入互联网的主机越来越多,维护这个host 文件也越来越困难 查找也不方便,于是人们发明了 DNS 服务器 专门用来解析或者翻译IP 地址和对应主机名。

在互联网上 主机名和IP地址是需要专门注册登记的,不是随便乱来。如果需要变更也要在注册登记的机构重新更改。这样才能使得互联网任何一个地方可以用主机名访问到你。那么DNS 具体怎么维护这么庞大的互联网主机域名和IP地址的呢,这就要看他的结构了。

域名结构

我们上面说的主机名 在 DNS 中叫域名。 域名是有层次性的 具体 如: www.baidu.com  从后往前来  com  叫顶级域 代表 不同的组织。顶级域在国内有两种。

一种是组织域, 比方 com代表公司   edu  代表教育机构   gov 代表政府机构。 一种是国家域名比方 cn  表示中国  jp 表示日本  uk 表示英国等   baidu 是二级域名 这个域名可以由公司或者个人申请,但不能重复。   www 才是主机名。

其实在 com 之后还有一个 “.”  这个点 表示根域。我们不需要输入 ,系统会自动加上。DNS 域名的层次性  看起来就像一棵倒挂的树,有服务器专门解析 顶级域名  由服务器专门解析  二级域名 这样的方便管理和维护的


域名服务器

指的是管理域名的主机和相应的软件,单独管理所在层的域名信息。上面说了每一层都设有一个域名服务器解析本层域名,如果要做相应的改动和添加也要从上层之下层统一进行维护。那么当其中一层服务器宕机了,是不是就不能整个这一层的内容了呢,显然,所以一般为了提高容灾能力,每层会设置两台以上的域名服务器

DNS 查询方式

那么DNS 具体是如何查询的呢? DNS 查询方式有两种 一种叫做递归查询,一种叫做迭代查询。

递归查询很简单,我问你,你给我一个回应 成功或者失败。这就是递归,递归不一定得到结果,但一定马上回复结论 查到没有。

迭代查询就比较复杂,迭代查询对方不会 告诉的结果而是告诉你 下一步去问谁,给你指条明路,然后你去问那个人,那个人可能也没有最后结果,他也告诉你下一步找的人 ,就这样一层层问下得到最后结果。因为每一层解析它所在层的东西。这样逐一解析下来的。

另外DNS 查询还可以分为 正向查询和反向查询。 正向查询是 由域名解析为IP 地址  反向是由IP 地址找域名。

在DNS 系统中为了解析方便存在各种不同的记录,比方正向解析用 A 记录 反向用 PTR 记录,邮件服务 有 MX 记录。 下表列出了比较常用的记录相关信息。

ARP 地址解析协议

ARP 何方神圣

路由器使用IP 地址的网段地址来选择路径,将数据转发到对应的目标链路,但在链路内部却并不是用IP 寻址找到目标的而是网卡地址,也就是mac 地址。那么这就需要通过IP 知道对方的mac 地址。这个活就是交给ARP 干的。

ARP (Address Resolution Protocol )地址解析协议, 将已知的IP 地址解析为对应主机的mac 地址。 ARP 只适用于 IPv4  v6 可以用ICMPv6 代替ARP 。

ARP工作机制

那么ARP 如何工作的呢。利用arp 请求和 arp 回应两种包实现的。具体我们看下图

主机A 想要得到主机B 的mac 地址 先要发一个arp 请求包,里面包含了B 主机的IP 地址 ,和自己的mac 。这个包以广播方式发送到链路内,链路内所有主机都受到 那么B 主机收到后得知是找自己,于是将自己的mac 地址包含到arp 的回应包中发给A 主机,这样A 就获得了B 的mac  实现通信。其他主机收到 但不是找自己的 正常情况下也就不会回应。

但是如果每一次发送数据都要来一次 arp 沟通,也挺浪费之间和带宽的,于是人们同时设计了arp 缓存表,将第一次arp 获得的对应mac和ip   记录到缓存表中.让他保存一段时间。这样有效的节约了通信时间,当保存时间过后再重新获得一次,也可以防止 mac主机对应的ip 地址变换,造成通信失败。

RARP 和代理ARP


RARP(Reverse Address Resolution Protocol)

是ARP的反向。从mac 地址来定位IP地址。比如将打印机服务器等嵌入式设备接入网络时,会用到。

因为 嵌入式设备,没有任何输入平台,也无法通过DHCP 动态获得IP 地址,此时我们配置一台RARP 服务器,并注册设备的mac 及ip  然后将嵌入设备接入网络,设备就会发一条 我的mac 是多少多少,请告诉我,我的IP应该是多少。 RARP 服务器收到这个消息后回复 mac地址为多少多少的设备,IP 地址为多少多少 这样的信息。这样设备就获得了IP


代理ARP,

通常arp 广播是无法穿越路由器的。后来人们在路由器上采用 代理ARP (Proxy ARP ) ,可以将arp 包转发到其他链路。这种代理ARP 对于那些不支持设定子网掩码的老设备来说是很好的辅助上网方式。

ICMP 网络控制报文协议

辅助IP的 ICMP

IP 网络工作通信中还有两点需要我们特点关注,就是网络是否正常,畅通。 如果遇到异常该如何诊断。对此人们通过ICMP 协议解决。

ICMP (Internet Control Message Protocol )  网络控制报文协议。用来检测网络通断。具体功能包括: 确认IP包是否成功送达目标地址,并通知发送过程中IP包被废弃的具体原因。通过它我们可以知道网络是否正常,以及异常的原因。

ICMP 消息大致可以分为两类, 一类是通知出错原因的错误消息, 一类用于诊断的查询消息

主要的ICMP 消息


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

,无法将数据包送达给目标主机。提出: Destination Unreachable Message 目标不可达,不可达的原因可能很多,后面根据具体错误号可以具体判断为何不可达,比方 错误号 1  指路由表中没有次目标的路由信息,或者该主机未连接到网络。


ICMP重定向消息 (类型5)

. 如果路由器发现源端使用了次优路径发送数据,则返回一个ICMP重定向 ICMP Redirect Message  消息给主机,消息包含了最合适的路由信息和数据。但是很多情况i下 这种重定向 也不一定靠谱 回应发其他问题。


ICMP 超时消息 (类型11)

就是 IP 包头的TTL 值  每经过一个路由器减一,减到零 数据都丢弃了 还没有发送到目标,这种情况下ICMP 返回超时消息 ICMP Time Exceeded Message 错误号 0


ICMP 回送消息 (类型0,8)

用于进行通信的主机或路由器之间,判断所发送的数据包是否已经成功到达对端的一种消息,或者接受对端主机发回来的会送应答消息。我们常用的ping 命令即可实现。

其他的ICMP 消息


ICMP 原点抑制消息

(类型4)用来缓解广域网中网络拥堵问题。 路由器遇到拥堵时,向源端发送原点抑制消息,收到消息的主机知道了拥堵就会间隔传输。但一般不用,容易引起不公平网络通信。


ICMP 路由探索消息

(类型9、10)主要用于发现按与自己相连的网络中路由器。


ICMP 地址掩码消息

(类型17,18)用于主机或路由器想要了解子网掩码的情况,也是通过此类请求和应答实现的。

ICMPv6

在v6 中ICMP 作用被扩大 可以代替 v4中的ARP ,所以v6 中必须有。v6 中,IP地址定位MAC 地址的协议从ARP转换为 ICMP 的邻居探索消息。这种探索消息融合了v4 的ARP  ICMP重定向以及ICMP 路由器选择消息等功能于一体。甚至还提供了自动设置IP地址的功能。

ICMPv6 将ICMP 法制分为两大类,一是错误消息,意识信息消息。


邻居探索

从类型 133 到137 的消息属于邻居探索消息,包括请求查询v6 地址与mac 地址的对应关系,相当于 arp ,邻居请求是通过多播地址实现的。

此外 IPv6 实现了即插即用。在没有DHCP 服务器的环境中也能实现v6 地址的自动获得。如果网络中没有路由器 就使用mac 地址作为链路本地单播地址。 如果有路由器,从路由器上获得IPv6 地址的前面部分,后面部分由mac地址设置。

DHCP 动态主机分配协议

实现即插即用的技术

配置IP 地址给主机是一件很繁重的工作,特别是主机数庞大的情况下。而且还不能重复。 这还是起初,比方说我们的移动设备难道要没换一个wifi 就改一次地址吗。 显然不行。于是人们发明了 DHCP 可以实现 设备连入网络自动地址  实现即插即用


DHCP (Dynamic Host Configuration Protocol) 动态主机分配协议

,应用在大型链路网络中 为局域网内的所有主机和网络设备提供IP参数,(包括 IP地址 子网掩码  网关 和 DNS 服务器地址)

DHCP 的工作机制

DHCP 的实现需要一台DHCP 服务器 服务器提供地址,网络内的其他计算机属于客户端,需向服务器提供请求。

过程是这样的: 首先客户机开机发送  Discover 广播包 在局域网内寻找DHCP 服务器,请求地址。 DHCP 服务器收到后从自己地址池里选一个地址,附带租期放到offer 包中发给对方,问对方要不要。对方收到后 如果接受发 Requeset 包,表示可以接受。DHCP 服务器将这个地址标记不再给别的主机分配,然后给对方回一个 ACK 表示确认。之后主机就ww可以使用这个分配的地址。

DHCP中继代理

总结上诉DHCP 的工作原理,不难发现,DHCP 分配地址的这个过程 客户机和服务器都用的是广播包,而广播包无法穿越路由器,那么在一个企业或者公司里面,一般按照部门不同分配不同的网络,难道要每个网络里面配置一台dhcp 服务器吗, 这显然也不合适。

于是人们使用DNCP 代理 。多个网络中只需要一台DHCP   而在其他网络中配置代理,客户端发送DHCP中继代理,而代理则以单播方式发送给DHCP 服务器,DHCP 服务器再回应代理服务器,再由代理转发客户。这样就可以实现DHCP服务器为不同链路网络分配地址。

NAT 网络地址转换服务

NAT的定义


NAT(Network Address Translator)  网络地址转换

, 实现将内网私有地址转换为公网地址,和互联网络互通的一种技术。它主要是为了应对Iv4地址不足设计的,而在IPv6 中为了提高网络安全也可以使用。

NAT 的工作机制

NAT 的工作机制相对简单,当内网地址访问外网时,在路由器端将源地址转换为公网地址传出去,返回来后路由器再将目标地址转换为内网私有地址送达链路的私网主机。

NAT 路由器中保存着一张自动生成的用来转换地址的表,方便路由器做对应的转换。

当内网多个主机同时访问外网时,人们还可以直接使用一个外网地址来应对,具体就是转换时加上了端口号,内网不同的地址加端口号对应一个外网地址加不同的端口号 加以区分。这就是

NAPT (Network Address Port Translation) 网络地址端口转换技术

NAT-PT(NAPT-PT)

NAT-PT(NAT-Protocol Translation )nat 的 协议转换,实现互联网服务无论在IPv4 和 IPv6上都能正常实现,畅通无助。 它是将 IPv6 的首部转换为IPv4 的首部的一种技术。有了这种技术 只有IPv6地址的主机也能够与IPv4 地址的其他主机通信。

NAT 的潜在问题和解决办法  与NAT穿越


NAT 存在的问题

无法从nat 外部向内部服务器建立连接

转换表生成和查询产生开销

一旦nat 异常将重启,TCP 所有连接重置

即使备份两台NAT 容灾 TCP 也会断开

解决问题的办法和 NAT 穿越

解决问题的办法有两种,

一种是使用IPv6 地址

,这个地址范围很大,完全可以给每一台设备分配一个公网地址,于是就无需使用NAT 技术了。


另一种方法是使用NAT 穿越

。就是即便是一个NAT 环境,用户也可以完全忽略NAT 通信。 具体来说就是在nat 内网主机的应用为了生成nat转换表,向NAT 外网发一个虚拟网络包,应为路由器并不知道这个包究竟是什么 而正常读取首部 并生成一个转换表。

如果转换表正确,就可以实现NAT外网和内网之间的通信。 此外 应用还可以与NAT 路由器进行通信而生成NAT表,通过一定的方法将NAT路由器上附属的全局IP地址传给应用。

IP隧道

如果有这样的网络A和B 都是IPv6 网络 直接通信是没有问题的,但如果A和B之间夹了个IPv4 网 这样,A和B 就不能直接通信了。那么如何让他们正常通信呢,我们使用IP 隧道


IP隧道

,就是在网络层首部也就是 IP包首部在追加一个首部的通信方式。具体到我们上面哪个例子,就是在A发过来的IPv6 包的基础上再给他加一个IPv4 的包头在 IPv 的C网络中传输,然后交给B 网络

IP隧道的好处是显而易见的,因为如果我们构造一个同时支持v6和v4 Definitely网络是个庞大的工程,这样仅仅路由表就要增加两倍,加重的网络管理员的负担。而让路由器支持两种协议也比较费劲,所以我们让路由器随便支持一种,然后通过IP隧道联通彼此大大减少了路由器和管理员的负担。

另外IP隧道也可以用来转发多播信息。  目前很多路由器没有多播包的路由控制 多播消息无法穿越路由器发送。于是使用IP隧道 让路由器用单播的方式发送,来实现远距离链路转发多播信息

其他相关技术

IP多播技术

前面我们讲过多播 或者叫组播,实际上就给一个链路中特定的数个主机发送消息。要实现IP 地址多播需要用到 IGMP (Internet Group Management Protocol)  网络组管理协议的  MLD 多播监听 机制来实现。无论v4 还是v6


具体IGMP  多播监听机制的两大作用

1,向路由器表明想要基尔兽多播消息

2,向交换机通知想要接受多播的地址

第一个作用中 路由器会将会了解到接受多播的主机信息,并通知i其他路由器。

第二个作用 交换机知道具体的接受多播的地址和对应端口,就无需给其他不接受的端口发送,大量减少了和无关端口的通信,可以提高交换机的处理效率。

IP任播

任播就好像打 110 或者119 ,当我们拨打110 的时候接受电话并不只是一个,而是可以拨打到一个区域管辖范围内的所有公安机关。

IP任播就是指为了提供同一种服务的服务器配置同一个IP 地址,方便最近的服务器连接。同样只用于v4 和 v6.

任播技术最著名的应用当属DNS 根域名服务器,因为DNS根域服务器 只有13种类型,要让更多的DNS 根域名服务器散布到世界各个角落,使用任播地址是对方便的。

任播也由不足, 首先它无法将第一个包和第二个包都发给同一台主机。这种情况如果面对面向连接的TCP 通信就很难做好了。

通信质量控制

起初IP设计初衷就是一个尽力而为的协议,意思是我尽力给你传过去 如果传不到 也没办法 我尽力了。如此一来如果我们访问一些网站或者视频什么 访问量太多导致线路拥堵的话,IP数据包成功转发的可能性就大大降低,影响了用户体验。为了解决这个问题,特别是近年来的音视频服务的高要求。IP通信中的 Qos 服务质量技术就大受欢迎起来。具体有一下几种


控制通道质量的机制



这个就类似于高速公路上的VIP 通道。对于需要保证的通信包 路由器特殊优先处理。

通信质量包括 带宽 延迟 和时延波动等,为了控制它 人们提出了 RSVP  叫资源预留协议。 它包括

IntServ

提供点对点的详细优先控制  另一个是

DiffServ

提供相对较粗粒度的有优先控制


IntServ

是正对特定应用之间的通信进行,也是在特定的时间。这时路由器会根据具体的设定来对包进行针对性处理


DiffServ

则是针对特定的网络进行粗粒度的通信控制,比如针对某个特定的供应商


显示拥塞通知

当网络发生拥塞时 发送端应该减少发送的数量,那么主机如何确定发送了拥塞。解决这个问题的办法就是在IP 层新增一种拥塞通知机制  ECN(显式拥塞通知)

概括起来就是发送包的IP 首部记录路由器是否遇到拥塞,并返回包的TCP首部中通知是否发送拥塞。也就是说拥塞检查在网络层,而通知拥塞在传输层。两层互相协助实现了拥塞通知功能


Moblie IP

我们现在有大量的智能手机和平板  笔记本等移动设备参与互联网。可以想象,一台手机在不同的位置下可能连接的是不同的无线局域网,或者说链路网路,也就连到了不同的子网,这样的结果将导致无他通过TCP 继续通信,因为TCP作为面向连接的协议,必须保证通信的整个过程双方ip地址不变。为了解决这个问题  Mobile IP应运而生。

Mobile IP 如何工作呢 先看下图:

使用Mobile IP 的移动书记,在移动之前按照常规模式通信,当移动之后,就需要通过外部代理发送转发数据包给归宿代理 通知自己的地址。这样在用户看来 移动设备使用使用归属地址进行通信,而实际上 是通过外部代理转交地址转交数据包的。


移动主机

就是指我们的移动设备, 起初 连接的网络叫

归属网络

, IP地址叫

归属地址

。移动之后 的通信需要一个

外部代理

将新的地址转发给归属代理,

归属代理

就是处于归属网络中的服务,用来监控移动设备位置,接受外部代理的转发地址和转发数据包。

IPv6 在 Mobile 中的改进

IPv4 的移动ip 有很多问题,比方 必须要有外部代理  整个转换和转发效率不高  还有安全问题,这些在IPv6 中有很好的改进:

1,外部代理功能由 市县的移动主机承担

2,不用经过归属代理直接通信

3,首部源地址中赋予移动地址,防火墙不会丢弃

尾声

好  这一章的内容我们就聊到这里,这一章主要和大家聊了聊IP 协议相关的服务业技术,因为IP 协议不能单枪匹马的单干,还需要众多的支持者和朋友一起来完成工作,充分体现了合作的精神。比方我们的ARP  DHCP  DNS NAT  包括ICMP 这些都是重点内容在不同方面给与IP 很大支持。后面的其他技术我们以了解为主很多也是新的 比方任播  移动ip  等等。那么到目前我们网络层的东西基本聊差不多了,下章我们来聊聊传输层。欢迎大家留言讨论。

(内容和图片参考和来源于《图解TCP/IP》 第五版 人民邮电出版社  特表谢意)



版权声明:本文为weixin_62585159原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。