网络编程(六)IP协议相关技术

一、DNS

由于IP地址不便于记忆,所以TCP/IP世界中从一开始就已经有了一个叫做主机识别码的东西。这种识别方式是指为每台计算机赋以唯一的主机名,在进行网络通信时可以直接使用主机名称而无需输入一大长串的IP地址。并且此时,系统必须自动将主机名转换为具体的IP地址。为了实现这样的功能,主机往往会利用一个叫做hosts的数据库文件。

image.png

DNS系统:可以有效管理主机名和IP地址之间对应关系的系统。

在这个系统中主机的管理机构可以对数据进行变更和设定。也就是说,它可以维护一个用来表示组织内部主机名和IP地址之间对应关系的数据库。

域名

域名是指为了识别主机名称和组织机构名称的一种具有分层的名称。

在使用域名时,可以在每个主机名后面追加上组织机构的域名,有域名的组织机构可以设置自己的子网,此时的子域名要介于主机名和域名之间。

举例:仓敷艺术科学大学的域名如下:

kusa.ac.jp

有pepper、piyo、kinoko等主机时,它们完整的带域名的主机名将呈如下形式:

pepper.kusa.ac.jp
piyo.kusa.ac.jp
kinoko.kusa.ac.jp

域名分层如下图所示:

image.png

如上图,是个树形结构,顶点是根(root),顶点的下一层叫做第1层域名(顶级域名(TLD:Top Level Domain)) ,在jp的域名下,还可以有众多种类的域名。

域名服务器

域名服务器是指管理域名的主机和相应的软件,它可以管理所在分层的域的相关信息,其所管理的分层叫做ZONE。

根部所设置的DNS叫做根域名服务器。它对DNS的检索数据功能起着至关重要的作用。根域名服务器中注册着根以下第1层域名服务器的IP地址。类似地,在根域名服务器的下一层域名服务器中注册了再往下一层域名服务器的IP地址。

解析器

进行DNS查询的主机和软件叫做DNS解析器。用户所使用的工作站或个人电脑都属于解析器。一个解析器至少要注册一个以上域名服务器的IP地址。通常,它至少包括组织内部的域名服务器的IP地址。

DNS查询

image.png

二、ARP

只要确定了IP地址,就可以向这个目标地址发送IP数据报。然而,在底层数据链路层,进行实际通信时却有必要了解每个IP地址所对应的MAC地址。

ARP(Address Resolution Protocol) 是一种解决地址问题的协议。以目标IP地址为线索,用来定位下一个应该接收数据分包的网络设备对应的MAC地址。如果目标主机不在同一个链路上时,可以通过ARP查找下一跳路由器的MAC地址。

不过ARP只适用于IPv4,不能用于IPv6。IPv6中可以用ICMPv6替代ARP发送邻居探索消息。

原理

主机A为了获得主机B的MAC地址,起初要通过广播发送一个ARP请求包。这个包中包含了想要了解其MAC地址的主机IP地址。由于广播的包可以被同一个链路上所有的主机或路由器接收,因此ARP的请求包也就会被这同一个链路上所有的主机和路由器进行解析。如果ARP请求包中的目标IP地址与自己的IP地址一致,那么这个节点就将自己的MAC地址塞入ARP响应包返回给主机A。

缺点:如果每发送一个IP数据报都要进行一次ARP请求以此确定MAC地址,那将会造成不必要的网络流量。

解决方案 :通常的做法是把获取到的MAC地址缓存一段时间。

IP地址和MAC地址是否缺一不可?

答案是肯定的。

在以太网上发送IP包时,“下次要经由哪个路由器发送数据报”这一信息非常重要。而这里的“下一个路由器”就是相应的MAC地址。没有MAC地址,则需要进行对MAC地址广播,会造成数据包重复发送。

IP可以通过路由控制快速的筛选,如果没有IP,则需要在全世界查找MAC地址。

RARP

RARP(Reverse Address Resolution Protocol)是将ARP反过来,从MAC地址定位IP地址的一种协议。例如将打印机服务器等小型嵌入式设备接入到网络时就经常会用得到。

对于使用嵌入式设备时,会遇到没有任何输入接口或无法通过DHCP动态获取IP地址的情况。在类似情况下,就可以使用RARP。

代理ARP

通常ARP包会被路由器隔离,但是采用代理ARP(Proxy ARP)的路由器可以将ARP请求转发给邻近的网段。由此,两个以上网段的节点之间可以像在同一个网段中一样进行通信。

在目前的TCP/IP网络当中,一般情况下用路由器连接多个网络时,会在每个网段上定义各自的子网,从而进行路由控制。然而,对于那些不支持设定子网掩码的老设备来说,不使用代理ARP,有时就无法更好地使用网络。

三、ICMP

架构IP网络时需要特别注意两点:确认网络是否正常工作,以及遇到异常时进行问题诊断。

ICMP正是提供这类功能的一种协议。

ICMP的主要功能包括,确认IP包是否成功送达目标地址,通知在发送过程当中IP包被废弃的具体原因,改善网络设置等。

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

image.png

image.png

四、DHCP

为了实现自动设置IP地址、统一管理IP地址分配,就产生了DHCP(Dynamic Host Configuration Protocol)协议。有了DHCP,计算机只要连接到网络,就可以进行TCP/IP通信。也就是说,DHCP让即插即用变得可能。而DHCP不仅在IPv4中,在IPv6中也可以使用。

五、NAT

NAT(Network Address Translator)是用于在本地网络中使用私有地址,在连接互联网时转而使用全局IP地址的技术。除转换IP地址外,还出现了可以转换TCP、UDP端口号的NAPT(Network Address PortsTranslator)技术,由此可以实现用一个全局IP地址与多个主机的通信 (通常人们提到的NAT,多半是指NAPT。NAPT也叫做IP伪装或MultiNAT。) 。

NAT(NAPT)实际上是为正在面临地址枯竭的IPv4而开发的技术。不过,在IPv6中为了提高网络安全也在使用NAT,在IPv4和IPv6之间的相互通信当中常常使用NAT-PT。

六、IP隧道

网络A、B使用IPv6,如果处于中间位置的网络C支持使用IPv4的话,网络A与网络B之间将无法直接进行通信。为了让它们之间正常通信,这时必须得采用IP隧道的功能。

IP隧道中可以将那些从网络A发过来的IPv6的包统和为一个数据,再为之追加一个IPv4的首部以后转发给网络C。

一般情况下,紧接着IP首部的是TCP或UDP的首部。然而,现在的应用当中“IP首部的后面还是IP首部”或者“IP首部的后面是IPv6的首部”等情况与日俱增。这种在网络层的首部后面继续追加网络层首部的通信方法就叫做“IP隧道”。


文章内容摘自:图解TCP/IP(第五版)

猜你喜欢

转载自juejin.im/post/7112617594644873230