![用TCP-IP進行網(wǎng)際互連習題解答_第1頁](http://file4.renrendoc.com/view/e97cb50528f6bcdaeb024d0ed8f6d79a/e97cb50528f6bcdaeb024d0ed8f6d79a1.gif)
![用TCP-IP進行網(wǎng)際互連習題解答_第2頁](http://file4.renrendoc.com/view/e97cb50528f6bcdaeb024d0ed8f6d79a/e97cb50528f6bcdaeb024d0ed8f6d79a2.gif)
![用TCP-IP進行網(wǎng)際互連習題解答_第3頁](http://file4.renrendoc.com/view/e97cb50528f6bcdaeb024d0ed8f6d79a/e97cb50528f6bcdaeb024d0ed8f6d79a3.gif)
![用TCP-IP進行網(wǎng)際互連習題解答_第4頁](http://file4.renrendoc.com/view/e97cb50528f6bcdaeb024d0ed8f6d79a/e97cb50528f6bcdaeb024d0ed8f6d79a4.gif)
![用TCP-IP進行網(wǎng)際互連習題解答_第5頁](http://file4.renrendoc.com/view/e97cb50528f6bcdaeb024d0ed8f6d79a/e97cb50528f6bcdaeb024d0ed8f6d79a5.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
李杰
QQ:459123240用TCP/IP進行網(wǎng)際互聯(lián)
習題解答4.2為不使用ARP的網(wǎng)絡接口構思一份地址綁定軟件設計草圖解答:
通過直接映射進行轉換,考慮proNET令牌環(huán)網(wǎng)絡,它使用小整數(shù)表示物理地址,并且允許用戶在把接口板安裝到計算機中時自己選擇硬件地址,對于這種網(wǎng)絡硬件,使其地址轉換易于進行的關鍵是,只要它的IP地址和物理地址可以自由選擇,那么總可以讓它們中的某些部分是相同的,一般的,分配IP地址的主機號部分為1,2,3等,然后在安裝網(wǎng)絡接口硬件時,選擇與IP地址對應的物理地址。
例如,系統(tǒng)管理員為IP地址為的計算機選擇物理地3,因為是個主機部分等于3的C類地址。對于類似proNET的網(wǎng)絡,從IP地址計算出物理地址是很容易的,這種計算是從ID地址中取其主機部分,因為只需要幾條機器指令,所以計算效率很高。由于映射可以在不引用外部數(shù)據(jù)的情況下完成,所以很易于維護。最后,不需要改變現(xiàn)在的分配或重新編譯代碼就可以在網(wǎng)絡中添加新機器。
從概念上講,選擇一個使地址轉換高效的編號方法就是選擇一個函數(shù)f,f把IP地址映射到物理地址。設計人員也可以根據(jù)硬件選擇一種物理地址編號方法。IP地址IA意味著計算PA=f(IA)
我們要f的計算高效,如果物理地址的集合受到限制,也有可以實現(xiàn)其他高效的映射,例如,在諸如ATM的面向連接的網(wǎng)絡上IP,就無法隨意選擇物理地址。在這種網(wǎng)絡中,由一臺或多臺計算機(服務器)存儲地址對,每個地址對中一個Internet地址和對應的物理地址。一般情況下,這樣的服務器把地址對存儲在主存中的一張表里,以加快搜索速度。在這種情況下,為了迅速轉換地址,軟件可以用傳統(tǒng)的哈希函數(shù)搜索地址表。
4.4設想某網(wǎng)點決定對僅在給定的網(wǎng)絡中惟一的地址ARP(不用ARP也可能實現(xiàn)地址綁定)。我們的范例程序能在與兩個這種網(wǎng)絡相連接的一個網(wǎng)關上正確地運行嗎?為什么?
解答:不可以?!皟H在給定的網(wǎng)絡中惟一的地址”意味著不同的網(wǎng)絡地址不一定唯一(可以詳細分析)。
4.8因為任何設備都有可能響應一個ARP分組的廣播,所以ARP容易上當受騙。通過增加判斷以下的語句來修改范例:(a)兩個或更多個設備響應了某個給定IP地址的請求分組。(b)一個設備接收到自己的IP地址的ARP綁定。(c)一個設備響應了多個IP地址請求分組。解答提示:在arp_in函數(shù)中的修改方法:(a)有很多種方法,比如:分析判斷多個設備的確認分組的mark,從中選出正確的,比較復雜點;或者進行屏蔽;….(b)直接屏蔽(c)直接屏蔽5.1“0”的反碼有兩個值,cksum將返回哪一個?
解答:注意cksum函數(shù)的返回值為short類型,sum為unsignedlong型,0的反碼為32個1,強制轉換為short類型后為16個1。5.3考慮為所有發(fā)往IP的數(shù)據(jù)報使用一個單一的輸入隊列的實現(xiàn)方案。這種方案的主要缺點是什么?解答:1.一個網(wǎng)絡接口由于大量數(shù)據(jù)造成的溢出將會影響所有其他接口。2.對偽網(wǎng)絡接口的判斷比較麻煩。3.優(yōu)先級處理上比較死板,只能是先到先得。5.6指出為什么在沒有數(shù)據(jù)報等待被處理的情況下,ipproc也有可能做最后一次循環(huán),提示:考慮IP進程和一個放置數(shù)據(jù)并向IP發(fā)送報文的驅(qū)動程序之間的定時處理。解答:當ipgetp選擇了一個數(shù)據(jù)報之后進行發(fā)送,若對方未成功接收而等待時間已超,則ipproc會再做一次循環(huán)。6.2散列表元的數(shù)目決定了桶散列方案的有效性,因為它決定了的平均長度。如果希望平均每個不多于3個表項,那么要保存1000條需要多大的內(nèi)存?解答:由題意算出散列表元的數(shù)目為1000/3≈334個每個表元大小為4B,每個表項的大小為32B
所以需要的內(nèi)存大小為32B*1000+4B*334=33336B6.3如果過程rtdel調(diào)用rtfree而不是使用宏RTFREE,結果怎樣?解答:由rtfree函數(shù)定義:
int
rtfree(structroute*prt){if(!Route.ri_valid)returnSYSERR;wait(Route.ri_mutex);RTFREE(prt);signal(Route.ri_mutex);returnOK;}當rtdel調(diào)用rtfree函數(shù)后,可能會出現(xiàn)如下的死鎖情況:
wait(Route.ri_mutex)wait(Route.ri_mutex)Signal(Route.ri_mutex)Signal(Route.ri_mutex)
7.2仔細查看ipputp和ipfhcopy過程。會不會出現(xiàn)ipputp將分片的最大有效長度估計得過小的情況?為什么?解答:Int
ipputp(unsignedifn,IPaddr
nh,struct
ep*pep){
struct
netif
*pni=&nif[ifn];
struct
ip*pip;
int
hlen,maxdlen,tosend,offset,offindg;if(pni->ni_state==NIS_DOWN){//判斷接口是否啟用
freebuf(pep);returnSYSERR;}pip=(struct
ip*)pep->ep_data;//復制數(shù)據(jù)部分
if(pip->ip_len<=pni->ni_mtu){//若數(shù)據(jù)報長度小于最大傳輸單元,則不用分片
pep->ep_nexthop=nh;pip->ip_cksum=0;iph2net(pip);pep->ep_order&=~EPO_IP;pip->ip_cksum=cksum((WORD*)pip,IP_HLEN(pip));returnnetwrite(pni,pep,EP_HLEN+net2hs(pip->ip_len));}/*else,weneedtofragmentit*/if(pip->ip_fragoff&IP_DF){//確定是否能夠分片
IpFragFails++;
icmp(ICT_DESTUR,ICC_FNADF,pip->ip_src,pep,0);returnOK;}
maxdlen=(pni->ni_mtu-IP_HLEN(pip))&~7;//確定可發(fā)送的最大數(shù)據(jù)量pni->ni_mtuoffset=0;//上面的pni是網(wǎng)絡接口單元最大傳輸量
offindg=(pip->ip_fragoff&IP_FRAGOFF)<<3;//偏移量,但這里左移3保存了分片控制的那3位
tosend=pip->ip_len-IP_HLEN(pip);//要發(fā)送數(shù)據(jù)的長度,注意這里是pip->len。
while(tosend>maxdlen){if(ipfsend(pni,nh,pep,offset,maxdlen,offindg)!=OK){//如果發(fā)送失敗,丟棄
IpOutDiscards++;
freebuf(pep);returnSYSERR;}
IpFragCreates++;//否則,分片數(shù)+1
tosend-=maxdlen;//將發(fā)送數(shù)據(jù)的長度減去最大可發(fā)送數(shù)據(jù)量,表示已經(jīng)發(fā)送一個分片。//新偏移量置為最大可發(fā)送數(shù)據(jù)量+當前偏移量,表示下一個分片的數(shù)據(jù)從這里開始offset+=maxdlen;
offindg+=maxdlen;}//接下來的代碼,處理最后一個分片IpFragOKs++;
IpFragCreates++;
hlen=ipfhcopy(pep,pep,offindg);//由于是最后一個分片,直接用offindg復制到原來
pip=(struct
ip*)pep->ep_data;/*slidetheresidualdown*/
memcpy(&pep->ep_data[hlen],&pep->ep_data[IP_HLEN(pip)+offset],tosend);/*keepMF,ifthiswasafragtostartwith*/pip->ip_fragoff=(pip->ip_fragoff&IP_MF)|(offindg>>3);pip->ip_len=tosend+hlen;pip->ip_cksum=0;iph2net(pip);pep->ep_order&=~EPO_IP;pip->ip_cksum=cksum((WORD*)pip,hlen);pep->ep_nexthop=nh;returnnetwrite(pni,pep,EP_HLEN+net2hs(pip->ip_len));}然后是發(fā)送一個數(shù)據(jù)報片函數(shù):Int
ipfsend(struct
netif
*pni,IPaddr
nexthop,struct
ep*pep,unsignedoffset,unsignedmaxdlen,unsignedoffindg){
struct
ep
*pepnew;
struct
ip*pip,*pipnew;
int
hlen,len;
pepnew=(struct
ep*)getbuf(Npool);//分配新緩沖區(qū)
if(pepnew==(struct
ep*)SYSERR)returnSYSERR;
pepnew->ep_order=~0;
hlen=ipfhcopy(pepnew,pep,offindg);/*copytheheaders*/pip=(struct
ip*)pep->ep_data//復制數(shù)據(jù);
pipnew=(struct
ip*)pepnew->ep_data;//分配數(shù)據(jù)格式
pipnew->ip_fragoff=IP_MF|(offindg>>3);
pipnew->ip_len=len=maxdlen+hlen;//確定首部長
pipnew->ip_cksum=0;iph2net(pipnew);
pepnew->ep_order&=~EPO_IP;
pipnew->ip_cksum=cksum((WORD*)pipnew,hlen);
memcpy(&pepnew->ep_data[hlen],&pep->ep_data[IP_HLEN(pip)+offset],maxdlen);//復制數(shù)據(jù)
pepnew->ep_nexthop=nexthop;returnnetwrite(pni,pepnew,EP_HLEN+len);}該函數(shù)其實和iputp類似。不多說了然后是復制數(shù)據(jù)報首部函數(shù)Int
ipfhcopy(struct
ep
*pepto,struct
ep
*pepfrom,unsignedoffindg){
struct
ip
*pipfrom=(struct
ip*)pepfrom->ep_data;unsignedi,maxhlen,olen,otype;unsignedhlen=(IP_MINHLEN<<2);//最小IP數(shù)據(jù)報頭部長度,轉換成字節(jié)
if(offindg==0){//第一個IP分片,所有的數(shù)據(jù)報頭都拷貝過來,包括選項部分
memcpy(pepto,pepfrom,EP_HLEN+IP_HLEN(pipfrom));returnIP_HLEN(pipfrom);}/*以下說明不是第一個IP分片*/
memcpy(pepto,pepfrom,EP_HLEN+hlen);//先拷貝除IP選項外的報頭,注意有EP_HLEN/*copyoptions*//*拷貝選項部分*/
maxhlen=IP_HLEN(pipfrom);//現(xiàn)在的報頭,比如有IP選項了
i=hlen;//最小報頭,沒有IP選項
while(i<maxhlen){//說明有IP選項
otype=pepfrom->ep_data[i];//IP選項
olen=pepfrom->ep_data[++i];//選項長度
if(otype&IPO_COPY){//該選項復制到所有數(shù)據(jù)報片中
memcpy(&pepto->ep_data[hlen],&pepfrom->ep_data[i-1],olen);
hlen+=olen;}elseif(otype==IPO_NOP||otype==IPO_EOOP){//選項表結束
pepto->ep_data[hlen++]=otype;
olen=1;}i+=olen-1;if(otype==IPO_EOOP)break;}/*padtoamultipleof4octets*/while(hlen%4)//填充到4字節(jié)的整數(shù)倍
pepto->ep_data[hlen++]=IPO_NOP;returnhlen;}
由于每個數(shù)據(jù)報片必須含有一個首部,因此一次可發(fā)送的最大數(shù)據(jù)量應該是mtu減去ip首部的長度,然后截斷為最接近8的倍數(shù)。&~7實現(xiàn)截短,而ipfhcopy函數(shù)大部分代碼要考慮到IP選項的細節(jié)。據(jù)協(xié)議標準,有些選項只應當出現(xiàn)在第一個數(shù)據(jù)報片中,而其他一些應當出現(xiàn)在所有的數(shù)據(jù)報片中。所以有可能會出現(xiàn)ipputp將分片的最大有效長度估計得過小。7.9每當一個數(shù)據(jù)報片到達時,就為這個數(shù)據(jù)報的壽命重置初始值,與在第一個數(shù)據(jù)報片到達進給整個數(shù)據(jù)報設置一個壽命字段相比,有什么優(yōu)點及缺點?解答:優(yōu)點:一般來說,分片的時間間隔不大,第一種方法使得分片丟失在短時間內(nèi)被發(fā)現(xiàn),使得資源利用率提高,發(fā)送方能過及早知道分組丟失情況,不容易和重發(fā)分組混淆。缺點:初始值不好設定,如果采用第二種方法,則初始值就是超時時延的一半.8.1考慮過程icsetsrc,在什么情況下循環(huán)語句遍歷了所有接口后,仍然找不到一個匹配接口?解答:但執(zhí)行代碼的主機或路由器不是目的主機時候,會發(fā)生這種情況??赡艿脑颍?.IP分組在傳輸過程中產(chǎn)生錯誤。2.這是一個重定向報文。8.5假設一個網(wǎng)關為某個含有子網(wǎng)的地址的目的站生成了一個ICMP“重定向”報文(即子網(wǎng)掩碼延伸超過了地址中的網(wǎng)絡部分)。它應該將此“重定向”報文作為“主機重定向”,還是“網(wǎng)絡重定向”?為什么?提示:參考[RFC1812]。解答: 主機重定向 網(wǎng)關必須檢查新路由,以決定這是一條指定主機的路由還是一條指定網(wǎng)絡的路由。為了做到這一點,它檢查與此路由相關聯(lián)的子網(wǎng)掩碼,如果掩碼覆蓋掉的不僅僅是網(wǎng)絡部分,則ipredirct說明這個報文是一個“主機重定向”,否則它說明此報文為“網(wǎng)絡重定向”舉例說明。10.7一個服務器系統(tǒng)能同時使用多少個UDP端口?一個典型的客戶工作站又使用多少個?
解答:可以使用netstat–anb查看UDP端口使用情況1.一臺服務器,開啟DNS服務,正常負載情況下,UDP端口占用不超過1000
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025公司與員工解除勞動合同范本
- 2024年春八年級生物下冊 23.1 生物的生存依賴一定的環(huán)境說課稿 (新版)北師大版
- 2025寫字樓租賃合同寫字樓租賃合同模板
- Unit 6 Jobs Lesson 6 story time.(說課稿)-2024-2025學年人教新起點版英語四年級上冊
- 7 《包身工》 說課稿 2024-2025學年統(tǒng)編版高中語文選擇性必修中冊
- Unit5 What do they do(說課稿)-2024-2025學年譯林版(三起)英語五年級上冊
- 西班牙瓦鋪貼施工方案
- 迎春燈飾施工方案
- 20美麗的小興安嶺說課稿-2024-2025學年三年級上冊語文統(tǒng)編版
- 12《富起來到強起來》(說課稿)統(tǒng)編版道德與法治五年級下冊
- 暑假作業(yè) 11 高二英語語法填空20篇(原卷版)-【暑假分層作業(yè)】2024年高二英語暑假培優(yōu)練(人教版2019)
- 小學數(shù)學教學評一體化教學探究
- 2024年江西省南昌市南昌縣中考一模數(shù)學試題(含解析)
- 2024年保安員考試題庫【典型題】
- 人教版數(shù)學八年級下冊第十九章課堂同步練習
- 繪本的分鏡設計-分鏡的編排
- 查干淖爾一號井環(huán)評
- 售后工程師績效考核指南
- 體檢中心分析報告
- 人教版初中英語七八九全部單詞(打印版)
- (新版)非阿片類鎮(zhèn)痛藥治療慢性疼痛病中國指南
評論
0/150
提交評論