赞
踩
IP地址是网络层使用的地址,它是分层次等级的。硬件地址是数据链路层使用的地址(MAC地址),它是平面式的。在网络层及网络层之上使用IP地址,IP地址放在IP数据报的首部,而MAC地址放在 MAC 帧的首部。通过数据封装,把IP数据报分组封装为MAC帧后,数据链路层看不见数据报分组中的IP地址。
由于路由器的隔离,IP网络中无法通过广播MAC地址来完成跨网络的寻址,因此在网络层只使用IP地址来完成寻址。寻址时,每个路由器依据其路由表(依靠路由协议生成)选择到目标网络(即主机号全为0的网络地址)需要转发到的下一跳(路由器的物理端口号或下一网络地址),而 IP 分组通过多次路由转发到达目标网络后,改为在目标LAN 中通过数据链路层的MAC 地址以广播方式寻址。这样可以提高路由选择的效率。
在IP层抽象的互联网上只能看到IP数据报。
虽然在 IP数据报首部中有源 IP地址,但路由器只根据目的IP地址进行转发。
在局域网的链路层,只能看见MAC帧。IP数据报被封装在 MAC帧中,通过路由器转发IP分组间,让IP分组在每个网络中都被路由器解封装和重新封装,其 MAC帧首部中的源地址和目的地址会不断改变。这也决定了无法使用MAC地址跨网络通信。
尽管互联在一起的网络的硬件地址体系各不相同,但IP层抽象的互联网却屏蔽了下层这些复杂的细节。只要我们在网络层上讨论问题,就能够使用统一的、抽象的IP地址研究主机与主机或路由器之间的通信。
注意:路由器由于互联多个网络,因此它不仅有多个IP地址,也有多个硬件地址。
无论网络层使用什么协议,在实际网络的链路上传送数据帧时,最终必须使用硬件地址。所以需要一种方法来完成 IP 地址到 MAC 地址的映射,这就是地址解析协议(ARP)。每台主机都设有一个ARP高速缓存,用来存放本局域网上各主机和路由器的IP地址到 MAC 地址的映射表,称 ARP 表。使用ARP来动态维护此ARP表。
ARP工作在网络层,其工作原理如下:主机A欲向本局域网上的某台主机B发送IP数据报时,先在其 ARP 高速缓存中查看有无主机 B的 IP地址。如果有,就可查出其对应的硬件地址,再将此硬件地址写入 MAC 帧,然后通过局域网将该 MAC 帧发往此硬件地址。如果没有,那么就通过使用目的MAC 地址为 FF-FF-FF-FF-FF-FF 的帧来封装并广播ARP请求分组(广播发送),使同一个局域网里的所有主机都收到此ARP请求。主机B收到该ARP请求后,向主机A发出ARP 响应分组(单播发送),分组中包含主机B的IP与 MAC 地址的映射关系,主机A收到ARP响应分组后就将此映射写入ARP缓存,然后按查询到的硬件地址发送MAC帧。ARP由于“看到了”IP地址,所以它工作在网络层,而NAT 路由器由于“看到了”端口,所以它工作在传输层。
注意:ARP 用于解决同一个局域网上的主机或路由器的 IP 地址和硬件地址的映射问题。如果所要找的主机和源主机不在同一个局域网上,那么就要通过ARP找到一个位于本局域网上的某个路由器的硬件地址,然后把分组发送给这个路由器,让这个路由器把分组转发给下一个网络。剩下的工作就由下一个网络来做,尽管ARP请求分组是广播发送的,但ARP响应分组是普通的单播,即从一个源地址发送到一个目的地址。
使用ARP的四种典型情况总结如下:
①发送方是主机(如H1),要把IP数据报发送到本网络上的另一台主机(如H2)。这时H1在网1用ARP找到目的主机H2的硬件地址。
②发送方是主机(如H1),要把IP数据报发送到另一个网络上的一台主机(如H3)。这时H1用ARP找到与网1连接的路由器R1的硬件地址,剩下的工作由R1来完成。
③发送方是路由器(如R1),要把IP数据报转发到与R1连接的网络(网2)上的一台主机(如H3)。这时R1在网2用ARP找到目的主机H3的硬件地址。
④发送方是路由器(如R1),要把IP数据报转发到网3上的一台主机(如H4)。这时 R1在网2用ARP找到与网2连接的路由器R2的硬件地址,剩下的工作由R2来完成。
从IP 地址到硬件地址的解析是自动进行的,主机的用户并不知道这种地址解析过程。只要主机或路由器和本网络上的另一个已知IP地址的主机或路由器进行通信,ARP就会自动地将这个IP地址解析为数据链路层所需要的硬件地址。
由来:
主机如何获得IP地址?
动态主机配置协议(Dynamic Host Configuration Protocol,DHCP)常用于给主机动态地分配IP 地址,它提供了即插即用的联网机制,这种机制允许一台计算机加入新的网络和获取 IP 地址而不用手工参与。DHCP是应用层协议,它是基于UDP的。
DHCP 的工作原理如下:使用客户/服务器模式。需要IP地址的主机在启动时就向 DHCP 服务器广播发送发现报文,这时该主机就成为DHCP客户。本地网络上所有主机都能收到此广播报文,但只有DHCP服务器才回答此广播报文。DHCP 服务器先在其数据库中查找该计算机的配置信息。若找到,则返回找到的信息。若找不到,则从服务器的IP地址池中取一个地址分配给该计算机。DHCP 服务器的回答报文称为提供报文。
DHCP 服务器和 DHCP 客户端的交换过程如下:
①DHCP客户机广播“DHCP发现”消息,试图找到网络中的DHCP服务器,以便从DHCP服务器获得一个IP 地址。源地址为0.0.0.0,目的地址为255.255.255.255。
②DHCP服务器收到“DHCP发现”消息后,广播“DHCP提供”消息,其中包括提供给DHCP 客户机的 IP 地址。源地址为 DHCP 服务器地址,目的地址为255.255.255.255。
③DHCP 客户机收到“DHCP 提供”消息,如果接受该 IP 地址,那么就广播“DHCP 请求”消息向DHCP 服务器请求提供 IP 地址。源地址为 0.0.0.0,目的地址为 255.255.255.255。
④DHCP 服务器广播“DHCP 确认”消息,将IP地址分配给 DHCP 客户机。源地址为 DHCP服务地址,目的地址为255.255.255.255。
DHCP允许网络上配置多台DHCP服务器,当DHCP客户机发出“DHCP发现”消息时,有可能收到多个应答消息。这时,DHCP客户机只会挑选其中的一个,通常挑选最先到达的。
DHCP 服务器分配给 DHCP客户的IP地址是临时的,因此DHCP客户只能在一段有限的时间内使用这个分配到的IP地址。DHCP称这段时间为租用期。租用期的数值应由DHCP服务器自己决定,DHCP客户也可在自己发送的报文中提到对租用期的要求。
DHCP的客户端和服务器端需要通过广播方式来进行交互,原因是在DHCP执行初期,客户端不知道服务器端的IP地址,而在执行中间,客户端并未被分配IP地址,从而导致两者之间的通信必须采用广播的方式。采用UDP而不采用TCP的原因也很明显:TCP需要建立连接,如果连对方的IP地址都不知道,那么更不可能通过双方的套接字建立连接。
DHCP是应用层协议,因为它是通过客户/服务器模式工作的,DHCP客户端向DHCP服务器请求服务,而其他层次的协议是没有这两种工作方式的。
为了提高 IP 数据报交付成功的机会,在网络层使用了网际控制报文协议ICMP(Internet
Control Message Protocol) 来让主机或路由器报告差错和异常情况。ICMP报文作为IP层数据报的数据,加上数据报的首部,组成IP数据报发送出去。ICMP 是IP层协议。
ICMP报文的种类有两种,即ICMP差错报告报文和ICMP询问报文。
ICMP 差错报告报文用于目标主机或到目标主机路径上的路由器向源主机报告差错和异常情
况。共有以下5种类型:
①终点不可达。当路由器或主机不能交付数据报时,就向源点发送终点不可达报文。
②源点抑制。当路由器或主机由于拥塞而丢弃数据报时,就向源点发送源点抑制报文,使源点知道应当把数据报的发送速率放慢。
③时间超过。当路由器收到生存时间(TTL)为零的数据报时,除丢弃该数据报外,还要向源点发送时间超过报文。当终点在预先规定的时间内不能收到一个数据报的全部数据报片时,就把已收到的数据报片都丢弃,并向源点发送时间超过报文。
④参数问题。当路由器或目的主机收到的数据报的首部中有的字段的值不正确时,就丢弃该数据报,并向源点发送参数问题报文。
⑤改变路由(重定向)。路由器把改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器(可通过更好的路由)。
不应发送ICMP差错报告报文的几种情况如下:
1)对ICMP 差错报告报文不再发送ICMP差错报告报文。
2)对第一个分片的数据报片的所有后续数据报片都不发送ICMP 差错报告报文。
3)对具有组播地址的数据报都不发送ICMP差错报告报文。
4)对具有特殊地址(如127.0.0.0 或 0.0.0.0)的数据报不发送ICMP 差错报告报文。
ICMP询问报文有4种类型:回送请求和回答报文、时间戳请求和回答报文、地址掩码请求和回答报文、路由器询问和通告报文,最常用的是前两类。
ICMP的两个常见应用是分组网间探测PING(用来测试两台主机之间的连通性)和Traceroute (UNIX中的名字,在 Windows 中是Tracert,可以用来跟踪分组经过的路由)。其中PING使用了ICMP回送请求和回答报文,Traceroute(Tracert)使用了ICMP时间超过报文。
注意:PING 工作在应用层,它直接使用网络层的 ICMP,而未使用传输层的 TCP 或 UDP。
Traceroute/Tracert 工作在网络层。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。