直接開始
1. POEAF,AT,BT三種供電標(biāo)準(zhǔn),及其最大輸出功率。
2. 二三層轉(zhuǎn)發(fā)基本原理
3. 結(jié)構(gòu)體占用空間,sizeof與strlen分別對(duì)指針和數(shù)組求值
4. 端口自協(xié)商內(nèi)容,協(xié)商過(guò)程及原理。
A:
快速連接脈沖(Fast Link Pulse)
在具備自協(xié)商能力的端口沒有Link的情況下,端口一直發(fā)送FLP,在FLP中包含著自己的連接能力信息,包括支持的速率能力、雙工能力、流控能力等。這個(gè)連接能力是從自協(xié)商能力寄存器中得到的(Auto-Negotiation Advertisement Register ,PHY標(biāo)準(zhǔn)寄存器地址4 )。依靠脈沖位置編碼攜帶數(shù)據(jù)。一個(gè)FLP突發(fā)包含33個(gè)脈沖位置。17個(gè)奇數(shù)位置脈沖為時(shí)鐘脈沖,時(shí)鐘脈沖總是存在的;16個(gè)偶數(shù)位置脈沖用來(lái)表示數(shù)據(jù):此位置有脈沖表示1,此位置沒有脈沖表示0。這樣1個(gè)FPL的突發(fā)就可以傳輸16bit的數(shù)據(jù)。自協(xié)商交互數(shù)據(jù)就這樣通過(guò)物理線路被傳輸。
如果兩端都支持自協(xié)商,則都會(huì)接收到對(duì)方的FLP,并且把FLP中的信息解碼出來(lái)。得到對(duì)方的連接能力。并且把對(duì)端的自協(xié)商能力值記錄在自協(xié)商對(duì)端能力寄存器中(Auto-Negotiation Link Partner Ability Register , PHY標(biāo)準(zhǔn)寄存器地址5 )。同時(shí)把狀態(tài)寄存器(PHY標(biāo)準(zhǔn)寄存器地址1)的自協(xié)商完成bit(bit5)置成1。在自協(xié)商未完成的情況下,這個(gè)bit一直為0。然后各自根據(jù)自己和對(duì)方的最大連接能力,選擇最好的連接方式Link。比如,如果雙方都即支持10M也支持100M,則速率按照100M連接;雙方都即支持全雙工也支持半雙工,則按照全雙工連接。一定連接建立后,F(xiàn)LP就停止發(fā)送。直到鏈路中斷,或者得到自協(xié)商Restart命令時(shí),才會(huì)再次發(fā)送FLP。
并行檢測(cè)
為了保證在對(duì)端不能支持自協(xié)商的情況下也能連接,引入了被稱為并行檢測(cè)(Parallel Detection)的機(jī)制。在一端打開自協(xié)商,另一端關(guān)閉自協(xié)商的情況下,連接的建立就依靠并行檢測(cè)功能實(shí)現(xiàn)。
并行檢測(cè)機(jī)制是這樣的:在具有自協(xié)商能力的設(shè)備端口上,如果接收不到FLP,則檢測(cè)是否有10M鏈路的特征信號(hào)或100M鏈路的特征信號(hào)。
1) 如果設(shè)備是10M設(shè)備,不支持自協(xié)商,則在鏈路上發(fā)送普通連接脈沖(Normal Link Pulse)簡(jiǎn)稱NLP。NLP僅僅表示設(shè)備在位,不包含其它的額外信息。
2) 如果是100M設(shè)備,不支持自協(xié)商,則在沒有數(shù)據(jù)的情況下,在鏈路上一直發(fā)送4B/5B編碼的Idle符號(hào)。
并行檢測(cè)機(jī)制如果檢測(cè)到NLP,則知道對(duì)方支持10M速率;如果檢測(cè)到4B/5B編碼的Idle符號(hào),則知道對(duì)方支持100M速率。但是對(duì)方是否支持全雙工、是否支持流控幀這些信息是無(wú)法得到的。因此在這種情況下,認(rèn)為對(duì)方只支持半雙工,不支持全雙工,且不支持流控幀。
基于以上原理,在對(duì)端不打開自協(xié)商時(shí),打開自協(xié)商的一方只能協(xié)商成半雙工模式。
5. MAC地址老化過(guò)程。
交換機(jī)中各端口具有自動(dòng)學(xué)習(xí)地址的功能,通過(guò)端口發(fā)送和接收的幀的源地址(源MAC地址、交換機(jī)端口號(hào))將存儲(chǔ)到地址表中。
老化時(shí)間是一個(gè)影響交換機(jī)學(xué)習(xí)進(jìn)程的參數(shù)。從一個(gè)地址記錄加入地址表以后開始計(jì)時(shí),如果在老化時(shí)間內(nèi)各端口未收到源地址為該MAC地址的幀,那么,這些地址將從動(dòng)態(tài)轉(zhuǎn)發(fā)地址表(由源MAC地址、目的MAC地址和它們相對(duì)應(yīng)的交換機(jī)的端口號(hào))中被刪除。靜態(tài)MAC地址表不受地址老化時(shí)間影響。
6. vlan三種模式:access,trunk,hybrid,有什么區(qū)別。
7. linux下I/O多路復(fù)用有哪幾種方式,有什么區(qū)別
I/O復(fù)用模型
select/poll
老李去火車站買票,委托黃牛(內(nèi)核中),然后每隔6小時(shí)電話黃牛詢問,黃牛三天內(nèi)買到票,然后老李去火車站交錢領(lǐng)票。
耗費(fèi):打電話
epoll
老李去火車站買票,委托黃牛,黃牛買到后即通知老李去領(lǐng),然后老李去火車站交錢領(lǐng)票。
耗費(fèi):無(wú)需打電話
select函數(shù)的調(diào)用過(guò)程
a. 從用戶空間將fd_set拷貝到內(nèi)核空間
b. 注冊(cè)回調(diào)函數(shù)
c. 調(diào)用其對(duì)應(yīng)的poll方法
d. poll方法會(huì)返回一個(gè)描述讀寫是否就緒的mask掩碼,根據(jù)這個(gè)mask掩碼給fd_set賦值。
e. 如果遍歷完所有的fd都沒有返回一個(gè)可讀寫的mask掩碼,就會(huì)讓select的進(jìn)程進(jìn)入休眠模式,直到發(fā)現(xiàn)可讀寫的資源后,重新喚醒等待隊(duì)列上休眠的進(jìn)程。如果在規(guī)定時(shí)間內(nèi)都沒有喚醒休眠進(jìn)程,那么進(jìn)程會(huì)被喚醒重新獲得CPU,再去遍歷一次fd。
f. 將fd_set從內(nèi)核空間拷貝到用戶空間
缺點(diǎn):
兩次拷貝耗時(shí)(從用戶空間將fd_set拷貝到內(nèi)核空間, 將fd_set從內(nèi)核空間拷貝到用戶空間)
輪詢所有fd耗時(shí)(遍歷完所有的fd查看是否返回一個(gè)可讀寫的mask掩碼)
支持的文件描述符太小(1024)
優(yōu)點(diǎn):
跨平臺(tái)支持
poll優(yōu)點(diǎn):
連接數(shù)(也就是文件描述符)沒有限制(鏈表存儲(chǔ))
poll函數(shù)的調(diào)用過(guò)程與select完全一致
缺點(diǎn):
大量拷貝,水平觸發(fā)(當(dāng)報(bào)告了fd沒有被處理,會(huì)重復(fù)報(bào)告,很耗性能)
epoll的ET與LT模式
LT:延遲處理,當(dāng)檢測(cè)到描述符事件通知應(yīng)用程序,應(yīng)用程序不立即處理該事件。那么下次會(huì)再次通知應(yīng)用程序此事件。
ET:立即處理,當(dāng)檢測(cè)到描述符事件通知應(yīng)用程序,應(yīng)用程序會(huì)立即處理。
ET模式減少了epoll被重復(fù)觸發(fā)的次數(shù),效率比LT高。我們?cè)谑褂肊T的時(shí)候,必須采用非阻塞套接口,避免某文件句柄在阻塞讀或阻塞寫的時(shí)候?qū)⑵渌募枋龇娜蝿?wù)餓死。
epoll的函數(shù)調(diào)用流程
a. 當(dāng)調(diào)用epoll_wait函數(shù)的時(shí)候,系統(tǒng)會(huì)創(chuàng)建一個(gè)epoll對(duì)象,每個(gè)對(duì)象有一個(gè)evenpoll類型的結(jié)構(gòu)體與之對(duì)應(yīng),結(jié)構(gòu)體成員結(jié)構(gòu)如下。
rbn,代表將要通過(guò)epoll_ctl向epll對(duì)象中添加的事件。這些事情都是掛載在紅黑樹中。
rdlist,里面存放的是將要發(fā)生的事件。
b. 文件的fd狀態(tài)發(fā)生改變,就會(huì)觸發(fā)fd上的回調(diào)函數(shù)
c. 回調(diào)函數(shù)將相應(yīng)的fd加入到rdlist,導(dǎo)致rdlist不空,進(jìn)程被喚醒,epoll_wait繼續(xù)執(zhí)行。
d. 有一個(gè)事件轉(zhuǎn)移函數(shù)——ep_events_transfer,它會(huì)將rdlist的數(shù)據(jù)拷貝到txlist上,并將rdlist的數(shù)據(jù)清空。
e. ep_send_events函數(shù),它掃描txlist的每個(gè)數(shù)據(jù),調(diào)用關(guān)聯(lián)fd對(duì)應(yīng)的poll方法去取fd中較新的事件,將取得的事件和對(duì)應(yīng)的fd發(fā)送到用戶空間。如果fd是LT模式的話,會(huì)被txlist的該數(shù)據(jù)重新放回rdlist,等待下一次繼續(xù)觸發(fā)調(diào)用。
epoll的優(yōu)點(diǎn)
沒有最大并發(fā)連接的限制
只有活躍可用的fd才會(huì)調(diào)用callback函數(shù)
內(nèi)存拷貝是利用mmap()文件映射內(nèi)存的方式加速與內(nèi)核空間的消息傳遞,減少?gòu)?fù)制開銷。(內(nèi)核與用戶空間共享一塊內(nèi)存)
只有存在大量的空閑連接和不活躍的連接的時(shí)候,使用epoll的效率才會(huì)比select/poll高。
所以epoll相比select和poll,相當(dāng)?shù)睦米畲筮B接數(shù)并節(jié)省內(nèi)存
socket套接字
同步 就是我調(diào)用一個(gè)功能,該功能沒有結(jié)束前,我死等結(jié)果。只能順序執(zhí)行。
異步 就是我調(diào)用一個(gè)功能,不需要知道該功能結(jié)果,該功能有結(jié)果后通知我(回調(diào)通知),往往用回調(diào)函數(shù)或者其他類方式實(shí)現(xiàn)。
阻塞 就是調(diào)用我(函數(shù)),我(函數(shù))沒有接收完數(shù)據(jù)或者沒有得到結(jié)果之前,我不會(huì)返回。
非阻塞 就是調(diào)用我(函數(shù)),我(函數(shù))立即返回,而當(dāng)我準(zhǔn)備完畢時(shí),通過(guò)select通知調(diào)用者。
同步IO和異步IO的區(qū)別就在于:數(shù)據(jù)拷貝的時(shí)候進(jìn)程是否可以被阻塞
阻塞IO和非阻塞IO的區(qū)別就在于:應(yīng)用程序的調(diào)用是否能立即返回文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-569289.html
8. mdelay和msleep的區(qū)別
mdelay是忙等待函數(shù),在延遲過(guò)程中無(wú)法運(yùn)行其他任務(wù)。這個(gè)延遲的時(shí)間是準(zhǔn)確的.是需要等待多少時(shí)間就會(huì)真正等待多少時(shí)間
msleep是休眠函數(shù),它不涉及忙等待.你如果是msleep(10),那實(shí)際上延遲的時(shí)間,大部分時(shí)候是要多于10ms的,是個(gè)不定的時(shí)間值文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-569289.html
到了這里,關(guān)于深信服 網(wǎng)絡(luò)相關(guān)面試題及部分答案的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!