DHCP

 

然后再进一步的了解了openwrt的目录。

//

在通过代码测试路由器的过程中,对路由器的功能有进一步的了解与熟悉。在了解功能的生效情况上同时了解了一些相关的协议。在路由器的主要的功能上有DHCP提供的动态IP的分配。路由器作为三层的通信设备,使用到tco/ip作为通信的基础。DHCP就是tcp/ip层的协议,为路由器提供动态IP的功能。

首先DHCP是一个局域网的网络协议,使用UDP协议工作。主要的作用就是集中管理、分配IP地址,使client动态的获得IP地址、gateway地址、DNS服务器地址等信息。相较于静态IP设置,这些参数就需要自行配置。

DHCP运作的流程:

 

1、对DHCP发出请求的广播包:DISCOVER

2、DHCP 回应请求的单播包:DHCPOFFER

3、对DHCP回应的广播包:DHCPEQUST(广播其他服务器自己选择的哪一个DHCP服务器)

4、DHCP服务器向主机发送单播包:DHCPPACK

 

  1. 在以太网标头中写入本机地址的MAC地址和DHCP服务器地址,由于不知道服务器的地址,就填入一个广播地址:FF-FF-FF-FF-FF-FF。IP地址的填写,由于DHCP还没有分配给自己IP所以填写一些0,目标IP地址,也由于不知道谁是DHCP服务器,所以填入,255.255.255.255.

最后再udp 的标头填写端口号,发出方端口:68,接受端口:67.

  1. 接收到广播的DHCP服务器,进行拆包。首先拆开以太网的标头,看见FF就知道是一个广播地址,接下来拆开ip的标头,发现对方的IP为0000,接受方为255.255..这个时候DHCP服务器就明白了,这一一个请求IP的包。然后就分配出来一个未使用的IP填写到DHCP的数据包中,发送出去。这是在DHCP的包中,填入各自的MAC地址,目的IP填写255.255.255.255,发送IP填写DHCP服务器的IP地址。

(DHCP服务器这里发送的是单播包,在DHCP设计的时候,充分考虑到了tcp/ip协议实现的多样性,具体和DHCP有关的多样性体现在:tcp/ip协议栈没有完成ip地址的配置前,是否可以接受单播的报文?

有些ip协议栈在完成IP地址配置前,是可以接受Destination IP = Any的报文,只要该IP报文能够被硬件网卡接受并过滤给ip协议栈。

而有些IP协议栈在完成IP地址的配置前,是不会接受任何单播IP报文的,只会接受广播IP报文,即Destination IP = 255.255.255.255

无论是哪一种IP协议栈,都是可以接受广播报文的。

DHCP为了增强协议的健壮性,规定通过BROADCAST flag = 1或0来设置使用广播或则单播来和客户端通信。

单播最大的优点就是:通信是点对点方式,不会影响到广播域其他的主机

广播的特点:通信是点对所有点的方式,会影响到广播域的其他所有主机)

  1. 我们就接受到DHCP发送来单播包,拆开来后就得到了自己可以使用的IP地址。
  2. 在接受到DHCPOFFER包后,请求的主机还需要发送一个DHCPQUST的广播包,告诉其他可能存在的DHCP服务器,自己选择了哪一个DHCP服务器。(客户机采用最先收到的IP地址,并将DHCP请求报文(DHCP request)以UDP数据报方式本地广播)
  3. 确定:DHCP服务器收到请求报文并将对应IP标记为租用状态,租期为T,回复确认报文(DHCP PACK)告知客户机。

当租期已经到达1/2T时,客户机向服务器发送确认报文(DHCP ACK)以获得新的租期,这时服务器可回复否认报文(DHCP NACK)收回IP,若服务器无应答则等到7/8T重复此操作。

若等到7/8T时服务器仍无应答,则租期满时客户机将无法使用此IP,必须请求新的IP,否则就没有IP使用了。

 

在问题单的解决中了解了openwrt目录的一些基本使用方式,

对于target目录:包含了特定平台下的文件,固件镜像和内核构建过程的索引,以及生成编译器的编译工具。其中linux目录下为各个平台arch的相应的内核pathes,配置文件等,imagebuilder目录则扫描如何生成这个平台的固件。用来指导如何编译fireware、内核以及SDK。

一旦openwrt buildroot已正确配置,如指定目标平台和体系结构,用户空间包已经选择等,Openwrt buildroot会通过以下的步骤编译镜像

  1. 下载交叉编译工具,内核头文件等
  2. 建立staging_dir/目录,这个目录可以是在交叉编译工具链将被安装的地方,如果你想使用相同的交叉编译工具链用作其他的目的,比如编译第三方应用程序,你可以在这个目录下找到交叉编译工具,

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

潘多拉的面

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值