• DHCP&DHCPv6


    1.DHCP in IPv4

    DHCP(Dynamic Host Configuration Protocol),动态主机配置协议,分配IP地址和其他网络参数;

    DHCP三种角色:DHCP Client、DHCP Relay和DHCP Server;

    DHCP端口:Client UDP68---->Server,Server UDP67---->Client;

    DHCP8种报文:DHCP DISCOVER、DHCP OFFER、DHCP REQUEST、DHCP ACK、DHCP NAK、DHCP DECLINE、DHCP RELEASE、DHCP INFORM

    OP(OP code):1字节,OP=1客户端请求报文,OP=2服务器响应报文;

    htype(Hardware Type):1字节,硬件类型

    hlen(Hardware Length):1字节,硬件地址长度,以太网为6,48位;

    hops:1字节,表示DHCP报文经过的DHCP Relay的数目,hops≤16;

    xid:4字节,DHCP客户端选取的随机数,使DHCP服务器的回复与DHCP客户端的报文相关联

    secs(seconds):2字节,表示客户端从开始获取地址或地址续租更新后所用的时间,单位是秒。

    flags:2字节,16bit,只有最高位有意义;0表示客户端请求服务器以单播形式发送响应报文;1表示客户端请求服务器以广播形式发送响应报文;

    ciaddr(client ip address):客户端IP;

    yiaddr(your ip address):服务器分配给客户端IP;

    siaddr (server ip address):DHCP客户端获得启动配置信息的服务器的IP地址;

    giaddr(gateway ip address):表示第一个DHCP中继的IP地址;

    chaddr (client hardware address):表示客户端的MAC地址;

    sname (server host name):表示客户端获取配置信息的服务器名字;

    file (file name):表示客户端需要获取的启动配置文件名;

    options:表示DHCP的选项字段,最多为312字节;1字节Type+1字节Length+Value(由Length决定)

    options53决定了DHCP报文了类型,很多option代码代表了不同的意思;

    1.1客户端首次接入网络DHCP无中继工作过程

    第一阶段:Client广播Discover---->同网段所有设备或Relay;

    第二阶段:Server会比较一下Client希望的租期和自己配置的租期,提供一个时间短的租期;

    第三阶段:如收到多个Offer,只接第一个,Request(Server标识符、客户端IP地址)广播通知所有Server;

    第四阶段:Client收到ACK,发送免费ARP确认是否地址冲突;

    如冲突Client发送Decline---->Server,之前过程重来;

    如Server收到Request,发现无法提供这个IP了,Server发送NAK---->Client,之前过程重来;

    1.2客户端首次接入网络DHCP有中继工作过程

    过程与无中继基本相同,不同点如下:

    第一阶段:收到Discover,检查hops,大于16则丢弃;giaddr=0,填入接收Discover接口的IP,否则不修改;修改DHCP目的IP为下一跳Relay或DHCP Server;

    第二阶段:提供giaddr同网段IP地址,向giaddr标识的Relay单播发送Offer,Relay检查广播标志位如置1,则广播Offer,如未置1,则单播发给Client;

    第三、四阶段同上;

    1.3客户端重用曾用过的IP地址DHCP工作过程

    Client 发送Request(Option50填入之前用过的IP)---->Server;

    Server通过查看自身MAC和IP对应记录决定是否给Client续用,如果可以---->ACK,否则沉默,直到客户端重新发送Discover报文;

    1.4客户端更新租期DHCP工作过程

     

    Client 租期50%单播发送Request---->Server,Server 发送ACK---->Client,则续租成功;

    Client 租期87.5%如还未收到ACK,广播发送Request---->Server,Server 发送ACK---->Client,则续租成功;

    Client 租期100%如还未收到ACK,或者在以上过程种收到NAK,Client重新发送DHCP DISCOVER报文请求新的IP地址;

    Client 租期到期前不想继续使用IP,DHCP RELEASE---->Server; Client 发送DHCP INFORM---->请求更新配置信息;

    2.DHCPv6

    类似IPv4中DHCP,基于UDP,IPv6不使用广播,使用组播报文;

    分配类型:

    1、手动配置

    2、无状态自动地址分配(利用NDP)

    3、DHCPv6有状态自动配置

    4、DHCPv6无状态自动配置(利用NDP获取地址,利用DHCPv6获取除地址以外的其他参数)

    报文:

    msy-type报文类型,总共13种;1Solicit2Advertise3Request4Confirm5Renew6Rebind7Reply8Release9Decline10Reconfigure11Information-Request12Relay-Forward13Relay-Reply

    transaction-ID:DHCPv6交互ID,这是个随机值,要保证服务器响应和客户端请求两者交互ID一致,如果服务器主动发起的报文ID为0;

    options:DHCPv6的选项字段;

    2.1无状态自动地址分配

    无状态自动配置:即插即用,可以配置多个地址进行网络无缝迁移,利用RS、RA报文实现。

    无状态自动配置,没有DHCP的情况下,设备自己生成IPv6地址

    路由器发现功能用来发现与本地链路相连的设备,并获取与地址自动配置相关的前缀和其他配置参数。

    在IPv6中,IPv6地址可以支持无状态的自动配置,即主机通过某种机制获取网络前缀信息,然后主机自己生成地址的接口标识部分。路由器发现功能是IPv6地址自动配置功能的基础,主要通过以下两种报文实现:

    • 路由器请求RS(Router Solicitation)报文:Type=133,主机接入网络后希望尽快获取网络前缀进行通信,此时主机立刻发送RS报文。(地址解析和DAD中用的那个叫NS,Type=135)
    • 路由器通告RA(Router Advertisement)报文:Type=134,每台设备为了让二层网络上的主机和设备知道自己的存在,定时都会组播发送RA报文,RA报文中会带有网络前缀信息,及其他一些标志位信息。(地址解析和DAD中用的那个叫NA,Type=136)

    IPv6主机无状态自动配置过程:

    • 根据接口标识产生链路本地地址。
    • 发出邻居请求,进行重复地址检测。
    • 如地址冲突,则停止自动配置,需要手工配置。
    • 如不冲突,链路本地地址生效,节点具备本地链路通信能力。
    • 主机会发送RS报文(或接收到设备定期发送的RA报文)。
    • 根据RA报文中的前缀信息和接口标识得到IPv6地址。

    2.2DHCPv6有状态地址分配

    2.2.1DHCPv6四步交互(多用于存在多个DHCPv6服务器的情况下)

     

    利用Solicit报文来定位DHCPv6服务器,收到Advertise报文后根据优先级确定使用哪个DHCPv6服务器,接着通过Request/Reply报文交互完成地址申请和分配。

    2.2.2DHCPv6两步交互

     

    客户端发送Solicit报文中携带Rapid Commit选项,DHCPv6支持快速分配就直接回复Reply,如果不支持按照四部交互执行。

    2.3DHCPv6无状态自动配置

    IPv6地址获得过程如2.1描述

     

    客户端以组播方式发送Information-Request报文,该报文中携带Option Request选项,指定DHCPv6客户端需要从DHCPv6服务器获取的配置参数。DHCPv6服务器单播发送Reply报文,将网络配置参数返回给DHCPv6客户端。

    2.4DHCPv6 PD

    这个全称叫DHCPv6前缀代理DHCPv6 PD(Prefix Delegation)是一种前缀分配机制,通俗的说是分配网段的。

    过程类似DHCPv6的有状态地址分配,过程分四步:

    1、DHCPv6 PD Client 发送Solicit报文,请求;

    2、DHCPv6 PD Server发送Advertise报文确认可以提供前缀;

    3、根据收到的多个Advertise报文选优先级高的,并向该服务器发送DHCPv6 request;

    4、服务器回复Reply报文将地址前缀分配给客户端使用。

    如果客户端携带了Rapid Commit过程同DHCPv6两步交互

    2.5DHCPv6中继

    1、客户端先向FF02::1:2(组播地址)的请求报文;

    2、中继将收到的报文封装在Relay-Forward报文的中继消息选项(Relay Message Option)中,并将Relay-Forward报文发送给DHCPv6服务器或下一跳中继;

    3、如果客户端和中继不在同一链路,则重新构造一个新的Relay-Forward报文,并将Relay-Forward报文发送给DHCPv6服务器或下一跳中继;

    4、Server从客户端收到Relay-Forward后解析出DHCPv6客户端请求,将应答封装到Relay-reply的中继消息选项中,并将Relay-reply发给中继;

    5、DHCPv6中继从Relay-Reply报文中解析出DHCPv6服务器的应答,转发给DHCPv6客户端。

    2.6DHCPv6地址续租

    DHCPv6服务器为DHCPv6客户端分配的地址是有租约的,租约由生命期(包括地址的首选生命期和有效生命期构成)和续租时间点(IA的T1、T2)构成。有效生命周期前,续租,否则失效。

     

    客户端在T1时刻发送Renew(T1推荐为0.5生命期)

    服务器回复Reply则可以续约,如果未收到回复,则如下图

     

    客户端在T2时刻,向服务器组播发送Rebind(T2推荐0.8生命期),收到回复继续使用。

    否则,在生命周期到达后,地址失效不能再用

  • 相关阅读:
    hdu 3715(二分+2-sat)
    hdu 3622(二分+2-sat判断可行性)
    hdu 3062+1824(2-sat入门)
    【转载】lucene中Field.Index,Field.Store详解
    【转载】那些年我们一起清除过的浮动demo
    【转载】那些年我们一起清除过的浮动
    【转载】Visaul Studio 常用快捷键的动画演示
    【转载】各浏览器CSS兼容问题
    【转载】HTTP 错误 500.19
    【转载】Memcached在.Net中的基本操作
  • 原文地址:https://www.cnblogs.com/liuhongru/p/12048496.html
Copyright © 2020-2023  润新知