趣谈网络协议学习笔记——DHCP, ARP, ICMP

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Q52077987/article/details/81483361

DHCP

DHCP(Dynamic Host Configuration Protocol)是局域网内将IP和Mac配对的协议,局域网内的DHCP服务器负责局域网内主机的IP分配。

DHCP的IP分配过程:

一台主机新加入局域网,使用IP地址0.0.0.0(因为此时还没有IP)向255.255.255.255(广播地址)发出一个UDP包,这个包的意思就是:我的MAC地址是XXX,我还没有IP,谁负责给我一个IP?

局域网内的DHCP Server收到这个广播包,要检查两个条件:第一,没有重复的MAC地址,因为MAC是主机在网络上的唯一身份标识,所以必然不能重复,否则寻址系统就会被破坏。这在使用物理机的时候不会存在问题,但是使用虚拟机就很有可能了,比如你从同事那里copy过来的虚拟机,如果启动的时没有重新分配MAC,并且使用了直连局域网的方式,就存在了MAC地址冲突的可能性,如果你先接入局域网,你同事的虚拟机就不能再获取到IP了。反之亦然。第二就是要有可分配的IP,比如一个局域网内的254个IP都分配完了,那么也没有办法给新接入的电脑分配IP了。如果条件都满足,则广播或者单播新分配的MAC-IP对。

这个新加入的主机收到这个MAC-IP地址对之后,要向DHCPServer确认自己使用这个IP。因为有可能存在多个DHCPServer,同时分配多个MAC-IP对给新主机。新主机要确认自己使用了哪一个。此时仍使用的是广播。

最后DHCP将IP和Mac对记录下来,再广播一个DHCP ACK正式发放offer,从此以后新主机就加入了这个局域网。

ARP

通过IP求Mac的协议,发送一个广播包,谁是这个IP谁来回答。如果一个局域网中有多个交换机,APR广播可能会引起广播风暴

ICMP

ICMP(Internet Control Message Protocol)保存封装在IP包中,相当于侦察兵,用于通报网络传输中发生的事情。

ping就是基于ICMP协议工作的,是一种查询类型的报文。

还有一种类型的报文是差错类型,在网络发生错误的时候收到。

一种错误是终点不可达,又细分为网络不可达,主机不可达,端口不可达和需要分片但是设置了不分片的标志位。

第二种错误是源抑制,让发送的慢一些。

第三种是时间超时

第四种是路由重定向,让下次发送给另外一个路由器。

traceroute也是基于ICMP的应用。

traceroute的第一个应用是追踪去往目的地沿途经过的路由:先发送一个TLL为1的UDP数据包给某个IP,一旦遇到一个路由,就超时了,会返回一个ICMP的包,得到第一个路由的IP,然后将TTL设置为2,再次发送这个UDP的包……直到能到达目的地。第二个trick是,这个UDP的包使用了一个不存在的端口,这回返回一个端口不可达的ICMP包,于是traceroute就获得了想要的信息。有些路由器是不回复ICMP的,这样的话traceroute就无法得知他们的路由了。

traceroute的另外一个应用是探求路径上的MTU。发送一个不分片的标志的包,如果路径上有窄的关卡,就会返回“端口不可达和需要分片但是设置了不分片的标志位”这个错误,然后减小分组长度,直到能到达目标主机。

最后一点,ICMP报文出错了就错了,没有消息返回了。

猜你喜欢

转载自blog.csdn.net/Q52077987/article/details/81483361