Notes on TCP/IPv1 Ch.16

#1 BOOTP是一个比较老的协议了, 现在已被DHCP取代.(Page.222)

#2 BOOTP用以取代RARP, (1)由于RARP只能获得IP地址(BOOTP能够包含大量信息); (2)RARP是链路层协议, RARP请求/应答只能限制在一个LAN里, 因此每个LAN都需要配备一个RARP server; (3)RARP需要操作链路层帧, server较难实现并且各平台实现不同. (Page.215)

#3 BOOTP的数据包定长为300字节. (Page.215)

#4 BOOTP数据包的transaction ID(事务ID)的作用相当于identification, client以此来匹配请求和回复, 一般设为一个随机数, 可设置为0忽略这个检测. (Page.217)

#5 BOOTP的number of second字段记录的是client从开始bootstrap(引导)到发送这个请求包经过的秒数, BOOTP主从server根据这个字段决定从server是否做出应答(如果number of second很大就可以认为主server宕机了). (Page.217)

#6 BOOTP数据包有4个IP address, client是客户端的IP地址, 如果client已经知道了自己的IP就可以设置这个字段, 否则设为全0; your是BOOTP server根据请求来设置的; server是BOOTP server的地址, 由server设置; gateway在使用了代理BOOTP server的时候由代理设置. (Page.217)

#7 BOOTP数据包的client hardware address字段的意义在于, 方便BOOTP server获得client的硬件地址, 以为BOOTP是基于UDP的一个应用层协议, server想要获得client的硬件地址是非常困难的(甚至是不可能的, 特别是在使用了proxy的时候). (Page.217)

#8 BOOTP请求在链路层是广播, 源地址为0.0.0.0(因为不知道自己的IP), 目的地址为255.255.255.255(限制广播, 绝不转发, 忽略IP头TTL). (Page.217)

#9 BOOTP server使用熟知端口67, 而且BOOTP client也使用了一个熟知端口68, 因为某些情况下BOOTP回应是广播的, 如果client使用临时端口, 那么可能影响到其他机器上也在使用相同临时端口的程序. (Page.217)

#10 BOOTP client匹配一个回应的方法有两个: 检查transaction ID或者client hardware address. (Page.217)

#11 整个BOOTP过程较为复杂, 要仔细阅读并注意IP地址和端口的变化. (Page.218)

#12 BOOTP的boot filename字段指定了一个引导时使用的文件, client在获得自己IP后会向server发起TFTP请求以获得这个文件. 在这个TFTP传输过程中, client的TFTP可以使用69这个TFTP server端口, 因为系统还在引导, 不可能存在TFTP server.(Page.218, 219)

#13 在BOOTP过程中, client在第一次请求的时候是不知道自己的IP的, 所以server在回应的时候, 无法通过ARP请求获得client的地址. 解决方法有二: (1)BOOTP请求里包含了client hardware address, 所以可以把这个硬件地址直接加入到ARP的缓存里面; (2)直接广播这个回应(回忆#9, #10). (Page.220)

#14 BOOTP请求可以通过设置好的路由器转发, 路由器收到广播的BOOTP请求后, 设置gateway IP address, hop count加1(上限为3, 超过的抛弃), 以单播方式转发请求给BOOTP server(估计这个server其实也可以是转发者, 否则不可能hop count上升到3), BOOTP server把回应发送给请求中设置好的gateway IP address, 再由转发路由器发送给client. (Page.220)

#15 BOOTP最后的字段用来存放厂商专用信息, 如果需要使用这个字段, 那么这个字段的最初4个字节被设为IP地址99.130.83.99. 这个字段后存放各种不同的信息, 通过信息的第一个字节tag的不同值来区分. (Page.221)

#16 BOOTP的厂商专用信息有一种为子网掩码, RFC建议使用BOOTP取代ICMP作为获取子网掩码的途径.

#17 一个"哑"(无盘)终端如果需要使用BOOTP, 需要在只读内存中实现BOOTP, TFTP, UDP, IP以及LAN的驱动.

posted on 2011-05-24 14:35  Qwertycen  阅读(236)  评论(0编辑  收藏  举报

导航