免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4396 | 回复: 9
打印 上一主题 下一主题

BOOTP协议的疑问 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-09-19 22:07 |只看该作者 |倒序浏览
客户端不知道自己的IP,所以以源IP:0.0.0.0,目标IP:255.255.255.255发送请求,服务器端则以源IP:服务器IP,目标IP:为客户端分配的IP,为客户返回应答,但问题是客户还没有IP地址,如何接收目标地址为服务器所分配的地址的应答包呢?莫非只要不设IP地址,IP层就不对目标地址进行验证了?

论坛徽章:
5
IT运维版块每日发帖之星
日期:2015-08-06 06:20:00IT运维版块每日发帖之星
日期:2015-08-10 06:20:00IT运维版块每日发帖之星
日期:2015-08-23 06:20:00IT运维版块每日发帖之星
日期:2015-08-24 06:20:00IT运维版块每日发帖之星
日期:2015-11-12 06:20:00
2 [报告]
发表于 2008-09-19 23:45 |只看该作者
不是的。一个PC是否会接收包,是由MAC地址决定的。但是这个包是否会送到IP层则是有IP决定的。\r\n\r\n但是DHCP是监听在链路层工作的,因此它可以截获这个包。\r\n\r\n不过按照我的想法,此处的目标IP设置为0.0.0.0似乎更加合理。但是DHCP的实现就是如此。不过这个不会影响DHCP CLIENT进程收包的。

论坛徽章:
0
3 [报告]
发表于 2008-09-20 22:09 |只看该作者
有了MAC地址后,主机会向网关发arp包得到IP地址?bootp不熟悉。

论坛徽章:
0
4 [报告]
发表于 2008-09-20 23:32 |只看该作者
但问题是客户还没有IP地址,如何接收目标地址为服务器所分配的地址的应答包呢?
\r\n\r\n这个问题问得好,请看下面的两段话,针对您的疑问给出了明确的答案。\r\n
\r\nA BOOTP server that receives the request looks up several pieces of configuration information for the computer that issued the request, places the information in a single BOOTP Response message, and returns the reply to the requesting computer. Thus, in a single step, a computer can obtain information such as the computer\'s IP address, the server\'s name and IP address, and the IP address of a default router.\r\n\r\nLike other protocols used to obtain configuration information, BOOTP broadcasts each request. Unlike other protocols used for configuration, BOOTP appears to use a protocol that has not been configured: BOOTP uses IP to send a request and receive a response. How can BOOTP send an IP datagram before a computer\'s IP address has been configured? The answer lies in a careful design that allows IP to broadcast a request and receive a response before all values have been configured. To send a BOOTP datagram, IP uses the all-1\'s limited broadcast address as a DESTINATION ADDRESS , and uses the all-0\'s address as a SOURCE ADDRESS . If a computer uses the all-0\'s address to send a request, a BOOTP server either uses broadcast to return the response or uses the hardware address on the incoming frame to send a response via unicast. (The server must be careful to avoid using ARP because a client that does not know its IP address cannot answer ARP requests.)\r\n\r\nThus, a computer that does not know its IP address can communicate with a BOOTP server. \r\n\r\n

论坛徽章:
0
5 [报告]
发表于 2008-09-22 10:30 |只看该作者
不是的。一个PC是否会接收包,是由MAC地址决定的。但是这个包是否会送到IP层则是有IP决定的
\r\n问题是现在讨论的是BOOTP,BOOTP是在传输层实现的,使用UDP报文,除非IP层在没有配置IP地址前接受任何从链路层递交上来的数据报。\r\n\r\n
The answer lies in a careful design that allows IP to broadcast a request and receive a response before all values have been configured
\r\n这句话是否说明了IP层在没有配置IP地址前可以接受任何从链路层递交上来的数据报呢?

论坛徽章:
0
6 [报告]
发表于 2008-09-22 11:50 |只看该作者

回复 #5 lanying_wzw 的帖子

To send a BOOTP datagram, IP uses the all-1\'s limited broadcast address as a DESTINATION ADDRESS , and uses the all-0\'s address as a SOURCE ADDRESS . If a computer uses the all-0\'s address to send a request, a BOOTP server either uses broadcast to return the response or uses the hardware address on the incoming frame to send a response via unicast. \r\n\r\n0.0.0.0作为source地址向255.255.255.255发请求,BOOTP server就可以获得客户端的mac地址了。

论坛徽章:
5
IT运维版块每日发帖之星
日期:2015-08-06 06:20:00IT运维版块每日发帖之星
日期:2015-08-10 06:20:00IT运维版块每日发帖之星
日期:2015-08-23 06:20:00IT运维版块每日发帖之星
日期:2015-08-24 06:20:00IT运维版块每日发帖之星
日期:2015-11-12 06:20:00
7 [报告]
发表于 2008-09-22 12:13 |只看该作者

回复 #5 lanying_wzw 的帖子

是的。\r\n\r\n不是说UDP数据包一定是在传输层才能接收的。在更低的层也是可以的。但是更高的层肯定是不行的。\r\nDHCP 服务端和客户端监听的都是原始套接字接口的,这可以抓取到任何的包。\r\n\r\n另外,即使你的机器没有配IP,是一样可以接收IP包的。但是处理的过程和配了正确的IP是不一样的。我说过了一个机器是否收包取决的是MAC,而不是IP。

论坛徽章:
0
8 [报告]
发表于 2008-09-22 15:53 |只看该作者
我当然知道在链路层什么包都能收到了,BOOTP客户端完全可以访问链路层,获取UDP包,但我的问题是,当客户端没有设置IP地址的时候,一个IP层以上的应用能否接收到下层的包?系统的IP层会丢弃IP包,还是将用户数据递送给高层?

论坛徽章:
0
9 [报告]
发表于 2008-09-22 16:11 |只看该作者
英文原义:Bootstrap Protocol\r\n  中文释义:自举协议\r\n  注解:该协议是一个基于TCP/IP协议的协议,它可以让无盘站从一个中心服务器上获得IP地址,为局域网中的无盘工作站分配动态IP地址,并不需要每个用户去设置静态IP地址。使用BOOTP协议的时候,一般包括Bootstrap Protocol Server(自举协议服务端)和Bootstrap Protocol Client(自举协议客户端)两部分。\r\n  应 用:该协议主要用于有无盘工作站的局域网中,客户端获取IP地址的过程如下:首先,由BOOTP启动代码启动客户端,这个时候客户端还没有IP地址,使用广播形式以IP地址0.0.0.0向网络中发出IP地址查询要求。接着,运行BOOTP协议的服务器接收到这个请求,会根据请求中提供的MAC地址找到客户端,并发送一个含有IP地址、服务器IP地址、网关等信息的FOUND帧。最后,客户端会根据该FOUND帧来通过专用TFTP服务器下载启动镜像文件,模拟成磁盘启动。

论坛徽章:
0
10 [报告]
发表于 2008-09-22 17:30 |只看该作者
但问题是客户还没有IP地址,如何接收目标地址为服务器所分配的地址的应答包呢?莫非只要不设IP地址,IP层就不对目标地址进行验证了?\r\n==================================\r\nserver会根据client发来的广播帧里的mac地址,发给client一个数据帧,里面包含client的ip,server的IP、网关等信息的FOUND帧。此时client就会把自己设置为此ip。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP