IP支持协议
IP 支持协议在实际的通信中,仅凭IP 是远远不够的,还需要众多支持IP 的相关技术才能够实现最终的通信。下面会陆续介绍IP 的各种辅助技术,具体包括DNS 、 ARP 、ICMP 、DHCP 、NA
IP 支持协议
在实际的通信中,仅凭IP 是远远不够的,还需要众多支持IP 的相关技术才能够实现最终的通信。下面会陆续介绍IP 的各种辅助技术,具体包括DNS 、 ARP 、ICMP 、DHCP 、NAT 等,而其余的类似IP 隧道、IP 多播、IP 任播、质量控制(QoS )以及网络拥塞的显示通知和MobileIP 技术就 不一一详细说明了。
第一节:人性化的发明——DNS
我们平常在访问某个网站时几乎从来都不会使用IP 地址,而是用一串英文字母和点号组成的字符串。可是传输层IP 协议在进行通信的时候使用的都是IP 地址,那是什么帮我们完成从网址到IP 地址的转换呢?答案就是,DNS (Domain Name System),域名系统。 首先,我们来看看域名的分层结构图:

最顶端是根节点。根节点下面有若干个子节点,其中包括我们经常接触的.com 、.edu 、.gov 等。这些子节点又会作为父节点分支处更多的子节点,像一棵倒立的树一样延伸出去。 下面,我们来回忆一下DNS 查询的流程是怎样的。首先,为了将域名解析为IP 地址,会向DNS 服务器进行查询处理。接收这个查询请求的域名服务器首先会在 自己的数据库进行查找。如果有该域名所对应的IP 地址就返回。如果没有,则域名服务器再向上一层根域名服务器进行查询处理。因此,从根开始对这棵树按照顺 序进行遍历,直到找到指定的域名服务器,并由整个域名服务器返回想要的数据。
当然,无论是解析器(进行DNS 查询的主机和软件)还是域名服务器,都会将最新获取到的信息保存在缓存里一段时间。这样,可以减少每次查询时的性能消耗。
,第二节:数据链路层的渴望——ARP 协议
有了DNS 之后,我们已经解决了域名解析转换成IP 地址的问题。然而,在底层数据链路层,进行实际通信时却有必要了解每个IP 地址所对应的MAC 地址。
ARP是一种解决地址问题的协议。以目标IP 地址为线索,用来定位下一个应该接收数据分包的网络设备对应的MAC 地址。如果目标主机不在 同一个链路上时,可以通过ARP 查找下一跳路由器的MAC 地址。(不过ARP 只适用于IPv4,不能用于IPv6。IPv6中可以用ICMPv6替代 ARP 发送邻居探索消息)简而言之,ARP 是借助ARP 请求与ARP 响应两种类型的包确定MAC 地址的。
从一个IP 地址发送ARP 请求包以了解其MAC 地址,目标地址将自己的MAC 地址填入其中的ARP 响应包返回到IP 地址。由此,可以通过ARP 从IP 地址获得MAC 地址,实现链路内的IP 通信。(ARP 请求包还有一个作用,那就是将自己的MAC 地址告诉给对方)
顺便提一下RARP (Reverse Address Resolution Protocol)是将ARP 反过来,从MAC 地址定位IP 地址的一种协议。例如将打印机服务器等小型嵌入式设备接入到网络时就经常会用得到。
第三节:辅助IP 的ICMP
架构IP 网络时需要特别注意两点:确认网络是否正常工作,以及遇到异常时进行问题诊断。ICMP 正是提供这类功能的一种协议(我们经常使用的ping 指令以及tracert 指令都是基于ICMP 协议所实现的)——处女面的时候就遇到这一题。
ICMP 的主要功能包括,确认IP 包是否成功送达目标地址,通知在发送过程当中IP 包被废弃的具体原因,改善网络设置等。有了这些功能以后,我们就可以获得网络是否正常、设置是否有误以及设备有何异常等信息,从而便于进行网络上的问题诊断。
ICMP的消息大致可以分为两类:一类是通知出错原因的错误消息,另一类是用于诊断的查询消息。具体的内容就不详细探讨了,后面总结常见面试题的时候可能会进一步讨论。
第四节:实现即插即用的DHCP
想象一下,如果我们拿着一台MAC 到星巴克装X ,还要跟让店员告诉我们要怎么设置IP 地址,而且还要注意不能跟别人重复以防止IP 地址冲突,这是一件多么 败坏土豪兴致的事情。于是,为了实现自动设置IP 地址、统一管理IP 地址分配,就产生了DHCP (Dynamic Host Configuration Protocol)协议。有了DHCP ,计算机只要连接到网络,就可以进行TCP/IP通信。也就是说,DHCP 让即插即用变得可能。
使用DHCP 之前,首先要架设一台DHCP 服务器。然后将DHCP 所要分配的IP 地址设置到服务器上。此外,还需要将相应的子网掩码、路由控制信息以及DNS 服务器的地址等设置到服务器上。一般来说,有wifi 功能的路由器都能充当DHCP 服务器。
DHCP在分配IP 地址有两种方法。一种是由DHCP 服务器在特定的IP 地址中自动选出一个进行分配。另一种方法是针对MAC 地址分配一个固定的IP 地址。这两种方法可以并用。
第五节:私有地址与全局地址的转换——NAT
NAT (Network Address Translator)是用于在本地网络中使用私有地址,在连接互联网时转而使用全局IP 地址的技术。除了转换IP 地址外,还出现了可以转换TCP 、 UDP 端口号的NAPT (Network Address Ports Translator)技术,由此可以实现用一个全局IP 地址与多个主机的通信。(看到这里是不是突然虎躯一震、菊花一紧呢?没错,平时使用的路由器就是 用到这个协议,能让我们用一个IP 地址多台电脑上网。)
,关于NAPT 是如何实现一个IP 地址多个主机进行TCP/IP通信的,我们会在后面的博客中详细讲述。不过这里可以先说这么一句:在使用TCP 或UDP 通 信当中,只有目标地址、源地址、目标端口、源端口以及协议类型(TCP 或UDP )五项内容都一致时才被认为是同一个通信连接,此时所使用的正是NAPT 。