地址是网络层使用的地址,它是分层次等级的。硬件地址是数据链路层使用的地址(如 MAC地址),它是平面式的。在网络层及网络层之上使用 IP地址,IP 地址放在 IP数据报的首部,而 MAC地址放在 MAC帧的首部。通过数据封装,把 IP数据报分组封装为MAC帧后,数据链路层看不见数据报分组中的 IP地址。
注意:路由器由于互联多个网络,因此它不仅有多个P地址,也有多个硬件地址。
由于路由器的隔离,IP网络中无法通过广播方式依靠 MAC地址来完成跨网络的寻址,因此在 IP网络的网络层只使用 IP地址来完成寻址。寻址时,每个路由器依据其路由表(依靠静态路由或动态路由协议生成)选择到目标网络(即主机号全为 0的网络地址)需要转发到的
下一跳(路由器的物理端口号或下一网络地址)
,而 IP分组通过多次路由转发到达目标网络后,改为在目标LAN中通过数据链路层的 MAC地址以广播方式寻址。这样可以提高路由选择的效率。
无论网络层使用什么协议,在实际网络的链路上传送数据帧时,最终必须使用硬件地址。所以需要一种方法来完成 IP地址到 MAC地址的映射
,这就是地址解析协议(Address ResolutionProtocol,ARP)。
每台主机都设有一个 ARP高速缓存
,用来存放本局域网上各主机和路由器的IP地址到MAC地址的映射表,称 ARP表。使用 ARP来动态维护此ARP表。
ARP协议使用过程:
检查 ARP高速缓存,有对应表项则写入MAC帧,没有则用目的MAC地址为FF-FF-FF-FF-FF-FF的帧
封装并广播ARP请求分组
,同一局域网中所有主机都能收到该请求。目的主机收到请求后就会向源主机单播一个ARP响应分组,源主机收到后将此映射写入ARP缓存(10-20min更新一次)。
注意:ARP用于解决同一个局域网上的主机或路由器的P地址和硬件地址的映射问题。如果所要找的主机和源主机不在同一个局域网上,那么就要通过ARP找到一个位于本局域网上的某个路由器的硬件地址,然后把分组发送给这个路由器,让这个路由器把分组转发给下一个网络。剩下的工作就由下一个网络来做,尽管ARP请求分组是广播发送的,但ARP响应分组是普通的单播,即从一个源地址发送到一个目的地址。
ARP协议4种典型情况:
主机如何获得 IP 地址?
- 静态配置:通过手动设置 IP地址、子网掩码、默认网关
- 动态配置:通过DHCP服务器
动态主机配置协议(Dynamic Host Configuration Protocol,DHCP)常用于给主机动态地分配 IP地址,它提供了即插即用的联网机制,这种机制允许一台计算机加入新的网络和获取 IP地址而不用手工参与,主机可以从服务器动态获取 IP地址、子网掩码、默认网关、DNS服务器名称与IP地址,允许地址重用,支持移动用户加入网络,支持在用地址续租。。DHCP是应用层协议,它是基于 UDP的。
注:DHCP的应用场景:(局域网)机房网络 IP地址的分配
DHCP的工作原理如下:使用客户/服务器方式。需要 IP地址的主机在启动时就向DHCP 服务器广播发送发现报文,这时该主机就成为 DHCP客户。本地网络上所有主机都能收到此广播报文,但只有 DHCP服务器才回答此广播报文。DHCP 服务器先在其数据库中查找该计算机的配置信息。若找到,则返回找到的信息。若找不到,则从服务器的P地址池中取-一个地址分配给该计算机。DHCP服务器的回答报文称为提供报文。
DHCP 服务器聚合 DHCP客户端的交换过程如下:
发现
报文,试图找到网络中的 DHCP服务器,以便从DHCP 服务器获得一个 IP地址。DHCP 允许网络上配置多台DHCP服务器,当DHCP客户机发出DHCP 请求时,有可能收到多个应答消息。这时,DHCP客户机只会挑选其中的一个,通常挑选最先到达的。
DHCP服务器分配给DHCP客户的P地址是临时的,因此DHCP客户只能在一段有限的时间内使用这个分配到的P地址。DHCP称这段时间为租用期。租用期的数值应由DHCP服务器自己决定,DHCP客户也可在自己发送的报文中提出对租用期的要求。
DHCP的客户端和服务器端需要通过广播方式来进行交互,原因是在DHCP执行初期,客户端不知道服务器端的P地址,而在执行中间,客户端并未被分配P地址,从而导致两者之间的通信必须采用广播的方式。采用UDP而不采用TCP的原因也很明显:TCP需要建立连接,如果连对方的地址都不知道,那么更不可能通过双方的套接字建立连接。
为了提高 IP数据报交付成功的机会,在网络层使用了网际控制报文协议(Internet Control Message Protocol,ICMP)来让主机或路由器报告差错和异常情况。ICMP报文作为 IP层数据报的数据,加上数据报的首部,组成IP数据报发送出去。ICMP是 IP层协议。
ICMP报文的种类有两种,即 ICMP差错报告报文和 ICMP询问报文。
ICMP 差错报告报文用于目标主机或到目标主机路径上的路由器向源主机报告差错和异常情况。共有以下5种类型:
终点不可达
。当路由器或主机不能交付数据报时,就向源点发送终点不可达报文。源点抑制
。当路由器或主机由于拥塞而丢弃数据报时,就向源点发送源点抑制报文,使源点知道应当把数据报的发送速率放慢。时间超过
。当路由器收到生存时间(TTL)为零的数据报时,除丢弃该数据报外,还要向源点发送时间超过报文。当终点在预先规定的时间内不能收到一个数据报的全部数据报片时,就把已收到的数据报片都丢弃,并向源点发送时间超过报文。参数问题
。当路由器或目的主机收到的数据报的首部中有的字段的值不正确时,就丢弃该数据报,并向源点发送参数问题报文。改变路由(重定向)
。路由器把改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器(可通过更好的路由)。不应发送ICMP差错报告报文的几种情况如下:
ICMP询问报文有4种类型
最常用的是前两类。
主机或路由器向特定目的主机发出的询问,收到此报文的主机必须给源主机或路由器发送ICMP回送回答报文。测试目的站是否可达以及了解其相关状态。
请某个主机或路由器回答当前的日期和时间。用来进行时钟同步和测量时间。
ICMP的两个常见应用是分组网间探测PNG(用来测试两台主机之间的连通性)和Traceroute(UNIX中的名字,在Windows 中是Tracert,可以用来跟踪分组经过的路由)。
PING 测试两个主机之间的连通性,使用了ICMP回送请求和回答报文,
Traceroute (Tracert) 跟踪一个分组从源点到终点的路径,使用了 ICMP时间超过报文。
注意:PNG工作在应用层,它直接使用网络层的 ICMP,而未使用传输层的TCP或UDP。Traceroute/Tracert 工作在网络层。