修改Bootp實驗

2021-04-24 21:30:21 字數 1590 閱讀 8622

修改bootp實驗

實驗目的:

1.修改bootp,去掉其自動獲得ip的功能

實驗原理

1.bootp的主要功能是使開發板動態獲得宿主機分配的ip位址,所以可以設想,如果靜態設定開發板的位址資訊,就可以在bootloader中去除bootp。

2.基於bootp的實現可能牽涉到一些環境變數資訊的設定,所以我們沒有完全去除bootp的原**,只是去掉了其獲得ip的功能。

實驗內容

1.檢視net.h檔案,可以發現以下宣告:

extern uchar        clientether[6];            // our ethernet address.

extern ulong        clientip;        // our ip addr (0 = unknown).

extern uchar        hostether[6];              // boot server enet address.

extern ulong        hostip;                 // server ip addr (0 = unkn).

所以,我們可以在bootloader中的環境變數中設定這些引數。

2.修改command.c檔案,在命令表中增加一條設定引數的命令,這裡我們給它起名為

cmd_tbl_setenv,相應的**函式為setenv();注意command.c檔案需要增加後面提

到的標頭檔案setenv.h,因為setenv.h中宣告了cmd_tbl_setenv引數。

cmd_tbl cmdtbl = ;

3.新建 setenv.c和setenv.h檔案如下:

//setenv.h

#include net.h

#define cmd_tbl_setenv

/bool setevn(cmd_tbl *cptr, int argc, char **argv);//設定主機和開發板的ip及網絡卡位址資訊

//setenv.c

#include 「setenv.h」

bool setevn(cmd_tbl *cptr, int argc, char **argv)

if (!strcmp(argv[1], "ethaddr"))

else if (!strcmp(argv[3], "ipaddr"))

else if (!strcmp(argv[5], "serverip"))

else if(!strcmp(argv[7], "serverethaddr"))

else}}

bool bootptx(void)     // bootptx.

if (clientip==0)

BOOTP 引導程式協議

1 引言 在進行系統引導時能夠通過r a r p來獲取它的 i p位址。然而使用 r a r p有兩個問題 1 i p位址是返回的唯一結果 2 既然 r a r p使用鏈路層廣播,r a r p請求就不會被路由器 迫使每個實際網路設定乙個rarp 伺服器 2 bootp 的分組格式 bootp 請求...

BOOTP引導程式協議

我們介紹了乙個無盤系統,它在不知道自身 i p位址的情況下,在進行系統引導時 能夠通過r a r p來獲取它的i p位址。然而使用r a r p有兩個問題 1 i p位址是返回的唯一結 果 2 既然r a r p使用鏈路層廣播,r a r p請求就不會被路由器 迫使每個實際網路 設定乙個rarp 伺...

dhcp和bootp協議的區別

說明 本文 與rarp類似,bootp和dhcp都是用於獲取主機ip位址的協議,三者都是基於客戶伺服器模式,但由於rarp在低層操作,使用它就必須訪問網路硬體,因此應用程式設計人員很難或者不太可能構造乙個伺服器。bootp及dhcp應運而生,bootp協議早與dhcp,但而這都是構建在傳輸層udp之...