DHCP协议

  • DHCP: Dynamic Host Configration protocol 动态主机配置协议。(自动获取地址就会使用DHCP协议)---UDP67/ 68

UDP67:DHCP服务器的端口  

UDP68:客户端的端口

  • IP地址的生成有两种:1.自动获得ip地址;2.通过手工配置。

. DHCP特点:基于C-S模型,DCHP所有消息数据包基于UDP封装的。

四. C/S架构:

需要获取ip地址的设备扮演客户端的角色,而下发ip地址的设备需要扮演DHCP服务器的角色。

  • 首次获取IP地址:

1.DHCP客户端给DHCP服务器发数据包---用到是DHCP-discover --- 方式:广播

    数据包的构建:

  1. 传输层:---用UDP协议封装---SPORT:UDP68

                                DPORT:UDP67  

  1. 网络层---用IP封装---SIP:0.0.0.0(代表没有任何地址)

                       DIP:全1或者255.255.255.255

  1. 数据链路层---DHCP协议(只能针对以太网)必须保证其可靠性---SMAC:自己

         DMAC:全F(48位二进制全1的地址:广播地址)

2.DHCP服务器给DHCP客户端回复---DHCP-offer(携带可用IP地址)---方式:单播/广播

a. 传输层:---用UDP协议封装---SPORT:UDP67

                                 DPORT:UDP68  

b. 网络层---用IP封装---SIP:DHCP服务器的地址

                         DIP:需要分配的IP地址

c.数据链路层---DHCP协议(只能针对以太网)必须保证其可靠性--- SMAC:DHCP服务器自己的IP地址

        DMAC:客户端的MAC地址

3.DHCP客户端给DHCP服务器发送一个叫DHCP-Request的数据包---方式:广播(让其他没有IP的设备可以拥有IP)

  注意:虽然具备单播条件(有MAC),但是一定是以广播的形式。以及客户端选择IP地址:按顺序来的

  1. DHCP服务器给DHCP客户端回复一个叫DHCP-ACK的数据包(客户端只有收到服务器的ACK数据包之后,才算可以使用这个IP地址)---方式:单播/广播
  • 再次获取IP地址:

    1.DHCP客户端给DHCP服务器发送一个叫DHCP-Request的数据包---方式:广播(让其他没有IP的设备可以拥有IP)

  注意:虽然具备单播条件(有MAC),但是一定是以广播的形式。以及客户端选择IP地址:按顺序来的

2.DHCP服务器给DHCP客户端回复一个叫DHCP-ACK的数据包(客户端只有收到服务器的ACK数据包之后,才算可以使用这个IP地址)---方式:单播/广播

       3. 再次获取IP地址时,客户端是向服务器请求之前使用的IP地址。若之前使用的IP地址已被其他设备使用,则服务器会给客户端发送一个叫DHCP-NAK的数据包;此后,再重复以上操作。

七. 客户端使用IP地址的时间(类似于租期)---24h(默认值)

    T1:租期的50%---12h---向服务器发DHCP-Request包(单播)

    T2:租期的87.5%---21h---向服务器发DHCP-Request包(广播)

八. DHCP-release---客户端主动释放IP地址

九. DHCP服务器的配置:

      1. 进入系统试图,敲DHCP enable---开启DHCP设备

      2. IP pool?---IP pool+名字---创建地址池

        [r1]ip pool aa Info: It's successful to create an IP address pool.

[r1-ip-pool-aa]

  1. [名字-ip-pool-]:

        [r1-ip-pool-aa]network 192.168.1.0 mask 24

[r1-ip-pool-aa]gateway-list 192.168.1.1

[r1-ip-pool-aa]dns-list 114.114.114.114---DNS服务器的

  1. 在接口选择全局配置

   发生IP的是接口,而我们配置的是在全局(系统试图里面),必须给接口发送:DHCP select global

十.DHCP工作原理:

  1. DHCP discover:1.主机向服务器请求一个IP,2.发现DHCP----数据发送得进行封装。这个时候由源端口号68发送到目标端口67,这个时候没有源IP给自己定义一个0.0.0.0占位发送,也并不知道目标服务器地址,所以通过广播来进行发送,也不知道目标mac地址,也是通过广播mac地址(48个1就是广播mac地址),然后转发给所有,收到数据进行解封装,观看mac地址然后继续进行解封装最后看到67的服务端口,不是67服务器端口就会进行丢弃数据,然后在地址池进行选取地址进行分配。
  2. DHCP offer:服务器向主机进行应答,这个时候主机并没有收到自己的IP,所以进行广播找到准确的主机mac地址,再发送的这个报文里面会包含主机的准确的mac地址。(在真实生活中一般会做两个DHCP服务器,以防止其中一个宕机,在两个服务器都进行工作时都可以使用,一个主机请求IP地址,两个都可以分配,但因为只能用一个,所以那个服务器先给就用哪个。[抢占机制]
  3. DHCP request:客户端对服务器端进行广播来告诉服务器确认使用那个IP地址,使其他服务器给主机分配地址回收。
  4. DHCP ACK:进行广播再次确认给你使用后这个IP,使这个端口不会回收和分配给其他主机。

注意:1.IP只能在最后确认之后才能使用,中途不能直接使用服务器给我分配的地址。

2.在全程前三个报文都是显示确认,最后一个报文是隐士确认。

3.在所有报文中都是广播。

4.上面的流程是cisco,而华为的第二(服务器对主机进行发送数据的时候由原IP发送给分配的主机的准确IP,但是我们不能认为这个IP已经分配给他,但在第三步源IP又以0.0.0.0来占位),四报文都是进行单播。  

5.而我们在进行网络划分的时候

在我们进行dhcp分配地址时候,只有在同一个vlan中才能下发地址,我们可以通过dhcp 划分不同vlan来进行不同网段划分,路由器的子接口可以实现dhcp的网关,而我们的路由器虚拟接口不可以实现。

你可能感兴趣的:(网络,服务器,linux)