文章目录
- 1. ARP协议
- 2. DHCP协议
- 3. ICMP协议
1. ARP协议
首先数据在从网络层向下传递到数据链路层,在数据链路层中,要给报文封装源MAC地址和目的MAC地址。
其中获取目的MAC地址就是通过ARP协议
首先:每台主机都有一个ARP高速缓存(保存局域网内的IP地址与MAC地址的映射)
在数据链路层获取目的MAC地址就是根据目的主机的IP地址,而目的主机的IP地址实在网络层封装的。
如果主机的ARP告诉缓存没有找到目的主机的MAC地址映射,这就利用了ARP协议:
- 首先源主机广播一个ARP请求分组(目的MAC地址全1代表局域网广播)
- 只有当目的IP地址满足ARP请求分组的主机会响应这个分组(单播响应分组),将自己的MAC地址和IP地址的映射返回给发送方。
- 源主机收到后将此映射写入ARP缓存,ARP缓存也会不断更新
上面的过程是两台局域网设备进行通信的过程。
如果是跨局域网通信,上面的场景还需要ARP协议,只不过这次ARP协议请求的是这个网段的默认网关(路由器的MAC地址)
获得路由器的MAC地址后,将发送方的数据发送给路由器,让路由器负责跨网络传输数据。
ARP协议使用的情况:
- 主机A发给本网络上的主机B:用ARP找到主机B的硬件地址;
- 主机A发给另一网络上的主机B:用ARP找到本网络上一个路由器网关)的硬件地址
- 路由器发给本网络的主机A:用ARP找到主机A的硬件地址;
- 路由器发给另一网络的主机B:用ARP找到本网络上的一个路由器的硬件地址。
综上,ARP协议解决的问题就是数据下一跳走哪里。
2. DHCP协议
首先主机获取IP地址的方式有两种:
- 静态配置:IP地址,子网掩码,默认网关
- 动态配置:DHCP服务器来给移动设备分配IP地址
首先:动态主机配置协议DHCP是应用层协议,使用客户/服务器方式,客户端和服务端通过广播方式进行交互,基于UDP。
这里之所以将DHCP放入网络层,因为DHCP和IP协议联系紧密
DHCP提供即插即用联网的机制,主机可以从服务器动态获取IP地址、子网掩码、默认网关、DNS服务器名称与IP地址。
允许地址重用,支持移动用户加入网络,支持在用地址续租。
DHCP协议流程:
-
主机广播DHCP发现报文:找DHCP服务器
-
DHCP服务器广播DHCP提供报文:回应请求,服务器拟分配给主机一个IP地址及相关配置。主机使用最先收到的DHCP提供报文
-
主机广播DHCP请求报文:和DHCP服务器确认使用其给的IP地址,同时通知其他DHCP服务器收回拟分配的IP。
-
DHCP服务器广播DHCP确认报文:正式将IP地址分配给主机。
3. ICMP协议
TCP/IP协议栈结构:
ICMP/IGMP协议是处于传输层和网络层之间的协议。这里主要学习ICMP协议。
ICMP协议作用是:为了更有效地转发lP数据报和提高交付成功的机会。
ICMP协议支持主机或路由器,主要实现
- 差错(异常)报告:网络层的数据出现错误丢弃时需要向上层ICMP差错报告报文。
- 网络探询
ICMP协议的报文是装在IP数据报的数据部分。
类型:指明ICMP的具体类型
代码:具体指明ICMP类型
检验和:检验ICMP报文是否出错
ICMP报文的类型:
-
. ICMP差错报文(五种):
-
终点不可达:当路由器或主机不能交付数据报时就向源点发送终点不可达报文。
-
源点抑制:当路由器或主机由于拥塞而丢弃数据报时,就向源点发送源点抑制报文,使源点减缓发送速率。
-
时间超过:当路由器收到生存时间TTL=0的数据报时,除丢弃该数据报外,还要向源点发送时间超过报文。
当终点在预先规定的时间内不能收到一个数据报的全部数据报片时,就把已收到的数据报片都丢弃,并向源点发送时间超过报文。
-
参数问题:当路由器或目的主机收到的数据报的首部中有的字段的值不正确时,就丢弃该数据报并向源点发送参数问题报文。
-
改变路由(重定向)︰路由器把改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器(可通过更好的路由)。
-
ICMP差错报文格式:
ICMP差错格式的IP数据报:
IP数据报头+ICMP差错报告报文(ICMP前8字节+IP数据报首部+IP数据报数据字段前8字节)
需要注意:
1. ICMP差错报告报文出错不再发送ICMP差错报告报文
2. 对第一个分片的数据报片的所有后续数据报片都不发送ICMP差错报告报文。
3. 对具有组播地址的数据报都不发送ICMP差错报告报文。
组播地址:一点到多点通信(不是所有主机),类似于广播通信(一点到所有点)
4. 对具有特殊地址(如127.0.0.0或0.0.0.0)的数据报不发送ICMP差错报告报文。
-
ICMP询问报文(四种):
-
回送请求和回答报文:主机或路由器向特定目的主机发出的询问,收到此报文的主机必须给源主机或路由器发送ICMP回送回答报文。
eg:ping命名 (测试目的站是否可达以及了解其相关状态)
-
时间戳请求和回答报文:请某个主机或路由器回答当前的日期和时间。
用来进行时钟同步和测量时间。
-
掩码地址请求和回答报文(废弃)
-
路由器询问和通告报文(废弃)
-
ICMP的应用:
-
ping命令:测试两个主机之间的连通性,使用了ICMP回送请求和回答报文。
-
Traceroute:跟踪一个分组从源点到终点的路径,使用了ICMP时间超过差错报告报文。
发送一组TTL相差1的报文(TTL:1,2,3,4,5……),根据每个超时差错报文返回的信息分析一个分组从源点到终点的路径