淮南网站建设公司,为网站的特色功能设计各种模板,dede网站安全设置防挂马教程,南宁网络推广有几家文章目录 IP协议相关技术仅凭IP无法完成通信DNSARP IP协议相关技术
仅凭IP无法完成通信
人们在上网的时候其实很少直接输入某个具体的IP地址。
在访问Web站点和发送、接收电子邮件时#xff0c;我们通常会直接输入Web网站的地址或电子邮件地址等那些由应用层提供的地址我们通常会直接输入Web网站的地址或电子邮件地址等那些由应用层提供的地址而不会使用由十进制数字组成的某个IP地址。因此为了能让主机根据实际的IP包进行通信就有必要实现一种功能—将应用中使用的地址映射为IP地址。
此外在数据链路层也不使用IP地址。在以太网的情况下只使用MAC地址传输数据包。而实际上将众多IP数据包在网络上进行传送的就是数据链路本身因此必须了解发送端MAC地址。如果不知道MAC地址那么通信也就无从谈起。
由此可知在实际通信中仅凭IP远远不够还需要众多支持IP的相关技术才能够最终通信。一些IP的辅助技术具体包括DNS、ARP、ICMP、ICMPv6、DHCP、NAT等。还包括如IP隧道、IP多播、IP任播、质量控制Qos以及网络拥塞的显示通知和Mobile IP技术。
DNS
我们平常在访问某个网站时不使用IP地址而是用一串由罗马字和点好组成的字符串。而一般用户在使用TCP/IP进行通信时也不使用IP地址。能够这样做是因为有了DNSDomain Name System功能的支持。DNS可以将那串自动转换为具体的IP地址。这种DNS不仅适用于IPv4还适用于IPv6。
IP地址不便记忆 TCP/IP网络中要求每一个互连的计算机都具有其唯一的IP地址并基于这个IP地址进行通信。然而直接使用IP地址有很多不便之处。例如在进行应用操作时用户必须指定对端的接收地址此时如果使用IP地址的话应用就会有很多不便之处。因为IP地址是由一串数据序列组成并不好记。
为此TCP/IP世界中从一开始就已经有了一个叫做主机识别码的东西。这种识别方式是指为每台计算机赋予唯一的主机名在进行网络通信时可以直接使用主机名称而无需输入一大长串的IP地址。并且此时系统必须自动将主机名转换为具体的IP地址。为了实现这样的功能主机往往会利用一个叫做hosts的数据库文件。如下图
DNS的产生 在上述背景下产生了一个可以有效管理主机名和IP地址之间对应关系的系统那就是DNS系统。在这个系统中主机的管理机构可以对数据进行变更和设定。也就是说它可以维护一个用来表示组织内部主机名和IP地址之间对应关系的数据库。
在应用中当用户输入主机名域名时DNS会自动检索那个注册了主机名和IP地址的数据库并迅速定位对应的IP地址。而且如果主机名和IP地址需要进行变更时也只需要在组织机构内部进行处理即可而没必要再向其它机构进行申请或报告。
有了DNS不论网络规模变得多么庞大都能在一个较小的范围内通过DNS进行管理。可以说DNS充分地解决了ARPANET初期遇到的问题。就算到现在当人们访问任何一个Web站点时都能够直接输入主机名进行访问这也要归功于DNS。
域名的构成 在理解DNS规范时首先需要了解什么是域名。域名是指为了识别主机名称和组织机构名称的一种具有分层的名称。例如仓敷艺术科学大学的域名如下 kusa.ac.jp 域名由几个英文字母或英文字符序列用点号连接构成。在上述域名中最左边的“kusa”表示仓敷艺术科学大学Kurashiki University of Science and the Arts固有的域名。而“ac”表示大学academy或高等专科以及技术专门学校等高等教育相关机构。最后边的“jp”则代表日本japan。 在使用域名时可以在每个主机名后面追加上组织机构的域名。例如有pepper、piyo、kinoko等主机时它们完整的带域名的主机名将呈如下形式 pepper.kusa.ac.jp piyo.kusa.ac.jp kinoko.kusa.ac.jp 在启用域名功能之间单凭主机名还无法完全管理IP地址因为在不同的组织机构中不允许有同名的主机。然而当出现了带有层次结构的域名之后每一个组织机构就可以自由地为主机命名了。
域名服务器 域名服务器是指管理域名的主机和相应的软件它可以管理所在分层的域的相关信息。其所管理的分层叫做ZONE。如下图每层都设有一个域名服务器 根部所设置的DNS叫做根域名服务器。它对DNS的检索数据功能起着至关重要的作用。根域名服务器中注册着根以下第1层域名服务器的IP地址。根域名服务器中注册了那些管理的域名服务器的IP地址。反之如果想要新增一个类似jp或org的域名或修改某个已有域名就得在根域名服务器中进行追加或变更。
类似地在根域名服务器的下一层域名服务器中注册了再往下一层域名服务器的IP地址。根据每个域名服务器所管理的域名如果下面再没有其它分层就可以自由地指定主机名称或子网名称。不过如果想修改该分层的域名或重新设置域名服务器的IP地址还必须得在其上层的域名服务器中进行追加或修改。
因此域名和域名服务器需要按照分层进行设置。如果域名服务器宕机那么针对该域的DNS查询也就无法正常工作。因此为了提高容灾能力一般会设置至少两个以上的域名服务器。一旦第一个域名服务器无法提供查询时就会自动转到第二个甚至第三个域名服务器上进行以此可以按照顺序进行灾备处理。
所有的域名服务器都必须注册根域名服务器的IP地址。因为DNS根据IP地址进行检索时需要从根域名服务器开始按顺序进行。
DNS查询 那么DNS查询的机制是什么呢用一个例子进行说明图中kusa.co.jp域中的计算机想要访问网站www.ietf.org此时的DNS查询流程如下图 解析器为了调查IP地址向域名服务器进行查询处理。接收这个查询请求的域名服务器首先会在自己的数据库进行查找。如果有该域名所对应的IP地址就返回。如果没有则域名服务器再向上一层根域名服务器进行查询处理。因此从根开始对这棵树按照顺序进行遍历直到找到指定的域名服务器并由这个域名服务器返回想要的数据。
解析器和域名服务器将最新了解到的信息暂时保存在缓存里。这样可以减少每次查询时的性能消耗。
ARP
只要确定了IP地址就可以向这个目标地址发送IP数据报。然而在底层数据链路层进行实际通信时却有必要了解每个IP地址所对应的MAC地址。
ARP概要 ARP是一种解决地址问题的协议。以目标IP地址为线索用来定位下一个应该接收数据分包的网络设备对应的MAC地址。如果目标主机不在同一个链路上时可以通过ARP查找下一跳路由器的MAC地址。不过ARP只适用于IPv4不能用于IPv6。IPv6中可以使用ICMPv6替代ARP发送邻居探索消息。
ARPAddress Resolution Protocol
ARP的工作机制 那么ARP又是如何知道MAC地址的呢简单地说ARP是借助ARP请求与ARP响应两种类型的包确定MAC地址的。 如下图 假定主机A向同一链路上的主机B发送IP包主机A的IP地址为172.20.1.1主机B的IP地址为172.20.1.2它们互不知道对方的MAC地址。
主机A为了获得主机B的MAC地址起初要通过广播发送一个ARP请求包。这个包中包含了想要了解其MAC地址的主机IP地址。也就是说ARP请求包中已经包含了主机B的IP地址172.20.1.2。由于广播的包可以被同一个链路上所有的主机或路由器接收因此ARP的请求包也就会被这同一个链路上所有的主机和路由器进行解析。如果ARP请求包中的目标IP地址与自己的IP地址一致那么这个节点就将自己的MAC地址塞入ARP响应包返回给主机A。
总之从一个IP地址发送ARP请求包以了解其MAC地址目标地址将自己的MAC地址填入其中的ARP响应包返回到IP地址。由此可以通过ARP从IP地址获得MAC地址实现链路内的IP通信。
根据ARP可以动态地进行地址解析因此在TCP/IP的网络构造和网络通信中无需事先知道MAC地址究竟是什么只要有IP地址即可。
如果每发送一个IP数据报都要进行一次ARP请求以此确定MAC地址那将会造成不必要的网络流量因此通常的做法是把获取到的MAC地址缓存一段时间。即把第一次通过ARP获取到的MAC地址作为IP对MAC的映射关系记忆到一个ARP缓存表中下一次再向这个IP地址发送数据报时不需要再重新发送ARP请求而是直接使用这个缓存表当中的MAC地址进行数据报的发送。每执行一次ARP其对应的缓存内容都会被清楚。不过在清楚之前都可以不需要执行ARP就可以获取到想要的MAC地址。这样在一定程度上也防止了ARP包在网络上被大量广播的可能性。
一般来说发送过一次IP数据报的主机继续发送多次IP数据报的可能性会比较高。因此这种缓存能够有效地减少ARP包的发送。反之接收ARP请求的那个主机又可以从这个ARP请求包获取发送端主机的IP地址及其MAC地址。这时它可以将这些MAC地址的信息缓存起来从而根据MAC地址发送ARP响应包给发送端主机。类似地接收到IP数据报的主机又往往会继续返回IP数据报给发送端主机以作为响应。因此在接收主机端缓存MAC地址也是一种提高效率的方法。 IP地址和MAC地址缺一不可 有些读者可能会提出这样的疑问“数据链路上只要知道接收端的MAC地址不就知道数据是准备发送给主机B的吗那还需要知道它的IP地址吗”
乍听起来确实让人觉得好像是在做多余的事。此外还有些读者可能会质疑“只要知道了IP地址即使不做ARP只要在数据链路上做一个广播不就能发给主机B了吗”那么为什么既需要IP地址又需要MAC地址呢
如果读者考虑一下发送给其它数据链路中某一个主机时的情况这件事就不难理解了。如下图 主机A想要发送IP数据报给主机B时必须得经过路由器C。即使知道了主机B的MAC地址由于路由器C会隔断两个网络还是无法实现直接从主机A发送数据报给主机B。此时主机A必须得先将数据报发送给路由器C的MAC地址C1。
此外假定MAC地址就用广播地址那么路由器D也将会收到广播消息。于是路由器D又将该消息转发给路由器C导致数据包被重复发送两次。
在以太网上发送IP包时“下次要经过由哪个路由器发送数据报”这一信息非常重要。而这里的“下一个路由器”就是相应的MAC地址。
如此看来IP地址和MAC地址两者缺一不可。于是就有将这两个地址相关联的ARP协议。