BAT面試題復習
http協(xié)議
http協(xié)議是無狀態(tài)無連接;
無狀態(tài):指的是http協(xié)議無法保存客戶機的信息,比如客戶機瀏覽了什么網(wǎng)頁,判斷用戶是否由權(quán)限訪問等,因此產(chǎn)生了兩種保持狀態(tài)的技術(shù):cookie與session,cookie存在于瀏覽器中,session存在于服務(wù)器中。
無連接:指的是服務(wù)器處理完客戶的的請求,收到客戶機的應(yīng)答之后,即斷開連接。請求時建立連接,請求完釋放連接,這樣可以盡快釋放資源出來供其他客戶端使用。但是html頁面變得復雜,比如有10個圖片,10個css,10個js,瀏覽器每一次請求就要建立一次連接,那么就要建立30次tcp連接,這樣就顯得低效了,為了提高效率,http1.1新設(shè)置了keep-alive字段,在Keep-Alive規(guī)定的時間內(nèi),都是用同一個tcp連接。http1.1支持長連接,http1.0規(guī)定瀏覽器與服務(wù)器只保持短暫的連接。
http是應(yīng)用層協(xié)議,是基于tcp協(xié)議連接的,tcp是面向連接,但是http協(xié)議是無連接的。有關(guān)“TCP是面向連接的,HTTP基于TCP卻是無連接的?”的問題請參考文章
http與https的區(qū)別:
http使用80端口,基于tcp(udp)協(xié)議,http直接與tcp通信;
https使用443端口,http使用了ssl加密,http先與ssl通信,然后再由ssl與tcp通信。
為什么不一直使用https呢?
因為與純文本通信相比,加密通信會消耗更多的CPU與內(nèi)存資源。如果每次通信都加密,會消耗相當多的資源,所以非敏感信息用http通信,只有包含個人信息等敏感數(shù)據(jù)才使用https加密通信。
SSL原理:
當瀏覽器向服務(wù)器請求一個安全的網(wǎng)頁,服務(wù)器會向瀏覽器發(fā)送它的證書和公鑰,瀏覽器檢查證書是不是由可以信賴的機構(gòu)頒發(fā)的,確認證書有效和此證書是此網(wǎng)站的,然后客戶端使用公鑰加密一個隨機對稱密鑰,發(fā)送給服務(wù)器,服務(wù)器用自己的私鑰解密,得到這個隨機對稱密鑰;然后客戶端和服務(wù)器就可以在這個對稱密鑰加密的方式下通信了,也就是客戶端用這個鑰匙對請求的url進行加密,服務(wù)器用這個鑰匙解密,并用這把鑰匙對將要返回給客戶端的網(wǎng)頁進行加密,發(fā)送給客戶端,客戶端再解密。參考文章。
http協(xié)議中為什么post方法比get安全?
五層模型
應(yīng)用層 #為應(yīng)用程序提高網(wǎng)絡(luò)服務(wù)
傳輸層 #建立和維護端到端的連接
網(wǎng)絡(luò)層 #ip尋址與路由選擇
數(shù)據(jù)鏈路層 #控制網(wǎng)絡(luò)層與物理層之間的通信,數(shù)據(jù)幀
物理層 #比特流傳輸
TCP的六個標志位
URG:(Urgent)緊急指針字段有效值
FIN:(Finish)表示關(guān)閉連接
ACK:(Acknowledge)表示響應(yīng)
SYN:(Synchronous)表示建立連接
PSH:(Push)表示傳輸數(shù)據(jù)
RST:(Reset)表示連接重置
ps:四次揮手不是斷開連接的唯一方式,如果主機需要盡快斷開連接,就會發(fā)送RST包。
TCP三次握手
客戶端與服務(wù)端要建立連接首先要進行tcp的三次握手過程;
- 首先客戶端發(fā)送syn包給服務(wù)端,序列號為a,告訴服務(wù)端打開某個端口,我想和你建立某個服務(wù);
- 然后服務(wù)端發(fā)送syn和ack給客戶端,序列號為b,ack=a+1,告訴客戶端同一建立連接;
- 最后客戶端發(fā)送ack確認,ack=b+1,此時雙方建立連接,可以進行通信了。
TCP為什么不能兩次握手?
1.syn
2.syn+ack
tcp是雙向通信協(xié)議,想要建立一個可靠的單向通道至少需要發(fā)送一次syn和ack。如果是兩次握手,考慮這樣的情況,當A與B建立了連接之后,此時由于網(wǎng)絡(luò)延遲的原因,A的syn包剛剛到達B,B以為A想與它建立新的連接,因此回應(yīng)syn與ack,B就會一直等待A發(fā)送數(shù)據(jù),造成B的資源浪費,卻不知道這個syn包是因為網(wǎng)絡(luò)原因遲遲未到達B,此時A與B早已建立了連接,這個syn包是無效的請求。如果有第三次的握手,A可以發(fā)送ack向B確認是否建立連接。
TCP四次揮手
客戶端和服務(wù)器斷開連接要進行TCP的四次揮手過程:
- 首先客戶端發(fā)送FIN包給服務(wù)端,告訴服務(wù)端我要和你斷開連接了;
- 然后服務(wù)端發(fā)送ACK確認斷開連接;
- 接著發(fā)送FIN包給客戶端,告訴客戶端我也要和你斷開連接;
- 最后客戶端發(fā)送ACK給服務(wù)端確認斷開連接,這樣雙方連接斷開。
TCP為什么不能三次揮手呢?
1.FIN
2.FIN+ACK
3.ACK
因為雙方通信是單向的,客戶端想和服務(wù)器斷開連接不代表服務(wù)器沒有數(shù)據(jù)傳輸給客戶端了,有這樣的情況,客戶端發(fā)送FIN包給服務(wù)端想要斷開連接,但是此時服務(wù)端正在傳輸數(shù)據(jù)給客戶端,三次揮手的話,服務(wù)器發(fā)送FIN+ACK,此時就中斷了正在傳輸?shù)臄?shù)據(jù),這是不合理的,應(yīng)該等服務(wù)端傳輸完數(shù)據(jù)之后再發(fā)送FIN包斷開連接,所以要四次揮手才合理。
四次揮手為什么有timewait
- timewait是出現(xiàn)再四次揮手最后一次客戶端發(fā)送給服務(wù)端ACK之后客戶端的狀態(tài),等于兩倍的MSL(Maximum Segment Lifetime,報文最大生存時間)在Windows下默認為4分鐘,即240秒;
- timewait的存在是為了確保服務(wù)器能接收到客戶端發(fā)送的最后一個ACK確認報文,如果服務(wù)器沒有接收到最后一個ack報文,會在兩倍msl時間內(nèi)重新發(fā)送一次FIN包請求斷開連接,然后客戶端再發(fā)一次ACK報文。
- 另外也是為了使舊的數(shù)據(jù)包在網(wǎng)絡(luò)中因過期而消失,如果沒有timewait的話,服務(wù)器發(fā)送完數(shù)據(jù)之后發(fā)送FIN,客戶端發(fā)送ACK斷開連接,如果此時有新的連接建立,使用同一個端口服務(wù),那么之前服務(wù)器傳輸?shù)臄?shù)據(jù)包就會到達客戶端,從而引起數(shù)據(jù)錯亂。
TCP與UDP的區(qū)別
- tcp是面向連接,發(fā)送數(shù)據(jù)之前需要建立連接;udp是無連接,即發(fā)送數(shù)據(jù)之前不需要建立連接;
- tcp保證數(shù)據(jù)的正確性,提供可靠的服務(wù),tcp發(fā)送的數(shù)據(jù)保證完整性,無差錯不丟失,按序達到;udp使用盡最大努力交付,不保證可靠交付,可能丟包;
- tcp面向字節(jié)流,udp面向報文;
- tcp對系統(tǒng)資源要求多,udp對系統(tǒng)資源要求更少;
- 傳輸即時信息如視頻,語音等使用udp,沒有實時傳輸需求則可以考慮使用tcp。
TCP可靠傳輸機制
- 確認機制
- 不丟包情況:ACK(n+1) = Seq(n)+Len(n)
- 數(shù)據(jù)包丟失:ACK(n+1) < Seq(n)+Len(n)
- 重傳機制
[超時重傳]
當發(fā)送方?jīng)]有接收到接收方的ACK確認時,則認為數(shù)據(jù)丟失,此時發(fā)送方依據(jù)RTO重傳超時時間來對未確認的數(shù)據(jù)包進行重傳。
1*RTO 重傳第一次
2*RTO 重傳第二次
4*RTO ...
8*RTO 重傳第三次
RTT:(Round Trip Time)往返時間
RTO:(Retransmission Timeout)重傳超時時間
RTO依據(jù)RTT推導而得(經(jīng)典算法RFC793):
更新RTT=αR + (1-α)M #M為當前測量的往返間隔;R為以前測量的往返間隔;α是一個值為0.9的平滑因子
RTO=βRTT #β推薦是2
--> RTO = 2RTT
[經(jīng)典重傳]
從服務(wù)端發(fā)送的ack號開始重傳,若服務(wù)器沒收到客戶端的序列號為1及以后的所有數(shù)據(jù)包,則發(fā)送ack=1給客戶端,客戶端將序列號為1及之后的所有數(shù)據(jù)打包,重新發(fā)送給服務(wù)器。需要重傳從1開始之后的所有數(shù)據(jù)包,效率不高。
[快速選擇性重傳]
1.發(fā)現(xiàn)有數(shù)據(jù)包丟失時,接收方會返回3個重復的ACK(tcp dup-ack),告知發(fā)送方某個序列號的數(shù)據(jù)包需要重傳。
2.發(fā)送方只需要發(fā)送丟失序列號的數(shù)據(jù)包,提高數(shù)據(jù)恢復的效率;通過tcp頭部的SACK字段來告知接收方已經(jīng)接受到了哪些序列號的數(shù)據(jù)包,請不要重傳這些數(shù)據(jù)包。
TCP擁塞控制-慢啟動、擁塞避免、快重傳、快啟動
參考文章
參考視頻
擁塞:指的是過多的數(shù)據(jù)注入到網(wǎng)絡(luò)中,路由器或者鏈路過載。當出現(xiàn)丟包情況,則可以認為是出現(xiàn)了擁塞。
擁塞窗口:cwnd
慢啟動門限:ssthresh
慢啟動算法:當cwnd < ssthresh時,cwnd=1,2,4,8指數(shù)增長。
擁塞避免:當cwnd = ssthresh時,cwnd+=1。
參考文章內(nèi)容:
一般原理:發(fā)生擁塞控制的原因:資源(帶寬、交換節(jié)點的緩存、處理機)的需求>可用資源。
作用:擁塞控制就是為了防止過多的數(shù)據(jù)注入到網(wǎng)絡(luò)中,這樣可以使網(wǎng)絡(luò)中的路由器或者鏈路不至于過載。擁塞控制要做的都有一個前提:就是網(wǎng)絡(luò)能夠承受現(xiàn)有的網(wǎng)絡(luò)負荷。
對比流量控制:擁塞控制是一個全局的過程,涉及到所有的主機、路由器、以及降低網(wǎng)絡(luò)相關(guān)的所有因素。流量控制往往指點對點通信量的控制。是端對端的問題。
擁塞窗口:發(fā)送方為一個動態(tài)變化的窗口叫做擁塞窗口,擁塞窗口的大小取決于網(wǎng)絡(luò)的擁塞程度。發(fā)送方讓自己的發(fā)送窗口=擁塞窗口,但是發(fā)送窗口不是一直等于擁塞窗口的,在網(wǎng)絡(luò)情況好的時候,擁塞窗口不斷的增加,發(fā)送方的窗口自然也隨著增加,但是接受方的接受能力有限,在發(fā)送方的窗口達到某個大小時就不在發(fā)生變化了。
發(fā)送方如果知道網(wǎng)絡(luò)擁塞了呢?發(fā)送方發(fā)送一些報文段時,如果發(fā)送方?jīng)]有在時間間隔內(nèi)收到接收方的確認報文段,則就可以人為網(wǎng)絡(luò)出現(xiàn)了擁塞。
慢啟動算法的思路:主機開發(fā)發(fā)送數(shù)據(jù)報時,如果立即將大量的數(shù)據(jù)注入到網(wǎng)絡(luò)中,可能會出現(xiàn)網(wǎng)絡(luò)的擁塞。慢啟動算法就是在主機剛開始發(fā)送數(shù)據(jù)報的時候先探測一下網(wǎng)絡(luò)的狀況,如果網(wǎng)絡(luò)狀況良好,發(fā)送方每發(fā)送一次文段都能正確的接受確認報文段。那么就從小到大的增加擁塞窗口的大小,即增加發(fā)送窗口的大小。
例子:開始發(fā)送方先設(shè)置cwnd(擁塞窗口)=1,發(fā)送第一個報文段M1,接收方接收到M1后,發(fā)送方接收到接收方的確認后,把cwnd增加到2,接著發(fā)送方發(fā)送M2、M3,發(fā)送方接收到接收方發(fā)送的確認后cwnd增加到4,慢啟動算法每經(jīng)過一個傳輸輪次(認為發(fā)送方都成功接收接收方的確認),擁塞窗口cwnd就加倍。
擁塞避免:為了防止cwnd增加過快而導致網(wǎng)絡(luò)擁塞,所以需要設(shè)置一個慢開始門限ssthresh狀態(tài)變量(我也不知道這個到底是什么,就認為他是一個擁塞控制的標識),它的用法:
1. 當cwnd < ssthresh,使用慢啟動算法,
2. 當cwnd > ssthresh,使用擁塞控制算法,停用慢啟動算法。
3. 當cwnd = ssthresh,這兩個算法都可以。
擁塞避免的思路:是讓cwnd緩慢的增加而不是加倍的增長,每經(jīng)歷過一次往返時間就使cwnd增加1,而不是加倍,這樣使cwnd緩慢的增長,比慢啟動要慢的多。
無論是慢啟動算法還是擁塞避免算法,只要判斷網(wǎng)絡(luò)出現(xiàn)擁塞,就要把慢啟動開始門限(ssthresh)設(shè)置為設(shè)置為發(fā)送窗口的一半(>=2),cwnd(擁塞窗口)設(shè)置為1,然后在使用慢啟動算法,這樣做的目的能迅速的減少主機向網(wǎng)絡(luò)中傳輸數(shù)據(jù),使發(fā)生擁塞的路由器能夠把隊列中堆積的分組處理完畢。擁塞窗口是按照線性的規(guī)律增長,比慢啟動算法擁塞窗口增長塊的多。
實例:1.TCP連接進行初始化的時候,cwnd=1,ssthresh=16。
2.在慢啟動算法開始時,cwnd的初始值是1,每次發(fā)送方收到一個ACK擁塞窗口就增加1,當ssthresh =cwnd時,就啟動擁塞控制算法,擁塞窗口按照規(guī)律增長,
3.當cwnd=24時,網(wǎng)絡(luò)出現(xiàn)超時,發(fā)送方收不到確認ACK,此時設(shè)置ssthresh=12,(二分之一cwnd),設(shè)置cwnd=1,然后開始慢啟動算法,當cwnd=ssthresh=12,慢啟動算法變?yōu)閾砣刂扑惴?,cwnd按照線性的速度進行增長。
AIMD(加法增大乘法減小)
1. 乘法減?。簾o論在慢啟動階段還是在擁塞控制階段,只要網(wǎng)絡(luò)出現(xiàn)超時,就是將cwnd置為1,ssthresh置為cwnd的一半,然后開始執(zhí)行慢啟動算法(cwnd<ssthresh)。
2. 加法增大:當網(wǎng)絡(luò)頻發(fā)出現(xiàn)超時情況時,ssthresh就下降的很快,為了減少注入到網(wǎng)絡(luò)中的分組數(shù),而加法增大是指執(zhí)行擁塞避免算法后,是擁塞窗口緩慢的增大,以防止網(wǎng)絡(luò)過早出現(xiàn)擁塞。
這兩個結(jié)合起來就是AIMD算法,是使用最廣泛的算法。擁塞避免算法不能夠完全的避免網(wǎng)絡(luò)擁塞,通過控制擁塞窗口的大小只能使網(wǎng)絡(luò)不易出現(xiàn)擁塞。
快重傳:
快重傳算法要求首先接收方收到一個失序的報文段后就立刻發(fā)出重復確認,而不要等待自己發(fā)送數(shù)據(jù)時才進行捎帶確認。接收方成功的接受了發(fā)送方發(fā)送來的M1、M2并且分別給發(fā)送了ACK,現(xiàn)在接收方?jīng)]有收到M3,而接收到了M4,顯然接收方不能確認M4,因為M4是失序的報文段。如果根據(jù)可靠性傳輸原理接收方什么都不做,但是按照快速重傳算法,在收到M4、M5等報文段的時候,不斷重復的向發(fā)送方發(fā)送M2的ACK,如果接收方一連收到三個重復的ACK,那么發(fā)送方不必等待重傳計時器到期,由于發(fā)送方盡早重傳未被確認的報文段。
快恢復:
1. 當發(fā)送發(fā)連續(xù)接收到三個確認時,就執(zhí)行乘法減小算法,把慢啟動開始門限(ssthresh)減半,但是接下來并不執(zhí)行慢開始算法。
2. 此時不執(zhí)行慢啟動算法,而是令cwnd = ssthresh = 0.5*當前cwnd, 然后執(zhí)行擁塞避免算法,使擁塞窗口緩慢增大。
路由器和交換機的區(qū)別
1.路由器是三層設(shè)備,通過路由表查詢IP,實現(xiàn)路由,路由表里包含目的網(wǎng)段,子網(wǎng)掩碼,下一跳接口;路由器是連接不同局域網(wǎng)的設(shè)備。
2.交換機是二層設(shè)備,里面存有MAC地址表,通過查詢MAC地址,找到同一局域網(wǎng)的設(shè)備。交換機是同一局域網(wǎng)的設(shè)備。
tcp syn wait
TCP握手丟包咋辦
服務(wù)器ACK和SYN包丟了,那重傳時間怎么得來的
死鎖
死鎖指的是兩個或多個進程在執(zhí)行的過程中,因為爭奪資源而相互等待的現(xiàn)象,此時系統(tǒng)處于死鎖狀態(tài),相互等待的進程成為死鎖進程。比如:線程A鎖住記錄1而等待記錄2,線程B鎖住記錄2而等待記錄1,那么AB線程將處于永遠等待的狀態(tài),此時產(chǎn)生了死鎖。所以一般要用:try-finally 語句無論是否發(fā)生異常都將執(zhí)行最后的代碼。
try{
/執(zhí)行代碼
}finally{
/把鎖打開
}
操作系統(tǒng)原理
信息通信
進程通信
進程和線程的區(qū)別
- 進程是資源分配和調(diào)度的獨立單元,線程是資源調(diào)度的基本單元;
- 同一個進程里可以包含多條線程,線程共享整個進程的資源;
- 進程結(jié)束后它所擁有的所有進程都將銷毀,而線程結(jié)束不影響同一進程的其他線程;
- 線程是輕量級的進程,它的創(chuàng)建和銷毀所需時間都比進程小很多。
例子:
打開QQ,開了一個進程;打開迅雷,開了一個進程;
使用QQ傳輸文字,開了一個線程;傳輸語音,開了一個線程。
所以打開一個軟件相等開了一個進程,在軟件運行過程里,多個任務(wù)支撐著軟件的運行,多個任務(wù)指的就是多個線程。
Mysql語句
select columns from table; #查詢數(shù)據(jù)
insert into table () values (); #插入數(shù)據(jù)
updata table set 列=?where 列=?; #修改某一行的某一列的值
delete from talbe where 列=?; #刪除某一行
order by;
group_contat()
contat_ws()
數(shù)據(jù)庫的索引
軟連接和硬連接
鏈接是一種文件復用(共享)的方式:
- 硬鏈接:ln odlfile newfile (hard link)
1.概念:多個文件共用一個inode索引節(jié)點,此inode指向一個data block,刪除其中一個文件不會對block的數(shù)據(jù)刪除。
2.應(yīng)用:對文件進行拷貝,防止誤刪文件;如果復制的文件太大,可以創(chuàng)建硬鏈接的方式,硬鏈接只需要創(chuàng)建entry即文件與inode的對應(yīng)關(guān)系,而復制則需要申請新的inode和block,浪費磁盤資源;
- 軟鏈接: ln -s oldfile newfile (符號鏈接)
1.概念:inode指向的block存放的是文件的路徑,如果刪除了源文件,則出現(xiàn)死鏈接。
2.應(yīng)用:相當于windows的快捷方式,起一個方便的名字的文件來對源文件進行管理,刪除新建的文件不會對源文件造成影響;
Linux的資源查看
useradd #創(chuàng)建用戶
cat /proc/cpuinfo #查看cpu信息
cat /proc/meminfo #查看內(nèi)存信息
如何查看所有用戶的登錄信息
last 命令:
功能說明:列出目前與過去登入系統(tǒng)的用戶相關(guān)信息。使用root登陸可查看用戶登陸歷史
[root@DB-Server ~]# su root
[root@DB-Server ~]# last -10 #查看最近10次用戶歷史操作記錄
root pts/1 :0.0 Wed Dec 18 09:54 still logged in
root pts/4 :0.0 Wed Dec 18 09:43 - 09:48 (00:04)
root pts/1 :0.0 Wed Dec 18 09:43 - 09:48 (00:05)
root pts/3 192.168.103.79 Wed Dec 18 09:41 - 12:40 (02:59)
root pts/4 :0.0 Wed Dec 18 09:28 - 09:30 (00:01)
root pts/3 :0.0 Wed Dec 18 09:27 - 09:30 (00:02)
root pts/2 192.168.103.29 Wed Dec 18 09:27 still logged in
root pts/1 :0.0 Wed Dec 18 09:27 - 09:42 (00:15)
root pts/2 :0.0 Wed Dec 18 09:23 - 09:25 (00:01)
root pts/1 :0.0 Wed Dec 18 09:22 - 09:25 (00:02)
top命令的負載均衡的值怎么算出來的
- top命令是系統(tǒng)性能監(jiān)控工具,能實時顯示系統(tǒng)中各個進程的資源占用情況。
- 系統(tǒng)負載顯示的是最近1分鐘,5分鐘,15分鐘的系統(tǒng)平均負載;load average是特定時間內(nèi)運行隊列中的平均進程數(shù)。
- 參考文章_1
- 參考文章_2
windows和linux的差別
- Linux是以開發(fā)者為中心的操作系統(tǒng),windows是以消費者為中心的操作系統(tǒng);
- Linux里面,一切皆文件,命令界面為主,圖像界面為輔,而windows是以圖形界面為主;
- Linux系統(tǒng)更安全,因為關(guān)注度低,流行性沒有windows廣,所以攻擊者為了使自己的病毒能廣泛傳播,所以更多的是針對windows系統(tǒng)的病毒,倘若linux有一天也和windows一樣廣泛使用,那么linux自然也會變得沒那么安全了;
- Linux免費,可以免費升級版本,而windows需要付費;
- linux升級到最新版本比舊版本更快,而windows相反,若xp都卡,裝win10更卡;
- Linux可以多用戶登陸
dns的配置文件是
python編譯過程(預(yù)先編譯還是?)
Python裝飾器
寫個快排
快速排序_O(nlogn)
原理:
隨機的在數(shù)組中選一個數(shù),小于等于它的數(shù),統(tǒng)一地放在這個數(shù)的左邊,大于它的數(shù)放在這個數(shù)的右邊;接下來對左右兩個部分,分別遞歸調(diào)用快速排序的過程,這樣就使得整個數(shù)組都有序了。
In [26]: def qiucksort(A):
...: if A ==[]:
...: return A
...: else:
...: key=n[0]
...: left=qiucksort([i for i in A[1:] if i <key]) #使用列表推導式,生成的依然是一個list
...: right=qiucksort([i for i in A[1:] if i >=key])
...: return left+[key]+right
In [27]: A=[1, 2, 43, 54, 2, 23, 4, 2]
In [28]: qiucksort(A)
Out[28]: [1, 2, 2, 2, 4, 23, 43, 54]
Python如何復制一個數(shù)組
【場景題】
微信轉(zhuǎn)賬時數(shù)據(jù)庫的處理過程
問TCP timewait太多是什么原因
現(xiàn)在ping百度失敗了,然后怎么做?
【軟問題】
自我介紹
崗位的理解
個人的優(yōu)勢
你是哪里的?(地區(qū))
說一下你的實習情況,遇到什么問題,又是如何解決的
騰訊業(yè)務(wù)運維崗面經(jīng)
網(wǎng)絡(luò)
為什么會出現(xiàn)擁塞和擁塞避免方法(慢啟動和乘法減?。?/h2>
- 當網(wǎng)絡(luò)中有太多數(shù)據(jù),超過了網(wǎng)絡(luò)中的路由器或者鏈路所能存儲的資源大小,這時候就出現(xiàn)了擁塞,網(wǎng)絡(luò)的傳輸性能就會下降。
- 擁塞避免方法包括慢啟動和擁塞避免,快重傳和快恢復。
重要:負載均衡題目,分層次去解決改進hash算法,五元組計算hash改為六元組計算,把鏈路狀態(tài)考慮進去
五種arp和應(yīng)用環(huán)境
ARP:(address resolution protocol)地址解析協(xié)議,用于實現(xiàn)從IP地址到MAC地址的映射
- 正向ARP:廣播出去,單播回來,加入arp表中,之后才能通信。通信之前若arp表沒有找到映射,則發(fā)送正向arp。ping命令:
success.?。。?!,第一個.就是arp請求 - 翻轉(zhuǎn)ARP:MAC到IP的映射,只要應(yīng)用于無盤工作站。
- 代理ARP:局域網(wǎng)內(nèi)部主機發(fā)起跨網(wǎng)段的ARP請求的時候,出口路由器或者網(wǎng)關(guān)就會把自身的mac地址回復該請求,這個過程就叫代理ARP。
- 免費ARP:檢測局域網(wǎng)內(nèi)IP地址沖突。源目IP都是自己。IP地址修改或者 DHCP剛獲取地址的時候,會發(fā)送免費ARP。
- 逆向ARP:存在于幀中繼網(wǎng)絡(luò)(無MAC地址),實現(xiàn)IP和DLCI地址的映射
ARP攻擊:假設(shè)有主機B請求主機A的mac地址,攻擊者截獲這個請求,將自己的mac地址回復該請求,這樣主機B發(fā)送給A的數(shù)據(jù)就會發(fā)送到攻擊者。
TCP/UDP區(qū)別
- tcp是面向連接,發(fā)送數(shù)據(jù)之前需要建立連接;udp是無連接,即發(fā)送數(shù)據(jù)之前不需要建立連接;
- tcp保證數(shù)據(jù)的正確性,提供可靠的服務(wù)(確認機制和重傳機制),tcp發(fā)送的數(shù)據(jù)保證完整性,無差錯不丟失,按序達到;udp使用盡最大努力交付,不保證可靠交付,可能丟包;
- tcp面向字節(jié)流,udp面向報文;
- tcp對系統(tǒng)資源要求多,udp對系統(tǒng)資源要求更少;
- 傳輸即時信息如視頻,語音等使用udp,沒有實時傳輸需求則可以考慮使用tcp。
vlan作用
1.在交換機上劃分vlan,同一vlan內(nèi)的主機可以直接通信,vlan間的主機不能直接通信
2.隔離廣播域,將廣播域限制在一個vlan內(nèi),節(jié)省了帶寬,提高網(wǎng)絡(luò)處理能力。
dns域名解析流程:www.qq.com
1.先查看本地host文件是否由域名和ip的映射
2.若沒有向本地dns服務(wù)器請求;
3.本地dns服務(wù)器向dns根服務(wù)器進行查詢,根dns服務(wù)器告訴本地dns服務(wù)器可以到相應(yīng)的域.com服務(wù)器上查詢;
4.本地dns服務(wù)器向域.com服務(wù)器上查詢,.com服務(wù)器告訴本地dns服務(wù)器可以到域qq.com服務(wù)器查詢;
5.本地dns服務(wù)器向域qq.com服務(wù)器上查詢,qq.com服務(wù)器告訴本地dns服務(wù)器www.qq.com主機的地址;
HTTP協(xié)議,訪問www.qq.com,DNS的時候基于什么協(xié)議和端口號,TCP頭部
1.DNS服務(wù)器間進行域傳輸?shù)臅r候用TCP 53
2.客戶端查詢DNS服務(wù)器時用 UDP 53
抓包,Linux下用什么軟件什么命令,如何抓包分析
tcpdump
數(shù)據(jù)包如何封裝,路由器如何轉(zhuǎn)發(fā)數(shù)據(jù)包
對https的了解
http+ssl
抓包分析里面的字段,畫IP頭部
數(shù)據(jù)庫
數(shù)據(jù)庫的引擎,MyISAM和InnoDB的區(qū)別,哪一個硬件使用率最高,分別是行鎖還是表鎖
sql命令(增刪查改,授權(quán))
1. insert into 表(列1,列2,列3) values (?,?,? ) #插入
2. delete from 表 where 列=?; #刪除
3. updata 表 set 列=? where 列=?; #修改
4. select * from 表; #查詢
5. grant #授權(quán)
Linux系統(tǒng)
掛載,卸載,加入新用戶
訪問根文件系統(tǒng)外的文件通過掛載來實現(xiàn)。
mount #掛載
umunt #卸載
useradd #加入新用戶
對Linux發(fā)行版本了解
Debian,F(xiàn)edora,Kali Linux,Centos,Ubuntu。
文件系統(tǒng)類型與區(qū)別
- NTFS:支持超大單個文件,更好的安全性和穩(wěn)定性。
- FAT32:是分區(qū)格式的一種,分區(qū)內(nèi)無法存放大于4GB的單個文件
查看系統(tǒng)資源占用情況
top
查看cpu負載情況
1. top命令的load average可以知道cpu的負載情況
2. uptime
針對cpu負載情況設(shè)計合適的算法來做監(jiān)控
查看磁盤的IO負載
iostat
查看硬盤使用率的命令
- 外部存儲器(斷電里面的信息還在):磁盤=硬盤+軟盤
- 內(nèi)部存儲器(斷電里面的信息就沒有了):內(nèi)存
- 查看磁盤使用率:df -h
- 查看硬盤分區(qū):fdick -l
查看文件夾大小的命令
du -sh file
查看線程的命令
1.ps
2.top
查看網(wǎng)絡(luò)連接數(shù)狀態(tài)的命令,netstat,寫出netstat顯示的每一列內(nèi)容
Active Internet connections (w/o servers)
#協(xié)議 接收隊列 發(fā)送隊列 本地地址 目的地址 狀態(tài)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 2 210.34.6.89:telnet 210.34.6.96:2873 ESTABLISHED
tcp 296 0 210.34.6.89:1165 210.34.6.84:netbios-ssn ESTABLISHED
tcp 0 0 localhost.localdom:9001 localhost.localdom:1162 ESTABLISHED
tcp 0 0 localhost.localdom:1162 localhost.localdom:9001 ESTABLISHED
tcp 0 80 210.34.6.89:1161 210.34.6.10:netbios-ssn CLOSE
Active UNIX domain sockets (w/o servers)
Proto RefCnt Flags Type State I-Node Path
unix 1 [ ] STREAM CONNECTED 16178 @000000dd
unix 1 [ ] STREAM CONNECTED 16176 @000000dc
unix 9 [ ] DGRAM 5292 /dev/log
unix 1 [ ] STREAM CONNECTED 16182 @000000df
Apache的日志里面的格式,寫腳本抓取耗時長的那一行
安全
數(shù)字簽名與數(shù)字證書
- 數(shù)字簽名=私鑰加密(hash(信件)),保證消息完整性,不可抵賴性,防篡改冒充偽造。
- 數(shù)字證書=CA私鑰加密(客戶公鑰+其他信息)
對滲透了解
對稱加密與非對稱加密,各自優(yōu)缺點,應(yīng)用場景
編程
C語言數(shù)組和鏈表的區(qū)別
- 數(shù)組是一組具有相同類型變量的集合,里面存放的變量稱為數(shù)組的元素。
1.每個元素在內(nèi)存中是連續(xù)存放的,如果需要插入一個元素,則需要移動后面的大量元素。
2.每個元素都有一個編號,叫做下標,通過下標可以快速找到某個元素。 - 鏈表在內(nèi)存中不是順序存儲的,鏈表由多個節(jié)點連接而成,每個節(jié)點由數(shù)據(jù)域和指針域,指針域存放指向下一個節(jié)點的地址。
1.增加或者刪除元素只需要修改指針就可以了。
2.想要尋找某個元素,需要從第一個元素開始,遍歷鏈表。
總結(jié):需要快速訪問數(shù)據(jù),很少插入或刪除數(shù)據(jù),則使用數(shù)組;若經(jīng)常插入或刪除數(shù)據(jù),則使用鏈表。