網(wǎng)絡相關
1.描述一下網(wǎng)絡的三次握手四次揮手,為什么要這樣做寞焙?
-
三次握手:
1、客戶端調(diào)用
connect()
發(fā)起請求,請求報文SYN = 1
,seq = x
發(fā)送給服務器, 客戶端此時為SYN_SENT
狀態(tài),等待服務器確認;2互婿、服務器收到
SYN = 1
,知道客戶端要請求連接,ack = x + 1
,ACK = 1
,SYN = 1
,seq = y
發(fā)送給客戶端,服務器是SYN_RCVD
狀態(tài);3捣郊、客戶端收到
ack = x + 1
,然后把ack = y + 1
,ACK = 1
,發(fā)送給服務器, 最后服務器確認ack = y+ 1
,然后建立成功,兩方進入ESTABLISH
狀態(tài).
-
四次揮手:
1、客戶端發(fā)送一個結束
FIN = 1
, 用來主動關閉和服務器的數(shù)據(jù)傳輸,停止發(fā)送數(shù)據(jù),報文首部:FIN = 1
,seq = u
,隨后客戶端進入終止等待狀態(tài)1,FIN_WAIT_1
;2慈参、服務端收到這個
FIN
,發(fā)出確認報文ACK = 1
,確認收到的序號是收到的序號+1,即ack = u + 1
,且?guī)献约旱男蛄刑?seq = v
,和SYN
一樣,一個FIN
將占用一個序號;如果服務器要發(fā)送數(shù)據(jù),客戶端依然要接收,該狀態(tài)會維持一段時間,服務端會進入關閉等待狀態(tài),CLOSE_WAIT
,客戶端收到服務器的確認請求后,進入終止等待2狀態(tài)FIN_WAIT_2
,等待服務器發(fā)送鏈接釋放報文,3呛牲、服務器向客戶端發(fā)送鏈接釋放報文,
FIN = 1
,ack = u + 1
,此時服務端還處于半關閉狀態(tài),服務器可能還會發(fā)送一些數(shù)據(jù),此時序列號為seq = w
,如此,服務器進入最后確認狀態(tài),LAST_ACK
,等待客戶端的確認.4.客戶端收到服務器的鏈接釋放報文后,回發(fā)確認,
ACK = 1
,ack = w + 1
,序列號是seq = u +1
,此時客戶端進入時間等待狀態(tài)TIME_WAIT
,此時TCP
連接還沒有釋放,必須經(jīng)過最長報文段壽命的時間后,才進入CLOSED
狀態(tài),MSL
:最長報文段壽命,一般為2分鐘,TCP
連接釋放時,主動方必須經(jīng)過2MSL
后才進入CLOSED
狀態(tài),因此主動方關閉比較晚.
2.網(wǎng)絡的OSI
七層模型,并對應說說除了物理層外的各層功能驮配,并說說各層中有什么協(xié)議? 還有 TCP/IP
四層模型, 各層的協(xié)議?
OSI
七層模型:
應用層
運行訪問OSI環(huán)境的手段,傳輸單位為APDU
,主要包括的協(xié)議為FTP
娘扩、HTTP
、DNS
壮锻、SMTP
表示層
對數(shù)據(jù)進行翻譯琐旁、加密和壓縮、傳輸單位為PPDU
, 主要包括的協(xié)議為JPEG
躯保、ASII
會話層
建立旋膳、管理和終止會話,傳輸單位為SPDU
,主要包括的協(xié)議為RPC
、NFS
傳輸層
提供端到端的可靠報文傳遞和錯誤恢復,傳輸單位為報文,主要包括的協(xié)議為TCP
途事、UDP
網(wǎng)絡層
負責將數(shù)據(jù)包從源到宿的傳遞和網(wǎng)際互聯(lián),傳輸單位是包,主要協(xié)議是IP
验懊、ARP
、ICMP
數(shù)據(jù)鏈路層
將比特組裝成幀和點到點的傳遞,傳輸單位是幀,主要協(xié)議是MAC
尸变、LAN
义图、PPP
-
物理層
通過媒介傳輸比特,單位是bit,主要協(xié)議是IEEE802.3
、CLOCK
召烂、RJ45
TCP/IP
四層模型:應用層
是用來給用戶提供服務的,包含了各種應用服務協(xié)議:FTP
,HTTP
和DNS
;封裝成http
數(shù)據(jù);傳輸層
是用來提供兩臺計算機之間的數(shù)據(jù)傳輸;包含TCP
和UDP
;給http
數(shù)據(jù)打上tcp
的首部;網(wǎng)絡層
是用來處理網(wǎng)絡中傳輸?shù)臄?shù)據(jù)包;與對方計算機之間進行多臺計算機或網(wǎng)絡設備進行傳輸時,網(wǎng)絡層就是在眾多的選項中選擇一條傳輸路線
.再打上一層IP
首部,數(shù)據(jù)鏈路層
用來處理連接網(wǎng)絡的硬件
部分,如光纖碱工、網(wǎng)卡、驅(qū)動、操作系統(tǒng),再打上以太網(wǎng)首部
3.
HTTPS
和HTTP
之間的區(qū)別怕篷,為什么要使用HTTPS
历筝,HTTPS
的實現(xiàn)原理(這三個是層層遞進的問的,所以不要只知道HTTPS
比較安全廊谓,使用了什么什么非對稱加密和對稱加密算法...最好是整個流程都去了解一下梳猪,如何獲取公鑰,數(shù)字證書有什么用蒸痹,雖然工作中不是很重要春弥,但是面試大家都是背八股文長大的诈茧,那不是更得知道的多才能顯得你與眾不同嗎)區(qū)別:
底層:
HTTP
底層是通過建立socket
通道實現(xiàn)數(shù)據(jù)傳輸?shù)?是基于TCP
的安全可靠的協(xié)議;HTTPS
是在HTTP
的基礎上加上安全套接字層SSL
協(xié)議,構建的可進行加密傳輸
拯腮、身份認證
的協(xié)議;數(shù)據(jù)傳輸:
HTTP
是以明文發(fā)送內(nèi)容,不適合傳輸敏感信息;HTTPS
是依靠證書驗證服務器的身份,實現(xiàn)通信加密;連接方式: 兩者使用完全不同的鏈接方式,
HTTP
端口是80
;HTTPS
端口使用443
.響應速度:
HTTP
要比HTTPS
響應速度快,首先都要先經(jīng)過TCP
三次握手,CS之間交換三個包,而HTTPS
還要加上SSL握手需要的九個包,一共是12個包.
HTTPS
實現(xiàn)原理:客戶端發(fā)出請求
HTTPS
與服務端建立SSL
鏈接,然后服務端返回一個公鑰證書,客戶端產(chǎn)生一個隨機對稱密鑰;
使用公鑰加密對稱密鑰;
發(fā)送加密后的對稱密鑰,服務器給個回應;
使用對稱密鑰進行加密通信.
4.
ARP
協(xié)議如何工作(這個也比較簡單,但是后面會擴展問一些TCP
须板,UDP
的問題)榛鼎,會問某些場景是否使用TCP或者UDP逃呼,后面還轉(zhuǎn)進了http1.0和1.1的長連接,感覺這個也是一個考點借帘,記得不是很深刻了5.進程和線程的區(qū)別蜘渣,為什么要有線程,線程擁有什么獨立的資源肺然, 多線程如何安全的訪問進程中的資源蔫缸,講一下各種鎖(這個也是八股文,操作系統(tǒng)必問际起,懂得都懂)
進程就是系統(tǒng)中正在運行的一個應用程序,可以理解為一個app;
線程是程序執(zhí)行的最小單元,是進城中的一個實體,進程就是一系列的線程執(zhí)行單元組成的
一個進程中可以有多個線程,但至少得有一個線程
多核CPU中,多個線程一起執(zhí)行可以提高程序的執(zhí)行效率
自旋鎖:
互斥鎖:
6.操作系統(tǒng)中的虛擬內(nèi)存是什么拾碌,講一講
頁面置換算法
,是否有了解過三級緩存機制(也是遞進的問的街望!三級緩存機制是APP開發(fā)常用的也會考查)7.最后有一道算法題校翔,leetcode 59,螺旋矩陣
定義上下左右四個邊界
內(nèi)縮遍歷
8.IP地址和MAC地址的區(qū)別?
MAC地址
是物理層
和數(shù)據(jù)鏈路層
使用的地址,用來定義網(wǎng)絡設備的位置,IP地址
是網(wǎng)絡層
和以上各層使用的地址;IP地址
是放在IP數(shù)據(jù)報的首部,而MAC地址
是放在MAC幀
的首部.
9.請介紹一個操作系統(tǒng)中的中斷
中斷是指CPU對系統(tǒng)發(fā)生的某個事件做出的一種反應,CPU
暫停正在執(zhí)行
的程序,保存現(xiàn)場
后自動去執(zhí)行相應的處理程序,處理完該事件后再返回中斷處,繼續(xù)執(zhí)行原來的程序.中斷一般分為三類:一種是由CPU外部引起的,如I/O中斷,時鐘中斷,一種是來自CPU內(nèi)部事件或程序執(zhí)行中引起的中斷,例如(程序非法操作,地址越界,浮點溢出), 最后一種是在程序中使用了系統(tǒng)調(diào)用引起的.
中斷處理一般分為中斷響應和中斷處理兩個步驟,中斷響應由硬件實施,中斷處理主要由軟件實施.