「計(jì)算機(jī)網(wǎng)絡(luò)」奪命連環(huán)12問(wèn)

談一談你對(duì)TCP/IP四層模型,OSI七層模型的理解?

數(shù)據(jù)鏈路層,也有稱(chēng)作網(wǎng)絡(luò)訪問(wèn)層、網(wǎng)絡(luò)接口層。他包含了OSI模型的物理層和數(shù)據(jù)鏈路層,把電腦連接起來(lái)。 網(wǎng)絡(luò)層,也叫做IP層,處理IP數(shù)據(jù)包的傳輸、路由,建立主機(jī)間的通信。 傳輸層,就是為兩臺(tái)主機(jī)設(shè)備提供端到端的通信。 應(yīng)用層,包含OSI的會(huì)話(huà)層、表示層和應(yīng)用層,提供了一些常用的協(xié)議規(guī)范,比如FTP、SMPT、HTTP等。
說(shuō)說(shuō)TCP 3次握手的過(guò)程?
client端建立連接,發(fā)送一個(gè)SYN同步包,發(fā)送之后狀態(tài)變成SYN_SENT server端收到SYN之后,同意建立連接,返回一個(gè)ACK響應(yīng),同時(shí)也會(huì)給client發(fā)送一個(gè)SYN包,發(fā)送完成之后狀態(tài)變?yōu)镾YN_RCVD client端收到server的ACK之后,狀態(tài)變?yōu)镋STABLISHED,返回ACK給server端。server收到之后狀態(tài)也變?yōu)镋STABLISHED,連接建立完成。

為什么要3次?2次,4次不行嗎?
那么四次揮手的過(guò)程呢?
client端向server發(fā)送FIN包,進(jìn)入FIN_WAIT_1狀態(tài),這代表client端已經(jīng)沒(méi)有數(shù)據(jù)要發(fā)送了 server端收到之后,返回一個(gè)ACK,進(jìn)入CLOSE_WAIT等待關(guān)閉的狀態(tài),因?yàn)閟erver端可能還有沒(méi)有發(fā)送完成的數(shù)據(jù) 等到server端數(shù)據(jù)都發(fā)送完畢之后,server端就向client發(fā)送FIN,進(jìn)入LAST_ACK狀態(tài) client收到ACK之后,進(jìn)入TIME_WAIT的狀態(tài),同時(shí)回復(fù)ACK,server收到之后直接進(jìn)入CLOSED狀態(tài),連接關(guān)閉。但是client要等待2MSL(報(bào)文最大生存時(shí)間)的時(shí)間,才會(huì)進(jìn)入CLOSED狀態(tài)。

為什么要等待2MSL的時(shí)間才關(guān)閉?
為了保證連接的可靠關(guān)閉。如果server沒(méi)有收到最后一個(gè)ACK,那么就會(huì)重發(fā)FIN。 為了避免端口重用帶來(lái)的數(shù)據(jù)混淆。如果client直接進(jìn)入CLOSED狀態(tài),又用相同端口號(hào)向server建立一個(gè)連接,上一次連接的部分?jǐn)?shù)據(jù)在網(wǎng)絡(luò)中延遲到達(dá)server,數(shù)據(jù)就可能發(fā)生混淆了。
TCP怎么保證傳輸過(guò)程的可靠性?
說(shuō)下瀏覽器請(qǐng)求一個(gè)網(wǎng)址的過(guò)程?
首先通過(guò)DNS服務(wù)器把域名解析成IP地址,通過(guò)IP和子網(wǎng)掩碼判斷是否屬于同一個(gè)子網(wǎng) 構(gòu)造應(yīng)用層請(qǐng)求http報(bào)文,傳輸層添加TCP/UDP頭部,網(wǎng)絡(luò)層添加IP頭部,數(shù)據(jù)鏈路層添加以太網(wǎng)協(xié)議頭部 數(shù)據(jù)經(jīng)過(guò)路由器、交換機(jī)轉(zhuǎn)發(fā),最終達(dá)到目標(biāo)服務(wù)器,目標(biāo)服務(wù)器同樣解析數(shù)據(jù),最終拿到http報(bào)文,按照對(duì)應(yīng)的程序的邏輯響應(yīng)回去。

知道HTTPS的工作原理嗎?
用戶(hù)通過(guò)瀏覽器請(qǐng)求https網(wǎng)站,服務(wù)器收到請(qǐng)求,選擇瀏覽器支持的加密和hash算法,同時(shí)返回?cái)?shù)字證書(shū)給瀏覽器,包含頒發(fā)機(jī)構(gòu)、網(wǎng)址、公鑰、證書(shū)有效期等信息。 瀏覽器對(duì)證書(shū)的內(nèi)容進(jìn)行校驗(yàn),如果有問(wèn)題,則會(huì)有一個(gè)提示警告。否則,就生成一個(gè)隨機(jī)數(shù)X,同時(shí)使用證書(shū)中的公鑰進(jìn)行加密,并且發(fā)送給服務(wù)器。 服務(wù)器收到之后,使用私鑰解密,得到隨機(jī)數(shù)X,然后使用X對(duì)網(wǎng)頁(yè)內(nèi)容進(jìn)行加密,返回給瀏覽器 瀏覽器則使用X和之前約定的加密算法進(jìn)行解密,得到最終的網(wǎng)頁(yè)內(nèi)容

負(fù)載均衡有哪些實(shí)現(xiàn)方式?
說(shuō)說(shuō)BIO/NIO/AIO的區(qū)別?


那么你怎么理解同步和阻塞?
發(fā)起IO請(qǐng)求 實(shí)際的IO讀寫(xiě)操作
談一下你對(duì)Reactor模型的理解?
Reactor:負(fù)責(zé)查詢(xún)、響應(yīng)IO事件,當(dāng)檢測(cè)到IO事件時(shí),分發(fā)給Handlers處理。 Handler:與IO事件綁定,負(fù)責(zé)IO事件的處理。



好文推薦

靈隱寺招聘:沒(méi)有KPI,佛系上班……

JetBrains又出編程神器!

面試 Google, 我失敗了 | Google 面經(jīng)分享
一鍵三連「分享」、「點(diǎn)贊」和「在看」
技術(shù)干貨與你天天見(jiàn)~
評(píng)論
圖片
表情

