常見面試題
【問題1】為什么連接的時(shí)候是三次握手盯仪,關(guān)閉的時(shí)候卻是四次握手首有?
答:因?yàn)楫?dāng)Server端收到Client端的SYN連接請求報(bào)文后,可以直接發(fā)送SYN+ACK報(bào)文匿醒。其中ACK報(bào)文是用來應(yīng)答的睡榆,SYN報(bào)文是用來同步的萍肆。但是關(guān)閉連接時(shí),當(dāng)Server端收到FIN報(bào)文時(shí)胀屿,很可能并不會(huì)立即關(guān)閉SOCKET塘揣,所以只能先回復(fù)一個(gè)ACK報(bào)文,告訴Client端宿崭,"你發(fā)的FIN報(bào)文我收到了"亲铡。只有等到我Server端所有的報(bào)文都發(fā)送完了,我才能發(fā)送FIN報(bào)文葡兑,因此不能一起發(fā)送奖蔓。故需要四步握手。
【問題2】為什么TIME_WAIT狀態(tài)需要經(jīng)過2MSL(最大報(bào)文段生存時(shí)間)才能返回到CLOSE狀態(tài)讹堤?
答:雖然按道理吆鹤,四個(gè)報(bào)文都發(fā)送完畢,我們可以直接進(jìn)入CLOSE狀態(tài)了洲守,但是我們必須假象網(wǎng)絡(luò)是不可靠的疑务,有可以最后一個(gè)ACK丟失沾凄。所以TIME_WAIT狀態(tài)就是用來重發(fā)可能丟失的ACK報(bào)文。在Client發(fā)送出最后的ACK回復(fù)知允,但該ACK可能丟失搭独。Server如果沒有收到ACK,將不斷重復(fù)發(fā)送FIN片段廊镜。所以Client不能立即關(guān)閉,它必須確認(rèn)Server接收到了該ACK唉俗。Client會(huì)在發(fā)送出ACK之后進(jìn)入到TIME_WAIT狀態(tài)嗤朴。Client會(huì)設(shè)置一個(gè)計(jì)時(shí)器,等待2MSL的時(shí)間虫溜。如果在該時(shí)間內(nèi)再次收到FIN雹姊,那么Client會(huì)重發(fā)ACK并再次等待2MSL。所謂的2MSL是兩倍的MSL(Maximum Segment Lifetime)衡楞。MSL指一個(gè)片段在網(wǎng)絡(luò)中最大的存活時(shí)間吱雏,2MSL就是一個(gè)發(fā)送和一個(gè)回復(fù)所需的最大時(shí)間。如果直到2MSL瘾境,Client都沒有再次收到FIN歧杏,那么Client推斷ACK已經(jīng)被成功接收,則結(jié)束TCP連接迷守。
【問題3】為什么不能用兩次握手進(jìn)行連接犬绒?
答:3次握手完成兩個(gè)重要的功能,既要雙方做好發(fā)送數(shù)據(jù)的準(zhǔn)備工作(雙方都知道彼此已準(zhǔn)備好)兑凿,也要允許雙方就初始序列號進(jìn)行協(xié)商凯力,這個(gè)序列號在握手過程中被發(fā)送和確認(rèn)。
? ? ? 現(xiàn)在把三次握手改成僅需要兩次握手礼华,死鎖是可能發(fā)生的咐鹤。作為例子,考慮計(jì)算機(jī)S和C之間的通信圣絮,假定C給S發(fā)送一個(gè)連接請求分組祈惶,S收到了這個(gè)分組,并發(fā) 送了確認(rèn)應(yīng)答分組晨雳。按照兩次握手的協(xié)定行瑞,S認(rèn)為連接已經(jīng)成功地建立了,可以開始發(fā)送數(shù)據(jù)分組餐禁⊙茫可是,C在S的應(yīng)答分組在傳輸中被丟失的情況下帮非,將不知道S 是否已準(zhǔn)備好氧吐,不知道S建立什么樣的序列號讹蘑,C甚至懷疑S是否收到自己的連接請求分組。在這種情況下筑舅,C認(rèn)為連接還未建立成功座慰,將忽略S發(fā)來的任何數(shù)據(jù)分 組,只等待連接確認(rèn)應(yīng)答分組翠拣。而S在發(fā)出的分組超時(shí)后版仔,重復(fù)發(fā)送同樣的分組。這樣就形成了死鎖误墓。
【問題4】如果已經(jīng)建立了連接蛮粮,但是客戶端突然出現(xiàn)故障了怎么辦?
答:TCP還設(shè)有一個(gè)泵栈牛活計(jì)時(shí)器然想,顯然,客戶端如果出現(xiàn)故障欣范,服務(wù)器不能一直等下去变泄,白白浪費(fèi)資源。服務(wù)
1恼琼、三次握手
(1)三次握手的詳述
首先Client端發(fā)送連接請求報(bào)文妨蛹,Server段接受連接后回復(fù)ACK報(bào)文,并為這次連接分配資源驳癌。Client端接收到ACK報(bào)文后也向Server段發(fā)生ACK報(bào)文滑燃,并分配資源,這樣TCP連接就建立了颓鲜。
最初兩端的TCP進(jìn)程都處于CLOSED關(guān)閉狀態(tài)表窘,A主動(dòng)打開連接,而B被動(dòng)打開連接甜滨。(A乐严、B關(guān)閉狀態(tài)CLOSED——B收聽狀態(tài)LISTEN——A同步已發(fā)送狀態(tài)SYN-SENT——B同步收到狀態(tài)SYN-RCVD——A、B連接已建立狀態(tài)ESTABLISHED)
(2)總結(jié)三次握手過程:
起初A和B都處于CLOSED狀態(tài)——B創(chuàng)建TCB衣摩,處于LISTEN狀態(tài)昂验,等待A請求——A創(chuàng)建TCB,發(fā)送連接請求(SYN=1艾扮,seq=x)既琴,進(jìn)入SYN-SENT狀態(tài)——B收到連接請求,向A發(fā)送確認(rèn)(SYN=ACK=1泡嘴,確認(rèn)號ack=x+1甫恩,初始序號seq=y),進(jìn)入SYN-RCVD狀態(tài)——A收到B的確認(rèn)后酌予,給B發(fā)出確認(rèn)(ACK=1磺箕,ack=y+1奖慌,seq=x+1),A進(jìn)入ESTABLISHED狀態(tài)——B收到A的確認(rèn)后松靡,進(jìn)入ESTABLISHED狀態(tài)简僧。
TCB傳輸控制塊Transmission Control Block,存儲(chǔ)每一個(gè)連接中的重要信息雕欺,如TCP連接表岛马,到發(fā)送和接收緩存的指針,到重傳隊(duì)列的指針屠列,當(dāng)前的發(fā)送和接收序號蛛枚。
(3)為什么A還要發(fā)送一次確認(rèn)呢?可以二次握手嗎脸哀?
答:主要為了防止已失效的連接請求報(bào)文段突然又傳送到了B,因而產(chǎn)生錯(cuò)誤扭吁。如A發(fā)出連接請求撞蜂,但因連接請求報(bào)文丟失而未收到確認(rèn),于是A再重傳一次連接請求侥袜。后來收到了確認(rèn)蝌诡,建立了連接。數(shù)據(jù)傳輸完畢后枫吧,就釋放了連接浦旱,A工發(fā)出了兩個(gè)連接請求報(bào)文段,其中第一個(gè)丟失九杂,第二個(gè)到達(dá)了B颁湖,但是第一個(gè)丟失的報(bào)文段只是在某些網(wǎng)絡(luò)結(jié)點(diǎn)長時(shí)間滯留了,延誤到連接釋放以后的某個(gè)時(shí)間才到達(dá)B例隆,此時(shí)B誤認(rèn)為A又發(fā)出一次新的連接請求甥捺,于是就向A發(fā)出確認(rèn)報(bào)文段,同意建立連接镀层,不采用三次握手镰禾,只要B發(fā)出確認(rèn),就建立新的連接了唱逢,此時(shí)A不理睬B的確認(rèn)且不發(fā)送數(shù)據(jù)吴侦,則B一致等待A發(fā)送數(shù)據(jù),浪費(fèi)資源坞古。
(4)Server端易受到SYN攻擊备韧?
服務(wù)器端的資源分配是在二次握手時(shí)分配的,而客戶端的資源是在完成三次握手時(shí)分配的绸贡,所以服務(wù)器容易受到SYN洪泛攻擊盯蝴,SYN攻擊就是Client在短時(shí)間內(nèi)偽造大量不存在的IP地址毅哗,并向Server不斷地發(fā)送SYN包,Server則回復(fù)確認(rèn)包捧挺,并等待Client確認(rèn)虑绵,由于源地址不存在,因此Server需要不斷重發(fā)直至超時(shí)闽烙,這些偽造的SYN包將長時(shí)間占用未連接隊(duì)列翅睛,導(dǎo)致正常的SYN請求因?yàn)殛?duì)列滿而被丟棄,從而引起網(wǎng)絡(luò)擁塞甚至系統(tǒng)癱瘓黑竞。
防范SYN攻擊措施:降低主機(jī)的等待時(shí)間使主機(jī)盡快的釋放半連接的占用捕发,短時(shí)間受到某IP的重復(fù)SYN則丟棄后續(xù)請求。
2很魂、四次揮手
(1)四次揮手的詳述
假設(shè)Client端發(fā)起中斷連接請求扎酷,也就是發(fā)送FIN報(bào)文。Server端接到FIN報(bào)文后遏匆,意思是說"我Client端沒有數(shù)據(jù)要發(fā)給你了"法挨,但是如果你還有數(shù)據(jù)沒有發(fā)送完成,則不必急著關(guān)閉Socket幅聘,可以繼續(xù)發(fā)送數(shù)據(jù)凡纳。所以你先發(fā)送ACK,"告訴Client端帝蒿,你的請求我收到了荐糜,但是我還沒準(zhǔn)備好,請繼續(xù)你等我的消息"葛超。這個(gè)時(shí)候Client端就進(jìn)入FIN_WAIT狀態(tài)暴氏,繼續(xù)等待Server端的FIN報(bào)文。當(dāng)Server端確定數(shù)據(jù)已發(fā)送完成绣张,則向Client端發(fā)送FIN報(bào)文偏序,"告訴Client端,好了胖替,我這邊數(shù)據(jù)發(fā)完了研儒,準(zhǔn)備好關(guān)閉連接了"。Client端收到FIN報(bào)文后独令,"就知道可以關(guān)閉連接了端朵,但是他還是不相信網(wǎng)絡(luò),怕Server端不知道要關(guān)閉燃箭,所以發(fā)送ACK后進(jìn)入TIME_WAIT狀態(tài)冲呢,如果Server端沒有收到ACK則可以重傳≌欣辏“敬拓,Server端收到ACK后邻薯,"就知道可以斷開連接了"。Client端等待了2MSL后依然沒有收到回復(fù)乘凸,則證明Server端已正常關(guān)閉厕诡,那好,我Client端也可以關(guān)閉連接了营勤。Ok灵嫌,TCP連接就這樣關(guān)閉了!
數(shù)據(jù)傳輸結(jié)束后葛作,通信的雙方都可釋放連接寿羞,A和B都處于ESTABLISHED狀態(tài)。(A赂蠢、B連接建立狀態(tài)ESTABLISHED——A終止等待1狀態(tài)FIN-WAIT-1——B關(guān)閉等待狀態(tài)CLOSE-WAIT——A終止等待2狀態(tài)FIN-WAIT-2——B最后確認(rèn)狀態(tài)LAST-ACK——A時(shí)間等待狀態(tài)TIME-WAIT——B绪穆、A關(guān)閉狀態(tài)CLOSED)
(2)總結(jié)四次揮手過程:
起初A和B處于ESTABLISHED狀態(tài)——A發(fā)出連接釋放報(bào)文段并處于FIN-WAIT-1狀態(tài)——B發(fā)出確認(rèn)報(bào)文段且進(jìn)入CLOSE-WAIT狀態(tài)——A收到確認(rèn)后,進(jìn)入FIN-WAIT-2狀態(tài)虱岂,等待B的連接釋放報(bào)文段——B沒有要向A發(fā)出的數(shù)據(jù)霞幅,B發(fā)出連接釋放報(bào)文段且進(jìn)入LAST-ACK狀態(tài)——A發(fā)出確認(rèn)報(bào)文段且進(jìn)入TIME-WAIT狀態(tài)——B收到確認(rèn)報(bào)文段后進(jìn)入CLOSED狀態(tài)——A經(jīng)過等待計(jì)時(shí)器時(shí)間2MSL后,進(jìn)入CLOSED狀態(tài)量瓜。
(3)為什么A在TIME-WAIT狀態(tài)必須等待2MSL的時(shí)間?
MSL最長報(bào)文段壽命Maximum Segment Lifetime途乃,MSL=2
答: 兩個(gè)理由:1)保證A發(fā)送的最后一個(gè)ACK報(bào)文段能夠到達(dá)B绍傲。2)防止“已失效的連接請求報(bào)文段”出現(xiàn)在本連接中。
(4)為什么連接的時(shí)候是三次握手耍共,關(guān)閉的時(shí)候卻是四次握手烫饼?
答:因?yàn)楫?dāng)Server端收到Client端的SYN連接請求報(bào)文后,可以直接發(fā)送SYN+ACK報(bào)文试读。其中ACK報(bào)文是用來應(yīng)答的杠纵,SYN報(bào)文是用來同步的。但是關(guān)閉連接時(shí)钩骇,當(dāng)Server端收到FIN報(bào)文時(shí)比藻,很可能并不會(huì)立即關(guān)閉SOCKET,所以只能先回復(fù)一個(gè)ACK報(bào)文倘屹,告訴Client端银亲,"你發(fā)的FIN報(bào)文我收到了"。只有等到我Server端所有的報(bào)文都發(fā)送完了纽匙,我才能發(fā)送FIN報(bào)文务蝠,因此不能一起發(fā)送。故需要四步握手烛缔。
(5)為什么TIME_WAIT狀態(tài)需要經(jīng)過2MSL(最大報(bào)文段生存時(shí)間)才能返回到CLOSE狀態(tài)螟深?
答:雖然按道理拣帽,四個(gè)報(bào)文都發(fā)送完畢驶赏,我們可以直接進(jìn)入CLOSE狀態(tài)了,但是我們必須假象網(wǎng)絡(luò)是不可靠的亡蓉,有可以最后一個(gè)ACK丟失。所以TIME_WAIT狀態(tài)就是用來重發(fā)可能丟失的ACK報(bào)文够坐。
TCP協(xié)議三次握手和四次揮手常見面試題:
1.為什么需要三次握手寸宵,兩次不可以嗎?或者四次元咙、五次可以嗎梯影?
我們來分析一種特殊情況,假設(shè)客戶端請求建立連接庶香,發(fā)給服務(wù)器SYN包等待服務(wù)器確認(rèn)甲棍,服務(wù)器收到確認(rèn)后,如果是兩次握手赶掖,假設(shè)服務(wù)器給客戶端在第二次握手時(shí)發(fā)送數(shù)據(jù)感猛,數(shù)據(jù)從服務(wù)器發(fā)出,服務(wù)器認(rèn)為連接已經(jīng)建立奢赂,但在發(fā)送數(shù)據(jù)的過程中數(shù)據(jù)丟失陪白,客戶端認(rèn)為連接沒有建立,會(huì)進(jìn)行重傳膳灶。假設(shè)每次發(fā)送的數(shù)據(jù)一直在丟失咱士,客戶端一直SYN,服務(wù)器就會(huì)產(chǎn)生多個(gè)無效連接轧钓,占用資源序厉,這個(gè)時(shí)候服務(wù)器可能會(huì)掛掉。這個(gè)現(xiàn)象就是我們聽過的“SYN的洪水攻擊”毕箍。
總結(jié):第三次握手是為了防止:如果客戶端遲遲沒有收到服務(wù)器返回確認(rèn)報(bào)文弛房,這時(shí)會(huì)放棄連接,重新啟動(dòng)一條連接請求而柑,但問題是:服務(wù)器不知道客戶端沒有收到文捶,所以他會(huì)收到兩個(gè)連接,浪費(fèi)連接開銷媒咳。如果每次都是這樣拄轻,就會(huì)浪費(fèi)多個(gè)連接開銷。
四次揮手過程(關(guān)閉客戶端到服務(wù)器的連接)
step1:第一次揮手
首先伟葫,客戶端發(fā)送一個(gè)FIN恨搓,用來關(guān)閉客戶端到服務(wù)器的數(shù)據(jù)傳送,然后等待服務(wù)器的確認(rèn)。其中終止標(biāo)志位FIN=1斧抱,序列號seq=u常拓。
step2:第二次揮手
服務(wù)器收到這個(gè)FIN,它發(fā)送一個(gè)ACK辉浦,確認(rèn)ack為收到的序號加一弄抬。
step3:第三次揮手
關(guān)閉服務(wù)器到客戶端的連接,發(fā)送一個(gè)FIN給客戶端宪郊。
step4:第四次揮手
客戶端收到FIN后掂恕,并發(fā)回一個(gè)ACK報(bào)文確認(rèn),并將確認(rèn)序號seq設(shè)置為收到序號加一弛槐。首先進(jìn)行關(guān)閉的一方將執(zhí)行主動(dòng)關(guān)閉懊亡,而另一方執(zhí)行被動(dòng)關(guān)閉。
客戶端發(fā)送FIN后乎串,進(jìn)入終止等待狀態(tài)店枣,服務(wù)器收到客戶端連接釋放報(bào)文段后,就立即給客戶端發(fā)送確認(rèn)叹誉,服務(wù)器就進(jìn)入CLOSE_WAIT狀態(tài)鸯两,此時(shí)TCP服務(wù)器進(jìn)程就通知高層應(yīng)用進(jìn)程,因而從客戶端到服務(wù)器的連接就釋放了长豁。此時(shí)是“半關(guān)閉狀態(tài)”钧唐,即客戶端不可以發(fā)送給服務(wù)器,服務(wù)器可以發(fā)送給客戶端匠襟。
此時(shí)钝侠,如果服務(wù)器沒有數(shù)據(jù)報(bào)發(fā)送給客戶端,其應(yīng)用程序就通知TCP釋放連接宅此,然后發(fā)送給客戶端連接釋放數(shù)據(jù)報(bào),并等待確認(rèn)爬范「竿螅客戶端發(fā)送確認(rèn)后,進(jìn)入TIME_WAIT狀態(tài)青瀑,但是此時(shí)TCP連接還沒有釋放璧亮,然后經(jīng)過等待計(jì)時(shí)器設(shè)置的2MSL后,才進(jìn)入到CLOSED狀態(tài)斥难。
2.為什么需要2MSL時(shí)間枝嘶?
首先,MSL即Maximum Segment Lifetime哑诊,就是最大報(bào)文生存時(shí)間群扶,是任何報(bào)文在網(wǎng)絡(luò)上的存在的最長時(shí)間,超過這個(gè)時(shí)間報(bào)文將被丟棄【翰《TCP/IP詳解》中是這樣描述的:MSL是任何報(bào)文段被丟棄前在網(wǎng)絡(luò)內(nèi)的最長時(shí)間缴饭。RFC 793中規(guī)定MSL為2分鐘,實(shí)際應(yīng)用中常用的是30秒骆莹、1分鐘颗搂、2分鐘等。
TCP的TIME_WAIT需要等待2MSL幕垦,當(dāng)TCP的一端發(fā)起主動(dòng)關(guān)閉丢氢,三次揮手完成后發(fā)送第四次揮手的ACK包后就進(jìn)入這個(gè)狀態(tài),等待2MSL時(shí)間主要目的是:防止最后一個(gè)ACK包對方?jīng)]有收到先改,那么對方在超時(shí)后將重發(fā)第三次握手的FIN包疚察,主動(dòng)關(guān)閉端接到重發(fā)的FIN包后可以再發(fā)一個(gè)ACK應(yīng)答包。在TIME_WAIT狀態(tài)時(shí)兩端的端口不能使用盏道,要等到2MSL時(shí)間結(jié)束才可以繼續(xù)使用稍浆。當(dāng)連接處于2MSL等待階段時(shí)任何遲到的報(bào)文段都將被丟棄。
3.為什么是四次揮手猜嘱,而不是三次或是五次衅枫、六次?
雙方關(guān)閉連接要經(jīng)過雙方都同意朗伶。所以弦撩,首先是客服端給服務(wù)器發(fā)送FIN,要求關(guān)閉連接论皆,服務(wù)器收到后會(huì)發(fā)送一個(gè)ACK進(jìn)行確認(rèn)益楼。服務(wù)器然后再發(fā)送一個(gè)FIN,客戶端發(fā)送ACK確認(rèn)点晴,并進(jìn)入TIME_WAIT狀態(tài)感凤。等待2MSL后自動(dòng)關(guān)閉。
總結(jié):
(1)為了保證客戶端發(fā)送的最后一個(gè)ACK報(bào)文段能夠到達(dá)服務(wù)器粒督。即最后一個(gè)確認(rèn)報(bào)文可能丟失陪竿,服務(wù)器會(huì)超時(shí)重傳,然后服務(wù)器發(fā)送FIN請求關(guān)閉連接屠橄,客戶端發(fā)送ACK確認(rèn)族跛。一個(gè)來回是兩個(gè)報(bào)文生命周期。
如果沒有等待時(shí)間锐墙,發(fā)送完確認(rèn)報(bào)文段就立即釋放連接的話礁哄,服務(wù)器就無法重傳,因此也就收不到確認(rèn)溪北,就無法按步驟進(jìn)入CLOSED狀態(tài)桐绒,即必須收到確認(rèn)才能close夺脾。
(2)防止已經(jīng)失效的連接請求報(bào)文出現(xiàn)在連接中。經(jīng)過2MSL掏膏,在這個(gè)連續(xù)持續(xù)的時(shí)間內(nèi)劳翰,產(chǎn)生的所有報(bào)文段就可以都從網(wǎng)絡(luò)消失。
Linux 選擇題
說明:在ABCD中加黑的部分為正確答案馒疹。
1. cron 后臺常駐程序 (daemon) 用于:?
A. 負(fù)責(zé)文件在網(wǎng)絡(luò)中的共享
B.?管理打印子系統(tǒng)
C. 跟蹤管理系統(tǒng)信息和錯(cuò)誤
D. 管理系統(tǒng)日常任務(wù)的調(diào)度
2.?在大多數(shù)Linux發(fā)行版本中佳簸,以下哪個(gè)屬于塊設(shè)備 (block devices) ?
A. 串行口
B. 硬盤?
C. 虛擬終端
D. 打印機(jī)
3.?下面哪個(gè)Linux命令可以一次顯示一頁內(nèi)容颖变?
A. pause
B. cat
C. more?
D. grep
4.?怎樣了解您在當(dāng)前目錄下還有多大空間生均?
A. Use df
B. Use du /
C. Use du .?
D. Use df .
5.?怎樣更改一個(gè)文件的權(quán)限設(shè)置?
A. attrib
B. chmod?
C. change
D. file
6.?假如您需要找出 /etc/my.conf 文件屬于哪個(gè)包 (package) 腥刹,您可以執(zhí)行:
A. rpm -q /etc/my.conf
B. rpm -requires /etc/my.conf
C. rpm -qf /etc/my.conf?
D. rpm -q | grep /etc/my.conf
7.?假如當(dāng)前系統(tǒng)是在 level 3 運(yùn)行马胧,怎樣不重啟系統(tǒng)就可轉(zhuǎn)換到 level 5 運(yùn)行?
A. Set level = 5
B. telinit 5?
C. run 5
D. ALT-F7-5
8.?那個(gè)命令用于改變 IDE 硬盤的設(shè)置衔峰?
A. hdparam
B. ideconfig
C. hdparm?
D. hddparm
9.?下面哪個(gè)命令可以列出定義在以后特定時(shí)間運(yùn)行一次的所有任務(wù)佩脊?
A. atq
B. cron
C. batch
D. at
10.下面命令的作用是:set PS1="[\u\w\t]\\$" ; export PS1
A. 改變錯(cuò)誤信息提示
B. 改變命令提示符
C. 改變一些終端參數(shù)
D. 改變輔助命令提示符
11.作為一個(gè)管理員,你希望在每一個(gè)新用戶的目錄下放一個(gè)文件 .bashrc 垫卤,那么你應(yīng)該在哪個(gè)目錄下放這個(gè)文件威彰,以便于新用戶創(chuàng)建主目錄時(shí)自動(dòng)將這個(gè)文件復(fù)制到自己的目錄下。
A. /etc/skel/
B. /etc/default/
C. /etc/defaults/
D. /etc/profile.d/
12.在bash中穴肘,export命令的作用是:
A. 在子shell中運(yùn)行命令
B. 使在子shell中可以使用命令歷史記錄
C. 為其它應(yīng)用程序設(shè)置環(huán)境變量
D. 提供NFS分區(qū)給網(wǎng)絡(luò)中的其它系統(tǒng)使用
13.在使用了shadow口令的系統(tǒng)中歇盼,/etc/passwd和/etc/shadow兩個(gè)文件的權(quán)限正確的是:
A. -rw-r----- , -r--------
B. -rw-r--r-- , -r--r--r--
C. -rw-r--r-- , -r--------
D. -rw-r--rw- , -r-----r--
14.下面哪個(gè)參數(shù)可以刪除一個(gè)用戶并同時(shí)刪除用戶的主目錄?
A. rmuser -r
B. deluser -r
C. userdel -r
D. usermgr -r
15.有一個(gè)備份程序mybackup评抚,需要在周一至周五下午1點(diǎn)和晚上8點(diǎn)各運(yùn)行一次豹缀,下面哪條crontab的項(xiàng)可以完成這項(xiàng)工作?
A. 0 13,20 * * 1,5 mybackup
B. 0 13,20 * * 1,2,3,4,5 mybackup
C. * 13,20 * * 1,2,3,4,5 mybackup
D. 0 13,20 1,5 * *? mybackup
16.如何從當(dāng)前系統(tǒng)中卸載一個(gè)已裝載的文件系統(tǒng)
A. umount
B. dismount
C. mount -u
D. 從 /etc/fstab 中刪除這個(gè)文件系統(tǒng)項(xiàng)
17.如果你的umask設(shè)置為022慨代,缺省的你創(chuàng)建的文件的權(quán)限為:
A. ----w--w-
B. -w--w----
C. r-xr-x---
D. rw-r--r--
18.在一條命令中如何查找一個(gè)二進(jìn)制命令 Xconfigurator 的路徑邢笙?
A. apropos Xconfigurator
B. find Xconfigurator
C. where Xconfigurator
D. which Xconfigurator
19.哪一條命令用來裝載所有在 /etc/fstab 中定義的文件系統(tǒng)?
A. amount
B. mount -a
C. fmount
D. mount -f
20.運(yùn)行一個(gè)腳本侍匙,用戶不需要什么樣的權(quán)限氮惯?
A. read
B. write
C. execute
D. browse on the directory
21.在Linux中,如何標(biāo)識接在IDE0上的slave硬盤的第2個(gè)擴(kuò)展分區(qū)丈积?
A. /dev/hdb2
B. /dev/hd1b2
C. /dev/hdb6
D. /dev/hd1b6
22.在應(yīng)用程序起動(dòng)時(shí)筐骇,如何設(shè)置進(jìn)程的優(yōu)先級债鸡?
A. priority
B. nice
C. renice
D. setpri
23.在 bash 中, 在一條命令后加入"1>&2" 意味著:
A. 標(biāo)準(zhǔn)錯(cuò)誤輸出重定向到標(biāo)準(zhǔn)輸入
B. 標(biāo)準(zhǔn)輸入重定向到標(biāo)準(zhǔn)錯(cuò)誤輸出
C. 標(biāo)準(zhǔn)輸出重定向到標(biāo)準(zhǔn)錯(cuò)誤輸出
D. 標(biāo)準(zhǔn)輸出重定向到標(biāo)準(zhǔn)輸入
24.下面哪條命令可以把f1.txt復(fù)制為f2.txt?
A. cp f1.txt | f2.txt
B. cat f1.txt | f2.txt
C. cat f1.txt > f2.txt
D. copy f1.txt | f2.txt
25.顯示一個(gè)文件最后幾行的命令是:
A. tac
B. tail
C. rear
D. last
26.如何快速切換到用戶John的主目錄下江滨?
A. cd @John
B. cd #John
C. cd &John
D. cd ~John
27.把一個(gè)流中所有字符轉(zhuǎn)換成大寫字符,可以使用下面哪個(gè)命令厌均?
A. tr a-z A-Z
B. tac a-z A-Z
C.sed /a-z/A-Z
D. sed --toupper
28.使用什么命令可以查看Linux的啟動(dòng)信息唬滑?
A. mesg -d
B. dmesg
C. cat /etc/mesg
D. cat /var/mesg
29.運(yùn)行級定義在:
A. in the kernel
B. in /etc/inittab
C. in /etc/runlevels
D. using the rl command
30.如何裝載(mount)上在 /etc/fstab 文件中定義的所有文件系統(tǒng)?
A. mount -a
B. mount /mnt/*
C. mount
D. mount /etc/fstab
31.使用ln命令將生成了一個(gè)指向文件old的符號鏈接new,如果你將文件old刪除晶密,是否還能夠訪問文件中的數(shù)據(jù)擒悬?
A. 不可能再訪問
B. 仍然可以訪問
C. 能否訪問取決于文件的所有者
D. 能否訪問取決于文件的權(quán)限
32.xt2fs文件系統(tǒng)中,缺省的為root用戶保留多大的空間稻艰?
A. 3%
B. 5%
C. 10%
D. 15%
33.哪個(gè)命令用來顯示系統(tǒng)中各個(gè)分區(qū)中inode的使用情況懂牧?
A. df -i
B. df -H
C. free -b
D. du -a -c /
34.多數(shù)Linux發(fā)行版本中,圖形方式的運(yùn)行級定義為尊勿?
A. 1
B. 2
C. 3
D. 5
35.在系統(tǒng)文檔中找到關(guān)于print這個(gè)單詞的所有說明僧凤?
A. man print
B. which print
C. locate print
D. apropos print
36.man 5 passwd 含義是?
A. 顯示 passwd 命令的使用方法
B. 顯示 passwd 文件的結(jié)構(gòu)
C. 顯示 passwd 命令的說明的前五行
D. 顯示關(guān)于passwd的前五處說明文檔元扔。
37.如何在文件中查找顯示所有以"*"打頭的行躯保?
A. find \* file
B. wc -l * < file
C. grep -n * file
D. grep ‘^\*’ file
38.在ps命令中什么參數(shù)是用來顯示所有用戶的進(jìn)程的?
A. a
B. b
C. u
D. x
39.顯示二進(jìn)制文件的命令是澎语?
A. od
B. vil
C. view
D. binview
40.如何顯示Linux系統(tǒng)中注冊的用戶數(shù)(包含系統(tǒng)用戶)途事?
A. account -l
B. nl /etc/passwd |head
C. wc --users /etc/passwd
D. wc --lines /etc/passwd
41.在一行結(jié)束位置加上什么符號,表示未結(jié)束擅羞,下一行繼續(xù)尸变?
A. /
B. \
C. ;
D. |
42.命令 kill 9 的含義是:
A. kills the process whose PID is 9.
B. kills all processes belonging to UID 9.
C. sends SIGKILL to the process whose PID is 9.
D. sends SIGTERM to the process whose PID IS 9.
43.如何刪除一個(gè)非空子目錄/tmp?
A. del /tmp/*
B. rm -rf /tmp
C. rm -Ra /tmp/*
D. rm -rf /tmp/*
44.使用什么命令可以在今天午夜運(yùn)行命令 cmd1 祟滴?
A. at midnight cmd1
B. cron -at "00:00" cmd1
C. batch -t "00:00" < cmd1
D. echo "cmd1" | at midnight
45.你的系統(tǒng)使用增量備份策略振惰,當(dāng)需要恢復(fù)系統(tǒng)時(shí),你需要按什么順序恢復(fù)備份數(shù)據(jù)垄懂?
A. 最后一次全備份骑晶,然后從最早到最近的增量備份
B. 最后一次全備份,然后從最近到最早的增量備份
C. 最早到最近的增量備份草慧,然后最后一次全備份
D. 最近到最早的增量備份桶蛔,然后最后一次全備份
46.對所有用戶的變量設(shè)置,應(yīng)當(dāng)放在哪個(gè)文件下漫谷?
A. /etc/bashrc
B. /etc/profile
C. ~/.bash_profile
D. /etc/skel/.bashrc
47.Linux系統(tǒng)中仔雷,一般把命令 ls 定義為 ls --color 的別名,以便以不同顏色來標(biāo)識不同類型的文件舔示。但是碟婆,如何能夠使用原先的ls命令?
A. \ls
B. ;ls
C. ls $$
D. ls --noalias
48.在Linux系統(tǒng)中的腳本文件一般以什么開頭惕稻?
A. $/bin/sh
B. #!/bin/sh
C. use /bin/sh
D. set shell=/bin/sh
49.下面哪種寫法表示如果cmd1成功執(zhí)行竖共,則執(zhí)行cmd2命令?
A. cmd1&&cmd2
B. cmd1|cmd2
C. cmd1;cmd2
D. cmd1||cmd2
50.在哪個(gè)文件中定義網(wǎng)卡的I/O地址俺祠?
A. cat /proc/modules
B. cat /proc/devices
C. cat /proc/ioports
D. cat /io/dma
51.Linux中公给,提供TCP/IP包過濾功能的軟件叫什么借帘?
A. rarp
B. route
C. iptables
D. filter
52.如何暫停一個(gè)打印隊(duì)列?
A. lpr
B. lpq
C. lpc
D. lpd
53.在vi中退出不保存的命令是淌铐?
A. :q
B. :w
C. :wq
D. :q!
54.在 XFree86 3.x 中, 缺省的字體服務(wù)器為:
A. xfs
B. xfserv
C. fonts
D. xfstt
55.使用什么命令檢測基本網(wǎng)絡(luò)連接肺然?
A. ping
B. route
C. netstat
D. ifconfig
56.下面哪個(gè)協(xié)議使用了二個(gè)以上的端口?
A. telnet
B. FTP
C. rsh
D. HTTP
57.在PPP協(xié)議中腿准,哪個(gè)認(rèn)證協(xié)議不以明文傳遞密碼际起?
A. PAM
B. PAP
C. PGP
D. CHAP
58.下面哪個(gè)文件系統(tǒng)應(yīng)該分配最大的空間?
A. /usr
B. /lib
C. /root
D. /bin
59.如何在Debian系統(tǒng)中安裝rpm包吐葱?
A. alien pkgname.rpm
B. dpkg --rpm pkgname.rpm
C. dpkg --alien pkgname.rpm
D. alien pkganme.rpm ; dpkg -i pkganme.deb
60.在安裝軟件時(shí)下面哪一步需要root權(quán)限加叁?
A. make
B. make deps
C. make config
D. make install
61.什么命令用來只更新已經(jīng)安裝過的rpm軟件包?
A. rpm -U *.rpm
B. rpm -F *.rpm
C. rpm -e *.rpm
D. rpm -q *.rpm
62.在 windows 與?Linux?雙起動(dòng)的系統(tǒng)中唇撬,如果要讓LILO?管理引導(dǎo)它匕,則 LILO 應(yīng)該放在:
A. MBR
B. /
C. root分區(qū)的首扇區(qū)
D. /LILO
63.ldconfig的配置文件是
A. /lib/ld.so
B. /etc/ld.so.conf
C. /etc/ld.so.cache
D. /etc/modules.conf
64.下面哪個(gè)命令可以壓縮部分文件:
A. tar -dzvf filename.tgz *
B. tar -tzvf filename.tgz *
C. tar -czvf filename.tgz *
D. tar -xzvf filename.tgz *
65.網(wǎng)絡(luò)服務(wù)的daemon是:
A. lpd
B. netd
C. httpd
D. inetd
66.Linux與windows 的網(wǎng)上領(lǐng)居互聯(lián),需要提供什么daemon?
A. bind
B. smbd
C. nmbd
D. shard
67.對于Apache服務(wù)器窖认,提供的子進(jìn)程的缺省的用戶是:
A. root
B. apached
C. httpd
D. nobody
68.sendmail中缺省的未發(fā)出信件的存放位置是:
A. /var/mail/
B. /var/spool/mail/
C. /var/spool/mqueue/
D. /var/mail/deliver/
69.apache的主配置文件是:
A. httpd.conf
B. httpd.cfg
C. access.cfg
D. apache.conf
70.關(guān)于可裝載的模塊豫柬,裝載時(shí)的參數(shù),如I/O地址等的存放位置是:
A. /etc/conf.modules
B. /etc/lilo.conf
C. /boot/System.map
D. /etc/sysconfig
71.在 Linux 中扑浸,如何關(guān)閉郵件提示烧给?
A. biff n
B. mesg n
C. notify off
D. set notify=off
72.在 bash shell 環(huán)境下,當(dāng)一命令正在執(zhí)行時(shí)喝噪,按下 control-Z 會(huì):
A. 中止前臺任務(wù)
B. 給當(dāng)前文件加上 EOF.
C. 將前臺任務(wù)轉(zhuǎn)入后臺?
D. 注銷當(dāng)前用戶
73.定義bash環(huán)境的用戶文件是:
A. bash & .bashrc
B. bashrc & .bash_conf
C. bashrc & bash_profile
D. .bashrc & .bash_profile
74.下面哪條命令用來顯示一個(gè)程序所使用的庫文件础嫡?
A. ldd
B. ld so
C. modprobe
D. ldconfig
75.如何查看一個(gè)RPM軟件的配置文件的存放位置?
A. rpm -qc rpm1
B. rpm -Vc rpm1
C. rpm --config rpm1
D. rpm -qa --config rpm1
76.如何查看一個(gè)RPM軟件的修改記錄酝惧?
A. rpm -Vc postfix
B. rpm -qpil postfix
C. rpm --changelog postfix
D. rpm -q --changelog postfix
77.通過Makefile來安裝已編譯過的代碼的命令是:
A. make
B. install
C. make depend
D. make install
78.什么命令解壓縮tar文件榴鼎?
A. tar -czvf filename.tgz
B. tar -xzvf filename.tgz
C. tar -tzvf filename.tgz
D. tar -dzvf filename.tgz
79.在 XF86Config 配置文件中,哪個(gè)段用來設(shè)置字體文件晚唇?
A. The Fonts section.
B. The Files section.
C. The xfsCodes section.
D. The Graphics section.
80.8 bit color 指的是:
A. 64K colors
B. 16K colors
C. 256 colors
D. 16M colors
81.下面哪個(gè)文件用來設(shè)置 X window 的顯示分辨率巫财?
A. xinit
B. xinitrc
C. XF86Setup
D. XF86Config
82.哪個(gè)變量用來指定一個(gè)遠(yuǎn)程X應(yīng)用程序?qū)⑤敵龇诺侥膫€(gè)X server上?
A. DISPLAY
B. TERM
C. ECHO
D. OUTPUT
83.在xdm的配置目錄中哩陕,哪個(gè)文件用來設(shè)置在用戶通過xdm登錄后自動(dòng)起動(dòng)的應(yīng)用程序平项?
A. The Xsession file
B. The Xsetup_0 file
C. The Xstart_up file
D. The GiveConsole file
84.命令 netstat -a 停了很長時(shí)間沒有響應(yīng),這可能是哪里的問題悍及?
A. NFS.
B. DNS.
C. NIS.
D. routing.
85.ping使用的協(xié)議是:
A. TCP
B. UDP
C. SMB
D. ICMP
86.下面哪個(gè)命令不是用來查看網(wǎng)絡(luò)故障的闽瓢?
A. ping
B. init
C. telnet
D. netstat
87.撥號上網(wǎng)使用的協(xié)議通常是:
A. PPP
B. UUCP
C. SLIP
D. Ethernet
88.TCP/IP中,哪個(gè)協(xié)議是用來進(jìn)行IP自動(dòng)分配的心赶?
A. ARP
B. NFS
C. DHCP
D. DNS
89.下面哪個(gè)文件定義了網(wǎng)絡(luò)服務(wù)的端口扣讼?
A. /etc/netport
B. /etc/services
C. /etc/server
D. /etc/netconf
90.下面哪個(gè)功能用來生成一個(gè)文件的校驗(yàn)碼?
A. md5
B. tar
C. crypt
D. md5sum
91.缺省的园担,用戶郵件放在:
A. ~/mail/
B. /var/mail/
C. /var/mail/spool/
D. /var/spool/mail/
92.下面哪個(gè)文件包含了供 NFS daemon 使用的目錄列表届谈?
A. /etc/nfs
B. /etc/nfs.conf
C. /etc/exports
D. /etc/netdir
93.如何停止一臺機(jī)器的telnet服務(wù)?
A. Put NONE in /etc/telnet.allow
B. Put a line 'ALL:ALL' in /etc/hosts.deny
C. Comment the telnet entry in /etc/inittab
D. Comment the telnet entry in /etc/xinetd.conf
94.在哪個(gè)文件中保存了sendmail的別名弯汰?
A. /etc/aliases
B. /etc/mailaliases
C. /etc/sendmail.aliases
D. /etc/sendmail/aliases
95.smbd and nmbddaemons 的配置文件是:
A. /etc/exports
B. /etc/smb.conf
C. /etc/samba/config
D. /usr/local/samba.cfg
96.下面哪個(gè)命令用來卸載一個(gè)內(nèi)核模塊艰山?
A. rmmod
B. unmod
C. delmod
D. modprobe
97.什么情況下必須運(yùn)行l(wèi)ilo
A. once a day from cron
B. once a week from cron
C. after installing a new kernel
D. after installing a new module
98.什么命令顯示所有裝載的模塊?
A. lsmod
B. dirmod
C. modules
D. modlist
99.下面哪個(gè)命令刷新打印機(jī)隊(duì)列咏闪?
A. lpflush
B. lprm -
C. lpclear
D. lprm all
100.下面哪個(gè)命令可以查看網(wǎng)卡的中斷曙搬?
A. cat /proc/ioports
B. cat /proc/interrupts
C. cat /proc/memoryinfo
D. which interrupts
Linux 問答題
1.在Linux中什么是平均負(fù)載?
答:
平均負(fù)載被定義為在1分鐘鸽嫂,5分鐘和15分鐘內(nèi)等待在運(yùn)行隊(duì)列中的進(jìn)程數(shù)目和當(dāng)前正在執(zhí)行的進(jìn)程數(shù)目之和的平均值纵装。使用 'top’ 和 'uptime’ 命令我們可以查詢一個(gè) Linux 服務(wù)器的平均負(fù)載。
2.Puppet Master 在哪里存儲(chǔ)證書据某?
答:
/var/lib/puppet/ssl/ca/signed
3.在 Puppet 服務(wù)器中哪一個(gè)命令用于給請求的證書簽名橡娄?
答:
在2.x中使用 'puppetca ?–sign hostname-of-agent’?
在3.x中使用 'puppet ca ?sign hostname-of-agent’
4.某一天突然發(fā)現(xiàn)Linux系統(tǒng)文件只讀,該怎么辦呢癣籽?
答:
首先把系統(tǒng)關(guān)機(jī)挽唉,然后以光盤啟動(dòng)進(jìn)入救援模式(linux rescue),執(zhí)行"fsck.ext3 -y /dev/sda2" (假如只讀的分區(qū)類型為ext3,分區(qū)為/dev/sda2)
5.如何修改Linux啟動(dòng)級別為字符模式并永久生效筷狼,如何臨時(shí)瓶籽、永久關(guān)閉selinux及防火墻,請分別寫出操作方法埂材。
答:
更改字符模式:修改/etc/inittab一行為 id:3:initdefault:
臨時(shí)關(guān)閉selinnux ?setenforce 0
臨時(shí)關(guān)閉防火墻 ? ?iptables -F
永久關(guān)閉selinux ? 修改/etc/selinux/config一行為 SELINUX=permissive
永久關(guān)閉防火墻 ? iptables -F;/etc/init.d/iptables save
6.在這個(gè)月內(nèi)塑顺,每天的早上 6 點(diǎn)到 12 點(diǎn)中,每隔 2 小時(shí)創(chuàng)建一個(gè)test.txt文件俏险,內(nèi)容為ok严拒,如何實(shí)現(xiàn)?
答:
a竖独、crontab -e 進(jìn)入編輯模式
b糙俗、添加以下內(nèi)容 0 6-12/2 * 4 * /bin/touch test.txt ? (以4月為例)
c、啟動(dòng)服務(wù) service crontab start;chkconfig crontab on
7.將/usr/local/test目錄下大于100K 的文件轉(zhuǎn)移到/tmp 目錄下预鬓。
答:
find /usr/local/test -type f -size +100k -exec mv {} /tmp \;
8.如何將本地80端口的請求轉(zhuǎn)發(fā)到8080端口,當(dāng)前主機(jī)IP為192.168.16.1,其中本地網(wǎng)卡eth0:
答:
# iptables -t nat -A PREROUTING -d 192.168.16.1 -p tcp --dport 80 -j DNAT --to 192.168.16.1:8080
或者:
# iptables -t nat -A PREROUTING -i eth0 -d 192.168.16.1 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080
9.linux系統(tǒng)中如何獲取pid為100的進(jìn)程所監(jiān)聽的tcp端口巧骚,請給出詳細(xì)命令?
答:
netstat -nlpt |grep 100
10.當(dāng)用戶在瀏覽器當(dāng)中輸入一個(gè)網(wǎng)站格二,說說計(jì)算機(jī)對dns解釋經(jīng)過那些流程劈彪?注:本機(jī)跟本地dns還沒有緩存。
答:
a.用戶輸入網(wǎng)址到瀏覽器顶猜;
b.瀏覽器發(fā)出DNS請求信息沧奴;
c.計(jì)算機(jī)首先查詢本機(jī)HOST文件,看是否存在长窄,存在直接返回結(jié)果滔吠,不存在纲菌,繼續(xù)下一步;
d.計(jì)算機(jī)按照本地DNS的順序疮绷,向合法dns服務(wù)器查詢IP結(jié)果翰舌;
e.合法dns返回dns結(jié)果給本地dns,本地dns并緩存本結(jié)果冬骚,直到TTL過期椅贱,才再次查詢此結(jié)果;
f.返回IP結(jié)果給瀏覽器只冻;
g.瀏覽器根據(jù)IP信息庇麦,獲取頁面;
11.描述Linux shell中單引號喜德、雙引號及不加引號的簡單區(qū)別
答:
單引號:所見即所得山橄,即將單引號內(nèi)的內(nèi)容原樣輸出,或者描述為單引號里面看到的是什么就輸出什么舍悯。
雙引號:把雙引號里面的內(nèi)容給輸出出來驾胆,如果內(nèi)容中有命令、變量等贱呐,會(huì)先把丧诺,變來那個(gè)、命令解析出結(jié)果奄薇,然后輸出最終內(nèi)容驳阎。
雙引號內(nèi)的命令或者變量寫法’命令或變量’或$(命令或變量)
無引號:把內(nèi)容輸出出來,可能不會(huì)鍵含有空格的字符串馁蒂,視為一個(gè)整體輸出呵晚,如果內(nèi)容中有命令、變量等沫屡,會(huì)先把變量饵隙、命令解析出來,然后輸出最終內(nèi)容沮脖,如果字符串中帶有空格等特殊字符金矛,則不能完整輸出,需要改加雙引號勺届。一般連續(xù)的字符串驶俊,數(shù)字,路徑等可以用免姿,不過最好用雙引號饼酿,替代之。
12.在mysql客戶端查詢工具中,如何獲取當(dāng)前的所有連接進(jìn)程信息
答:mysql> show full processlist;
?