1、進(jìn)程間通信的方式
1)管道:用于具有親緣關(guān)系的父子進(jìn)程間或兄弟進(jìn)程之間的通信
2)共享內(nèi)存:使得多個(gè)進(jìn)程可以訪問同一塊內(nèi)存空間,不同進(jìn)程可以及時(shí)看到對方進(jìn)程中對共享內(nèi)存中數(shù)據(jù)的更新
3)信號(hào):用來通知接受進(jìn)程某個(gè)事件已經(jīng)發(fā)生
4)信號(hào)量:是一個(gè)計(jì)數(shù)器
5)socket:用于客戶端和服務(wù)器端的進(jìn)程通信
6)消息隊(duì)列
2、在瀏覽器中敲入網(wǎng)址后,到網(wǎng)頁顯示,中間發(fā)生了什么過程
1)瀏覽器的第一步工作是解析URL,從而生成發(fā)送給Web服務(wù)器的請求信息。
2)DNS域名解析
3)TCP連接
4)HTPP請求
5)服務(wù)器響應(yīng)請求,返回響應(yīng)報(bào)文
6)瀏覽器根據(jù)返回內(nèi)容渲染頁面
3、三次握手以及為什么需要三次握手

三次握手
為什么需要三次?
- 阻止重復(fù)歷史連接的初始化(主要原因)
- 同步雙方的初始序列號(hào)
- 避免資源浪費(fèi)
不使用兩次握手和四次握手的原因
- 兩次握手:無法防止歷史連接的建立,會(huì)造成雙方資源的浪費(fèi),也無法可靠的同步雙方序列號(hào);
- 四次握手:三次握手就已經(jīng)理論上建立可靠的連接了,所以不需要使用更多的通信次數(shù)。
4、四次揮手以及為什么需要四次揮手

四次揮手
為什么需要四次揮手
回顧下四次揮手雙方發(fā)
FIN包的過程,就能理解為什么需要四次了
- 關(guān)閉連接時(shí),客戶端向服務(wù)端發(fā)送
FIN時(shí),僅僅表示客戶端不再發(fā)送數(shù)據(jù)了但是還能接收數(shù)據(jù)。 - 服務(wù)器端收到客戶端的
FIN報(bào)文時(shí),先回一個(gè)ACK應(yīng)答報(bào)文,而服務(wù)端可能還有數(shù)據(jù)需要處理和發(fā)送,等服務(wù)端不再發(fā)送數(shù)據(jù)時(shí),才會(huì)發(fā)送FIN報(bào)文給客戶端來表示同意現(xiàn)在關(guān)閉連接。 - 從上面過程可知,服務(wù)端通常需要等待完成數(shù)據(jù)的發(fā)送和處理,所以服務(wù)端的
ACK和FIN一般都會(huì)分開發(fā)送,從而比三次握手導(dǎo)致多了一次。
為什么TIME_WAIT等待的時(shí)間是2MSL
MSL,Maximum Segment Lifetime英文的縮寫,報(bào)文最大生存時(shí)間,它是任何報(bào)文在網(wǎng)絡(luò)上存在的最長時(shí)間,超過這個(gè)時(shí)間將被丟棄。
- 保證客戶端發(fā)送的最后一個(gè)
ACK報(bào)文能夠到達(dá)服務(wù)器,因?yàn)檫@個(gè)ACK報(bào)文可能會(huì)丟失。 - 如果被動(dòng)關(guān)閉方?jīng)]有收到斷開連接的最后的
ACK報(bào)文,就會(huì)觸發(fā)超時(shí)重發(fā)Fin報(bào)文,另一方接收到FIN后,會(huì)重發(fā)ACK給被動(dòng)關(guān)閉方,一來一去正好 2 個(gè) MSL。
5、經(jīng)典排序算法的比較

經(jīng)典排序算法比較