一:IP地址和MAC地址的关系
网络层使用的地址是IP地址 ,数据链路层则使用的是MAC地址 (硬件地址),交付数据时进行数据封装,当把IP数据报分组封装为MAC帧后,数据链路层是看不见数据报分组中的IP地址的
又因为存在路由器的隔离,所以在IP网络中是无法通过广播方式依靠MAC帧地址来完成跨网络的寻址的,因此在IP网络的网络层只能使用IP地址来完成寻址
具体来说:寻址时,每个路由器依据其路由表 (依靠静态路由或动态路由协议生成)选择到目标网络(即主机号全为0的网络地址)需要转发的下一跳(路由器的物理端口号或下一网络地址),IP分组通过多次路由转发到达目标网络后,改为在目标LAN中通过MAC地址以广播方式寻址
在IP层抽象的互联网上只能看到IP数据报 虽然在IP数据报首部中有完整的源IP地址和目的IP地址,但路由器只根据目的IP地址的网络号进行路由选 择 在局域网的链路层,只能看见MAC帧 。而通过路由器转发IP分组时,此IP分组在每个网络中都被路由器解封装和重新封装。因此IP数据报在被路由器转发时,其数据链路层封装所使用的MAC地址是不断改变的 。这也决定了无法使用MAC地址跨网络通信 尽管互联在一起的网络的硬件地址体系各不相同,但IP层抽象的互联网却屏蔽了下层这些复杂的细节。只要我们在网络层上讨论问题,就能够使用统一的、抽象的IP地址研究主机与主机或路由器之间的通信
二:ARP(地址解析协议)- 解决下一跳走哪
地址解析协议ARP :无论网终层使用什么协议,在实际网络的链路上传送数据帧时,最终必须使用硬件地址。而ARP就是用来完成IP地址到MAC地址 的映射的。每台主机都设有一个ARP高速缓存 ,用来存放本局域网上各主机和路由器的IP地址到MAC地址的映射表,称ARP表。该协议工作原理如下
主机
A
A
A 欲向本局域网上的某台主机
B
B
B 发送IP数据报时 ,先在其ARP高速缓存中查看有无主机
B
B
B 的IP地址 。如果有 ,就可以查出其对应的硬件地址,再将此硬件地址写入MAC帧,然后通过局域网将该MAC帧发往此硬件地址;如果没有 ,那么就通过使用目的MAC地址为FF-FF-FF-FF-FF-FF的帧来封装并广播ARP请求分组 ,使同一个局域网里的所有主机收到ARP请求主机
B
B
B 收到该ARP请求后 ,向主机
A
A
A 发出响应ARP分 组,分组中包含主机B的IP与MAC地址的映射关系 ,主机
A
A
A 在收到后将此映射写入ARP缓存,然后按查询到的硬件地址发送MAC帧
ARP协议有如下4种典型的情况
主机
A
A
A 发给本网络 上的主机
B
B
B :用ARP找到主机
B
B
B 的硬件地址主机
A
A
A 发给另一网络 上的主机
B
B
B :用ARP找到本网络上一个路由器的硬件地址路由器发给本网络 上的主机
A
A
A :用ARP找到主机
A
A
A 的硬件地址路由器发给另一网络 上的主机
B
B
B :用ARP找到本网络上的一个路由器的硬件地址
三:DHCP(动态主机配置协议)- 主机如何获取IP地址
动态主机配置协议DHCP :是应用层 协议,使用客户-服务器 方式,客户端和服务端通过广播方式进行交互 ,基于UDP 。DHCP提供即插即用 联网机制,主机可以从服务器动态获取IP地址、子网掩码、默认网关、DNS服务器名称与IP地址,允许地址重用、支持移动用户加入网络和在用地址续租。交换过程如下
DHCP客户机广播“DHCP发现 ”消息,试图找到网络中的DHCP服务器,以便从DHCP服务器获得一个IP地址 DHCP服务器收到“DHCP发现”消息后,向网络中广播“DHCP提供 ”消息,其中包含提供DHCP客户机的IP地址和相关配置信息 DHCP客户机收到“DHCP提供”消息,如果接受DHCP服务器所提供的相关参数,那么通过广播“DHCP请求 ”消息向DHCP服务器请求提供IP地址 DHCP服务器广播“DHCP确认 ”消息,将IP地址分配给DHCP客户机
四:ICMP(网际控制报文协议)- 提高交付成功的几率
网际控制报文协议ICMP :是IP层 协议,让主机或路由器报告差错和异常情况以此提高IP数据报交付成功的机会 。ICMP报文作为IP层数据报的数据,加上数据报的首部,组成IP数据报发送出去。ICMP报文有两种
ICMP差错报告报文用于目标主机或到目标主机路径上的路由器向源主机报告差错和异常情况。共有以下5种类型 :
终点不可达 :当路由器或主机不能交付数据报时 ,就向源点发送终点不可达报文源点抑制 :当路由器或主机由于拥塞而丢弃数据报时 ,就向源点发送源点抑制报文,使源点知道应当把数据报的发送速率放慢。时间超过 :当路由器收到生存时间(TTL) 为零的数据报时 ,除丢弃该数据报外,还要向源点发送时间超过报文。当终点在预先规定的时间内不能收到一个数据报的全部数据报片时,就把已收到的数据报片都丢弃,并向源点发送时间超过报文。参数问题 :当路由器或目的主机收到的数据报的首部中有的字段的值不正确时 ,就丢弃该数据报,并向源点发送参数问题报文。改变路由(重定向) :路由器把改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器(可通过更好的路由)
以下4种情况是不应该发送ICMP差错报文的
对ICMP差错报告报文 不再发送ICMP差错报告报文 对第一个分片的数据报片的所有后续数据报片 都不发送ICMP差错报告报文 对具有组播地址 的数据报都不发送ICMP差错报告报文 对具有特殊地址 (如127.0.0.0或0.0.0.0)的数据报不发送ICMP差错报告报文